提问人:cariberttttt 提问时间:11/3/2023 最后编辑:Davide Baccicariberttttt 更新时间:11/4/2023 访问量:49
具有多个命中的 SWITCH 函数 - Power BI DAX
SWITCH Function with multiple hits - Power BI DAX
问:
一个月前,我最近开始使用 Power BI。我目前正在尝试使用 SWITCH 对一列文本进行排序。我遇到的主要问题是,当一行有多个单词满足我编码的案例的标准时,输出列只包含满足的第一个案例,而不是满足所有案例。
这是我目前拥有的代码:
SWITCH Hits Test =
SWITCH(
TRUE(),
CONTAINSSTRING('SWITCH Test'[Raw Data], "cat"), "cat",
CONTAINSSTRING('SWITCH Test'[Raw Data], "dog"), "dog",
CONTAINSSTRING('SWITCH Test'[Raw Data], "fox"), "fox",
"Not Target")
这是我的表格的样子:
原始数据 | SWITCH 命中测试 | 理想的结果 |
---|---|---|
狗猫 | 猫 | 猫, 狗 |
狗狗 | 狗 | 狗 |
狗狐狸 | 狗 | 狗, 狐狸 |
猫狗 | 猫 | 猫, 狗 |
猫猫 | 猫 | 猫 |
猫狐狸 | 猫 | 猫, 狐狸 |
测试 | 非目标 | 非目标 |
我想出的解决方案是为每个 SWITCH 案例制作单独的列,但我想知道在执行此操作之前是否可以使用另一种解决方法/潜在函数,因为对于较大的 SWITCH 函数来说,这似乎很耗时。任何帮助将不胜感激。
答:
2赞
Davide Bacci
11/4/2023
#1
添加自定义列:
let
a={"cat", "dog", "fox"},
b = List.Distinct( List.RemoveNulls( Text.Split( Text.Trim( [Raw Data]), " "))),
c = List.Intersect({a,b}),
d = Text.Combine(c, ", ")
in if List.IsEmpty(c) then "Not Target" else d
完整代码
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSslPV0hOLFFQ0lFCUDoKQGGlWB2INAgDxREUXCYtvwJVRgckBJYGGQYVx2YuSAzDWrgM1FxkjTBzS1KLwYJ++SUKIYlF6aloPKXYWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Raw Data" = _t, #"SWITCH Hits Test" = _t, #"Ideal Result" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Raw Data", type text}, {"SWITCH Hits Test", type text}, {"Ideal Result", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each let
a={"cat", "dog", "fox"},
b = List.Distinct( List.RemoveNulls( Text.Split( Text.Trim( [Raw Data]), " "))),
c = List.Intersect({a,b}),
d = Text.Combine(c, ", ")
in if List.IsEmpty(c) then "Not Target" else d)
in
#"Added Custom"
评论
0赞
cariberttttt
11/4/2023
非常感谢,效果很好!我也想知道:假设我想使用主题对文本进行分类(例如:如果字符串包含“cat”和“dog”,则返回“domestic pet”);这是我可以调整您上面的解决方案以包括任何机会的东西吗?或者我必须为它做一个单独的专栏。
0赞
Davide Bacci
11/4/2023
不确定我是否理解。提出一个包含样本数据和预期结果的新问题,我们可以看看。
评论