Power BI中基于事件首次匹配的Event Count列DAX实现方法
DAX实现Event Count列需求
原始数据表格
| Event name | Event Id | Acct Date | Event Date |
|---|---|---|---|
| Event1 | 1 | 2022-01-01 | 2022-01-01 |
| Event1 | 2 | 2022-04-01 | 2022-01-01 |
| Event1 | 3 | 2022-01-01 | 2022-01-01 |
| Event1 | 4 | 2022-09-01 | 2022-01-01 |
| Event2 | 1 | 2022-01-01 | 2022-01-01 |
| Event2 | 2 | 2022-04-01 | 2022-01-01 |
| Event2 | 3 | 2022-01-01 | 2022-01-01 |
| Event2 | 4 | 2022-09-01 | 2022-01-01 |
需求说明
新增Event Count列,规则如下:
- 针对同一
Event name且满足Acct Date = Event Date的行,仅首次出现的行值为1,后续匹配的行值为0; - 不满足
Acct Date = Event Date的行,列值为0。
原公式IF(Acct Date = Event Date,1,0)会将所有匹配行标为1,无法实现仅首次计数的要求。
DAX计算列实现方案
Event Count = VAR CurrentEventName = 'Table'[Event name] VAR CurrentEventId = 'Table'[Event Id] VAR FilteredRows = FILTER( 'Table', 'Table'[Event name] = CurrentEventName && 'Table'[Acct Date] = 'Table'[Event Date] && 'Table'[Event Id] <= CurrentEventId ) RETURN IF( 'Table'[Acct Date] = 'Table'[Event Date] && COUNTROWS(FilteredRows) = 1, 1, 0 )
逻辑说明
- 定义变量
CurrentEventName和CurrentEventId,存储当前行的事件名称与事件ID; FilteredRows筛选出同一Event name下,满足Acct Date = Event Date且Event Id小于等于当前行ID的所有行;- 最终判断:若当前行满足
Acct Date = Event Date,且筛选后的行数为1(即首次出现),则返回1,否则返回0。
注意:若场景中不用
Event Id判断首次顺序,可替换'Table'[Event Id] <= CurrentEventId为对应排序字段(如创建时间)的比较逻辑。
内容的提问来源于stack exchange,提问作者Yeshk
相关产品推荐
相关产品推荐

