DAX度量筛选计数异常,需修改以统计含T1/T2指控的多次Booking个体数
修改DAX度量以统计符合条件的唯一个体数
需求:统计同时满足以下两个条件的唯一个体数量,正确结果应为5:
- 存在多次Booking Events(现有度量已算出此类个体共16个)
- 该个体的记录中包含T1或T2类型的指控
现有度量的不足
现有度量仅筛选出了有多次Booking Events的个体,未加入T1/T2指控的条件判断,因此需要补充该筛选逻辑。
修改后的DAX度量方案1
# 有多次逮捕且含T1/T2指控的个体数 = VAR tbl = SUMMARIZE( factBookingCharge, factBookingCharge[fkEmployee], "逮捕次数", DISTINCTCOUNT(dimBookingEvent[BookingSystemId]), "含T1/T2指控", COUNTROWS( FILTER( factBookingCharge, factBookingCharge[指控类型] IN {"T1", "T2"} ) ) > 0 ) VAR 符合条件的个体 = CALCULATE( DISTINCTCOUNT(factBookingCharge[fkEmployee]), FILTER( tbl, [逮捕次数] > 1 && [含T1/T2指控] = TRUE() ) ) RETURN 符合条件的个体
修改说明:
- 在
SUMMARIZE函数中新增含T1/T2指控字段,通过COUNTROWS+FILTER判断当前个体的记录中是否存在T1或T2指控 - 筛选临时表
tbl时,同时加入[逮捕次数] > 1和[含T1/T2指控] = TRUE()两个条件,确保仅统计同时满足要求的个体
修改后的DAX度量方案2(集合交集写法)
# 有多次逮捕且含T1/T2指控的个体数 = VAR 多次逮捕的个体集合 = CALCULATETABLE( VALUES(factBookingCharge[fkEmployee]), SUMMARIZE( factBookingCharge, factBookingCharge[fkEmployee], "逮捕次数", DISTINCTCOUNT(dimBookingEvent[BookingSystemId]) ), [逮捕次数] > 1 ) VAR 含T1_T2指控的个体集合 = CALCULATETABLE( VALUES(factBookingCharge[fkEmployee]), factBookingCharge[指控类型] IN {"T1", "T2"} ) VAR 符合条件的个体 = DISTINCTCOUNT( INTERSECT(多次逮捕的个体集合, 含T1_T2指控的个体集合)[fkEmployee] ) RETURN 符合条件的个体
修改说明:
- 先分别筛选出「有多次逮捕的个体集合」和「含T1/T2指控的个体集合」
- 使用
INTERSECT函数取两个集合的交集,再统计交集中的唯一个体数量
内容的提问来源于stack exchange,提问作者Ken Kelemen
相关产品推荐
相关产品推荐

