多次点击的SWITCH功能 - Power Query

问题描述 投票:0回答:1

我一个月前开始使用 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 函数来说似乎很耗时。任何帮助将不胜感激。

excel powerbi dax powerquery m
1个回答
2
投票

添加自定义列:

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"
© www.soinside.com 2019 - 2024. All rights reserved.