根据多个标准识别事件的第一次出现

时间:2016-10-11 21:48:42

标签: excel powerpivot flags dax find-occurrences

我在PowerPivot中有一个数据集,需要找到一种方法来标记第一次出现的客户子事件

上下文:每个事件(COLUMN A)可以有X个子事件(COLUMN B), 我已经有一个标志,用于根据多个标准识别客户事件(COLUMN D)......我需要的是一种标记仅首次出现的客户子事件的方法每个事件,我都添加了一个 COLUMN E来说明标记应该如何工作。

enter image description here

UPDATE 其他情况 - 重复的客户sub_events但只需要标记第一个sub_event ...应该如下所示:

enter image description here

1 个答案:

答案 0 :(得分:0)

使用以下表达式在模型中创建计算列:

=
IF (
    [Customer_Event] = 1
        && [Sub_Event]
            = CALCULATE (
                FIRSTNONBLANK ( 'Table'[Sub_Event], 0 ),
                FILTER (
                    'Table',
                    'Table'[Event] = EARLIER ( 'Table'[Event] )
                        && [Customer_Event] = 1
                )
            ),
    1,
    0
)

如果Sub_Event列是一个数字,请FIRSTNONBLANK ( 'Table'[Sub_Event], 0 )

替换MIN('Table'[Sub_Event])

此外,如果您的计算机区域设置使用;(分号)作为列表分隔符,请用分号替换我的表达式中的每个,(逗号)以匹配您的设置。

更新: Sub_Event列中的重复值。

我认为我们可以使用CaseRow#列来获得Sub_Event值的第一次出现:

=
IF (
    [Customer_Event] = 1
        && [Sub_Event]
            = CALCULATE (
                FIRSTNONBLANK ( 'Table'[Sub_Event], 0 ),
                FILTER (
                    'Table',
                    'Table'[Event] = EARLIER ( 'Table'[Event] )
                        && [Customer_Event] = 1
                )
            )
        && [CaseRow#]
            = CALCULATE (
                MIN ( 'Table'[CaseRow#] ),
                FILTER (
                    'Table',
                    'Table'[Event] = EARLIER ( 'Table'[Event] )
                        && [Customer_Event] = 1
                )
            ),
    1,
    0
)

没有经过测试但应该有效。

如果有帮助,请告诉我。