如何在Excel Power Query中将参数化值传递给OData feed

时间:2017-01-10 07:36:05

标签: excel odata parameter-passing powerquery

我创建了一个需要过滤器的OData服务。

此OData服务可从Micorsoft Excel - Power Query中的OData Feed选项访问。

OData网址 - :

  

http://176.0.11.79:8000/sap/opu/odata/sap/Z_SALES_REPORT_TUBES_SRV/et_sales_report_tubesSet?$滤波器=   Spmon eq'20161101'

现在我需要传递Spmon'20161101'的过滤值作为参数。此值显示在同一个Excel中的不同工作表中。

如何更改Query以允许从工作表传递数据,而不是每次都更改URL。

2 个答案:

答案 0 :(得分:3)

Power Query将为OData折叠过滤器,因此您可以使用自动过滤器或通过添加新步骤并通过公式栏添加以下公式来自行添加过滤器步骤:

= Table.SelectRows(PreviousStep, each [Spmon] = '20161101')

如果它来自您在查询SheetQuery中加载的另一个工作表,它将如下所示:

= Table.SelectRows(PreviousStep, each [Spmon] = SheetQuery{row_index}[column_name])

您可能需要设置OData源和工作表的隐私级别,或者您需要通过“选项”对话框禁用“隐私级别”。

答案 1 :(得分:0)

我找到了另一种在Power Query中传递过滤器的方法(不是直接从任何工作表中传递)

这是通过在Query中添加一个源并在OData Feed中将其用作变量来实现的。

    Spmon = "20161001"   , 
    Source = OData.Feed("http://176.0.11.79:8000/sap/opu/odata/sap/Z_SALES_REPORT_TUBES_SRV/
et_sales_report_tubesSet?$filter= Spmon eq '" & Spmon & "'")

此变量(Spmon)可以直接在Advance Editor(Power Query)中直接编辑。