比较列值并忽略元素 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"