标记包含特定项目的订单中的所有行

Flagging all rows in an order that contain a particular item

我有几个订单中所有项目的详细清单。每个订单都有一个唯一标识符,出现在每个相关行中。我需要一个公式,如果订单中的任何行包含项目 X,或者如果该订单中的 none 行包含项目 X,则可以拉出 C 列。我该怎么做?我很乐意直接在 Excel 或 PowerPivot 中执行此操作。

谢谢!

DAX:

MyNiftyColumn=
IF(
    COUNTROWS(
        FILTER(
            ALLEXCEPT('MyTable', 'MyTable'[OrderUniqueIdentifier])
            ,'MyTable'[Item] = "item X"
        )
    ) > 0
    ,'MyTable'[column C]
    ,'MyTable'[column D]
)

我在下面按位置引用函数参数,第一个参数用 (1) 表示,第二个参数用 (2) 表示,依此类推。

FILTER() 逐行执行 (1) 中的 table 并计算 (2) 中的布尔表达式,returning (1) 的子集 ( 2) return是真的。

ALLEXCEPT() returns (1) 中的 table 删除了所有上下文,除了 (2)-(n) 中命名的字段。因此我们 return 整个 table 其中 [OrderUniqueIdentifier] 与当前行相同。

FILTER() 的 (2) 仅检查 [Item] 是否为 "Item X"。因此,对于每一行,我们得到一个 table,其中包含共享 [OrderUniqueIdentifier] 并具有 [Item] = "item X".

的所有行

COUNTROWS() 计算上面确定的 table 中的行数。

我们与 0 进行比较。如果 > 0,则该订单有一些 "item X"、return [C 列]。

如果为 0,则该订单不包含 "item X"、return [D 列]。