Power BI中如何构建动态的当年及上年1-11月已关闭模板去重计数度量值以实现KPI对比
Power BI中如何构建动态的当年及上年1-11月已关闭模板去重计数度量值以实现KPI对比
嘿,我来帮你搞定这个KPI对比的需求!你现在的核心诉求是把现有的去重关闭模板计数,拆分成当年1-11月和上年同期1-11月的两个动态度量值,用来做KPI卡片的对比对吧?咱们一步步来调整,完全贴合你的需求:
一、当年1-11月已关闭模板去重计数度量值
这个度量值会自动锁定当前年份的1-11月,同时保留你原来的去重计数+仅统计有关闭日期的逻辑:
Closed Temps Current Yr (Jan-Nov) = CALCULATE ( DISTINCTCOUNT(Activities[Template_ID]), FILTER( Activities, YEAR(Activities[Close_Date]) = YEAR(TODAY()) && -- 限定当前年份 MONTH(Activities[Close_Date]) <= 11 && -- 限定1-11月 NOT(ISBLANK(Activities[Close_Date])) -- 仅统计有关闭日期的项 ) )
二、上年1-11月已关闭模板去重计数度量值
逻辑和当年的几乎一致,只是把目标年份换成当前年的前一年,这样就能精准对比上年同期的数据:
Closed Temps Previous Yr (Jan-Nov) = CALCULATE ( DISTINCTCOUNT(Activities[Template_ID]), FILTER( Activities, YEAR(Activities[Close_Date]) = YEAR(TODAY()) - 1 && -- 限定上年年份 MONTH(Activities[Close_Date]) <= 11 && -- 同样限定1-11月 NOT(ISBLANK(Activities[Close_Date])) -- 仅统计有关闭日期的项 ) )
三、进阶优化(如果有专用日期表)
如果你的Power BI模型里已经搭建了专用日期表(这是Power BI的最佳实践,能提升计算效率),可以用更简洁高效的时间智能函数来写:
-- 当年1-11月版本(假设日期表名为DateTable) Closed Temps Current Yr (Jan-Nov) = CALCULATE ( DISTINCTCOUNT(Activities[Template_ID]), DATESBETWEEN( DateTable[Date], DATE(YEAR(TODAY()), 1, 1), DATE(YEAR(TODAY()), 11, 30) ), NOT(ISBLANK(Activities[Close_Date])) ) -- 上年1-11月版本 Closed Temps Previous Yr (Jan-Nov) = CALCULATE ( DISTINCTCOUNT(Activities[Template_ID]), DATESBETWEEN( DateTable[Date], DATE(YEAR(TODAY())-1, 1, 1), DATE(YEAR(TODAY())-1, 11, 30) ), NOT(ISBLANK(Activities[Close_Date])) )
四、KPI卡片设置
把上面的两个度量值拖到KPI视觉对象里:
- 将「当年1-11月」的度量值设为值
- 将「上年1-11月」的度量值设为目标值
这样就能自动展示当前值、目标值、差异值以及对比百分比,完美实现你要的KPI对比效果!
备注:内容来源于stack exchange,提问作者reallycow21
相关产品推荐
相关产品推荐

