如何在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)中编辑。