我需要根据条件表过滤我的订单表。问题是我的条件表可以有任意数量的行。 我的表格格式如下 -
条件集 | 收款人 | 托运人 | 接收器 |
---|---|---|---|
C1 | B1, B2 | ||
C2 | S1, S3 | R3 | |
C3 | B3, B4 | S3, S4 | R2,R3,R4 |
订单号 | 收款人 | 托运人 | 接收器 |
---|---|---|---|
1 | B4 | S4 | R4 |
2 | B2 | S3 | R2 |
3 | B2 | S3 | R1 |
4 | B4 | S1 | R3 |
5 | B3 | S4 | R1 |
6 | B5 | S3 | R3 |
7 | B1 | S3 | R5 |
8 | B2 | S3 | R6 |
9 | B4 | S5 | R6 |
10 | B3 | S3 | R2 |
需要按以下方式申请条件-
对于我的上表,我的结果是 -
在这种情况下等效的 SQL 是 -
SELECT OrderNo FROM Orders WHERE
(BillTo IN (B1, B2)) OR --C1
(Shipper IN (S1, S3) AND Receiver IN (R3)) OR --C2
(BillTo IN (B3, B4) AND Shipper IN (S3, S4) AND Receiver IN (R2, R3, R4)) --C3
我需要能够遍历条件表,因为条件集的数量可以动态变化。
有人可以帮助在 Power BI 中实施吗?
用 PowerBi 模型试过,没用。 我期待一个关于如何在 PowerBi 中实现这个的解决方案
如果您要为 Table1 使用 M 代码,这会添加一列以匹配 Table2 中的行
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Replaced Value" = Table.ReplaceValue(Source,", ",",",Replacer.ReplaceText,{"BillTo", "Shipper", "Receiver"}),
Part1=Table.AddColumn( #"Replaced Value", "Part1", each try Table.Combine(List.Transform(Text.Split([BillTo],","), (x)=>Table.SelectRows(Table2, each Text.Contains([BillTo],x))))[OrderNo] otherwise null),
Part2=Table.AddColumn( Part1, "Part2", each try Table.Combine(List.Transform(Text.Split([Shipper],","), (x)=>Table.SelectRows(Table2, each Text.Contains([Shipper],x))))[OrderNo] otherwise null),
Part3=Table.AddColumn( Part2, "Part3", each try Table.Combine(List.Transform(Text.Split([Receiver],","), (x)=>Table.SelectRows(Table2, each Text.Contains([Receiver],x))))[OrderNo] otherwise null),
#"Added Custom" = Table.AddColumn(Part3, "Matches", each try Table.Combine(List.Transform(List.Intersect(List.RemoveNulls({[Part1],[Part2],[Part3]})),(x)=>Table.SelectRows(Table2, each [OrderNo]=x))) otherwise null),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Part1", "Part2", "Part3"})
in #"Removed Columns"