比较列值并忽略元素 DAX 的顺序
Comparing column values and ignoring the order of element DAX
我有一列,我需要检查列值是否包含任何顺序的相同数据。
如果值以任何顺序匹配,我想获取第一个值作为输出值。
我们可以使用 DAX 来做到这一点吗??
这可以获得正确的输出(未在大型数据集上测试);
IFMatch =
VAR mymeasure =
SUBSTITUTE (SELECTEDVALUE(MatchingTable[Combo code])
, ",", "|" )
VAR Mylen =
PATHLENGTH ( mymeasure )+1
VAR mytable =
ADDCOLUMNS (
GENERATESERIES ( 1, Mylen ),
"mylist", ( PATHITEM ( mymeasure, [Value] ) )
)
VAR mylist =
SELECTCOLUMNS ( mytable, "list", [mylist] )
// SecondColumnToTable
VAR Outp =
SUBSTITUTE ( SELECTEDVALUE(MatchingTable[Output]), ",", "|" )
VAR OutpMylen =
PATHLENGTH ( Outp ) +1
VAR Outpmytable =
ADDCOLUMNS (
GENERATESERIES ( 1, Outpmylen ),
"mylist", ( PATHITEM ( Outp, [Value] ) )
)
VAR Outpmylist =
SELECTCOLUMNS ( Outpmytable, "list", [mylist] )
RETURN
if(Mylen = OutpMylen && Mylen = CALCULATE ( COUNTROWS (INTERSECT(mylist,Outpmylist) )),TOPN(1, Outpmylist), "N/D")
以防万一,这似乎适用于 M / Powerquery
它对 Combo Code 列进行拆分、排序和重组,然后自行合并并选取第一个匹配行
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Combo code", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Text.Combine(List.Sort(Text.Split([Combo code], ",")), ",")),
#"Merged Queries" = Table.NestedJoin(#"Added Custom",{"Custom"},#"Added Custom",{"Custom"},"Added Custom",JoinKind.LeftOuter),
#"Added Custom1" = Table.AddColumn(#"Merged Queries", "Output", each Table.First([Added Custom])[Combo code]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Custom", "Added Custom"})
in #"Removed Columns"
我有一列,我需要检查列值是否包含任何顺序的相同数据。
如果值以任何顺序匹配,我想获取第一个值作为输出值。
我们可以使用 DAX 来做到这一点吗??
这可以获得正确的输出(未在大型数据集上测试);
IFMatch =
VAR mymeasure =
SUBSTITUTE (SELECTEDVALUE(MatchingTable[Combo code])
, ",", "|" )
VAR Mylen =
PATHLENGTH ( mymeasure )+1
VAR mytable =
ADDCOLUMNS (
GENERATESERIES ( 1, Mylen ),
"mylist", ( PATHITEM ( mymeasure, [Value] ) )
)
VAR mylist =
SELECTCOLUMNS ( mytable, "list", [mylist] )
// SecondColumnToTable
VAR Outp =
SUBSTITUTE ( SELECTEDVALUE(MatchingTable[Output]), ",", "|" )
VAR OutpMylen =
PATHLENGTH ( Outp ) +1
VAR Outpmytable =
ADDCOLUMNS (
GENERATESERIES ( 1, Outpmylen ),
"mylist", ( PATHITEM ( Outp, [Value] ) )
)
VAR Outpmylist =
SELECTCOLUMNS ( Outpmytable, "list", [mylist] )
RETURN
if(Mylen = OutpMylen && Mylen = CALCULATE ( COUNTROWS (INTERSECT(mylist,Outpmylist) )),TOPN(1, Outpmylist), "N/D")
以防万一,这似乎适用于 M / Powerquery
它对 Combo Code 列进行拆分、排序和重组,然后自行合并并选取第一个匹配行
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Combo code", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Text.Combine(List.Sort(Text.Split([Combo code], ",")), ",")),
#"Merged Queries" = Table.NestedJoin(#"Added Custom",{"Custom"},#"Added Custom",{"Custom"},"Added Custom",JoinKind.LeftOuter),
#"Added Custom1" = Table.AddColumn(#"Merged Queries", "Output", each Table.First([Added Custom])[Combo code]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Custom", "Added Custom"})
in #"Removed Columns"