如何根据Power Query中Power BI参数中的逗号分隔值列表删除行?

我有一个带有标题列的数据列表(在许多其他列中),并且我有一个Power BI参数,该参数的值例如为“ a,b,c”。我想做的是遍历参数的值,并删除所有以这些字符开头的行。

例如:

Title
a
b
c
d

应该成为

Title
d

此逗号分隔的列表可以有一个值,也可以有20个值。我知道可以使用

将参数转换为列表
parameterList = Text.Split(<parameter-name>,",")

但是我不确定如何继续使用它进行过滤。对于一个值,我只会使用

#"Filtered Rows" = Table.SelectRows(#"Table",each Text.StartsWith([key],<value-to-filter-on>))

但这只允许一个值。

编辑:我最初的问题可能措辞不佳。 parameterList中用逗号分隔的值可以是任意数量的字符(例如:a,abcd,foo,bar),我想看看[key]中的值是否以该字符串开头。

q474136201 回答:如何根据Power Query中Power BI参数中的逗号分隔值列表删除行?

尝试使用List.Contains检查起始字符是否在参数列表中。

each List.Contains(parameterList,Text.Start([key],1)

编辑::由于您已更改要求,请尝试以下操作:

Table.SelectRows(
    #"Table",(C) => not List.AnyTrue(
                   List.Transform(
                       parameterList,each Text.StartsWith(C[key],_)
                    )
                )
 )

对于每一行,这将通过检查当前parameterList是否以列表中的每个文本字符串开头来将true/false转换为key值列表。如果为true,则List.AnyTrue返回true,我们选择不选择该行。

,

由于要过滤掉参数中的所有值,因此可以使用类似以下内容的

= Table.SelectRows(#"Changed Type",each List.Contains(Parameter1,Text.Start([Title],1))=false)

另一种方法是在表中创建一个自定义列,该列的标题为第一个字符:

= Table.AddColumn(#"Changed Type","FirstChar",each Text.Start([Title],1))

,然后在过滤步骤中使用此字段:

= Table.SelectRows(#"Added Custom",[FirstChar])=false)

我用一个小的样本集对此进行了测试,它似乎运行良好。您可以同时测试两者,看看是否对性能有所帮助。如果仍然遇到性能问题,则可以共享pbix文件可能会更容易。

,

这似乎工作得很好:

= List.Select(Source[Title],each Text.Contains(Parameter1,Text.Start(_,1))=false)

用表名替换 Source ,用参数名替换 Parameter1

本文链接:https://www.f2er.com/2750981.html

大家都在问