动态行比较 table - DAX/M 语言/Power BI

Dynamic row comparison in one table - DAX / M language / Power BI

这可能吗?

我有一个 table,其中有一列包含产品的 版本(例如:fast car ). 每个版本都有一个 parts 的列表(例如:color)。 每个部分都有多个(例如:红色)。

<strong>版本</strong> <strong>部分</strong> <strong>PART_VALUE</strong> 版本 1 第 1 部分 PART_VALUE1 版本 1 第 2 部分 PART_VALUE2 版本 1 第 3 部分 PART_VALUE3 版本 2 第 2 部分 PART_VALUE2 版本 2 第 3 部分 PART_VALUE3 VERSION2 <strong>PART4</strong> <strong>PART_VALUE4</strong> 版本 3 第 1 部分 PART_VALUE1 版本 3 第 2 部分 PART_VALUE2 版本 3 第 3 部分 <strong>PART_VALUE4</strong>

现在我想 select - 在 Fragmentator 或其他一些复选框中 - Version1Version2 结果应该是:

"ONLY DIFFENCES BETWEEN VERSION1 AND VERSION2"<br> 版本 1 第 1 部分 PART_VALUE1 版本 2 第 4 部分 PART_VALUE4

或在 selecting Version1Version3 之后,结果应该是:

"ONLY DIFFENCES BETWEEN VERSION1 AND VERSION3"<br> 版本 1 第 3 部分 PART_VALUE3 版本 3 第 3 部分 PART_VALUE4

这是一个 M 查询,它应该可以满足您的要求:

(V1, V2) =>
let
    Source = MyTable,
    First = Table.SelectRows(Source, each ([VERSION] = V1)),
    Second = Table.SelectRows(Source, each ([VERSION] = V2)),
    #"First Unique" = Table.NestedJoin(First,{"PART", "PART_VALUE"},Second,{"PART", "PART_VALUE"},"Second",JoinKind.LeftAnti),
    #"Second Unique" = Table.NestedJoin(Second,{"PART", "PART_VALUE"},First,{"PART", "PART_VALUE"},"First",JoinKind.LeftAnti),
    Combine = Table.Combine({#"First Unique", #"Second Unique"}),
    #"Removed Columns" = Table.RemoveColumns(Combine,{"Second", "First"})
in
    #"Removed Columns"