![Power Query 条件动态过滤器](https://linux22.com/image/1466239/Power%20Query%20%E6%9D%A1%E4%BB%B6%E5%8A%A8%E6%80%81%E8%BF%87%E6%BB%A4%E5%99%A8.png)
我有一个 Power Query 查询,它使用辅助函数查询从工作簿中的表中提取参数。例如,要按日期范围进行筛选,我使用
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each [EventDatetime] >= fnGetParameterValue("EventStartDate") and [EventDatetime] <= fnGetParameterValue("EventEndDate"))
我想要做的是仅当 fnGetParameterValue("AccountNumber") 返回的值不是空字符串时才进行过滤。
我尝试在日期过滤步骤之后插入此步骤:
#"Filtered Rows1" = if fnGetParameterValue("AccountNumber") = "" then #"Filtered Rows" else Table.SelectRows(#"Filtered Rows", each [AccountNumber] = fnGetParameterValue("AccountNumber"))
我似乎没有遇到语法错误,但我没有得到任何数据。
如何有条件地过滤数据?
答案1
我将使用您的函数(例如 [AccountNumber Filter] )并使用您的 if 逻辑添加一个中间步骤来添加一列,如下所示:
if fnGetParameterValue("AccountNumber") = "" then [AccountNumber] else fnGetParameterValue("AccountNumber")
然后我将在过滤步骤中使用该新列,例如
[AccountNumber] = [AccountNumber Filter]
中间步骤也将更加清晰,以便于审查/测试等。