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

我创build了一个需要filter的OData服务。

此OData服务将通过Micorsoft Excel – Power Query中的OData Feed选项进行访问。

ODataurl – :

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

现在我需要传递Spmon'20161101'的过滤值作为参数。 该值存在于同一个excel的另一个表中。

如何更改查询以允许从表单传递数据,而不是每次都更改URL。

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

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

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

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

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

我find了一个在Power Query中传递filter的替代方法(不是直接从任何表格)

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

  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 & "'") 

这个variables(Spmon)可以直接在高级编辑器(Power Query)中编辑。