Power Pivot查询中的动态参数

3
我们正在使用Excel 2013和Power Pivot构建模块,其中包含多个数据透视表,这些表都从同一个Power Pivot表中获取数据,该表查询我们的T-SQL数据仓库。
为了简化和完全自动化此模块,我们希望创建一个文本字段,允许用户输入一个值(例如客户ID#),然后将该值用作Power Pivot查询中的参数。
是否可能在Power Pivot查询中传递参数,该参数存储在查询之外的文本字段中?
2个回答

3
您还可以将切片器或下拉框选择传递到单元格中。 为该单元格定义一个名称。 将该单元格(如果有多个文本变量要使用,则包括其他单元格)放入表格中。 为方便起见,我通常将此表格命名为“参数”。 然后,您可以“读取”参数并将它们放入查询语句中。
在查询顶部的代码中,读取这些参数的代码可能如下所示... let Parameter_Table = Excel.CurrentWorkbook(){[Name="Parameter"]}[Content], XXX_Value = Parameter_Table{1}[Value], YYY_Value = Parameter_Table{2}[Value], ZZZ_Value = Parameter_Table{3}[Value],
然后是您的查询,其中替换“BigDataCo”的地方改为使用XXX_Value。
每次选择不同的客户时刷新链接确实是一种非常缓慢的方法,但这对我有效。

我会尝试一下。谢谢! - cryocaustik

2

虽然这在较小的数据集上可以工作,但当数据集增长到几百万条记录时就行不通了。当我们的数据被过滤时,只有几百条记录,但未经过滤时,在Excel中变得难以管理(超过300万条记录)。我们还想删除与特定模块无关的任何信息(即另一个用户的数据)。 - cryocaustik
Power Pivot可以处理数百万条记录而不会出现问题。我曾经制作过非常复杂的模型,其中主要事实表中有40M+行,但仍然具有高性能。话虽如此,如果您需要实施安全性,则将参数传递给源查询是错误的方法。您应该在源数据库中实施安全性,或者使用SSAS Tabular模型而不是Power Pivot,因为您也可以在该程序中实现行级安全性。 - greggyb
你关于大小限制的说法是正确的,我讲错了;我的意思是我们不想把本应该几MB的文件变成超过1GB的文件。 我们可以无休止地辩论有其他方法来做某些事情,但我的问题是是否可能使用PoverPivot或PowerQuery来实现;如果不行,那很好,如果可以,那就更好了!:D - cryocaustik
请查看我帖子中的第二个链接 - 您可以根据工作簿中的单元格值以编程方式传递参数到源查询。 - greggyb
谢谢!我也感谢您对其他方法的建议,只是在这种情况下,我必须按照特定的方式进行操作。 - cryocaustik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接