Power BI DAX 度量值怎么写提示词(CALCULATE 与筛选上下文、同比环比、YTD 累计、占比与排名)

用 Power BI 做报表时写不出或写不对 DAX 度量值(同比算出来是空的、占比在切片器下不对、累计值每月重置错了)时用:描述数据模型和指标定义,AI 写出度量值并解释筛选上下文如何变化,还会检查日期表和表关系这些常见的根源问题。

NNathaniel bigo··原创首发·AI 辅助撰写
通用大模型 对话模型通用
你是一名精通 DAX 和 Power BI 数据建模的分析师。请帮我写度量值。

- 数据模型:[数据模型](例:事实表「销售」,维度表「日期」「产品」「门店」,星型结构)
- 表关系与关键字段:[表关系](例:销售表的日期列关联日期表的日期列,单向,多对一)
- 是否有标记好的日期表:[日期表情况]
- 需要的指标(每个写清业务定义):
  [指标定义]
- 报表中如何使用:[使用方式](例:矩阵按年月展开,有门店切片器)
- 现有的度量值或报错(如果有):
  [现有度量值]

请输出:
1. 先检查模型:时间智能函数要求有连续完整的日期表并标记为日期表;关系的方向与基数是否合理;是否存在应该用度量值却用了计算列的情况。发现问题先指出。
2. 度量值:
   - 先定义基础度量值(如销售额),其他度量值引用它,不要在每个度量值里重复写聚合;
   - 同比、环比、年初至今累计、移动平均:使用合适的时间智能函数,并处理没有上期数据时返回空值而不是错误或 0;
   - 占比:分母需要移除哪些筛选(全部、只移除产品维度、保留切片器的选择),说明 ALL、ALLEXCEPT、ALLSELECTED、REMOVEFILTERS 的区别,按我的需求选择;
   - 排名:使用排名函数,并说明并列和空值的处理;
   - 用 VAR 定义中间变量,提高可读性和性能;除法用 DIVIDE 防止除零。
3. 逐个解释:这个度量值在矩阵的某个单元格中,筛选上下文是什么,CALCULATE 把它改成了什么。
4. 验证方法:如何用一个简单的表格视觉对象或手工计算来核对结果。
5. 格式:度量值的命名规范、显示格式(百分比、千分位)、放在专门的度量值表中。

高亮处换成你自己的内容:[数据模型]、[表关系]、[日期表情况]、[指标定义]、[使用方式]、[现有度量值]

ChatGPT Plus 充值

已被复制 0 次

使用说明

怎么填变量:[数据模型] 和 [表关系] 是 DAX 写对的前提,很多「度量值不对」的问题其实是关系或日期表的问题。[指标定义] 一定要写清业务口径,例如「占比 = 当前产品销售额 ÷ 当前门店筛选下所有产品的销售额」,口径不同,用的函数完全不同。

常见坑:

  • 没有单独的日期表,直接在事实表的日期列上用时间智能函数,结果经常是空的或不正确。要建立连续的日期表并标记。
  • 占比的分母用了移除全部筛选的写法,切片器选择了某个门店后,分母仍然是全公司的销售额,占比变得很小。需要保留切片器选择时,用 ALLSELECTED 一类的写法。
  • 用计算列实现本该是度量值的指标,结果不会随筛选变化,还占用模型空间。

追问技巧:追问「这个度量值在总计行显示的数字不对,为什么」——总计行的筛选上下文和明细行不同,这是 DAX 中最常见的困惑之一。

示例输出

示例,仅供参考(节选)
销售额 = SUM ( '销售'[金额] )

销售额 同比 % =
VAR 本期 = [销售额]
VAR 去年同期 = CALCULATE ( [销售额], SAMEPERIODLASTYEAR ( '日期'[日期] ) )
RETURN
    IF ( NOT ISBLANK ( 去年同期 ), DIVIDE ( 本期 - 去年同期, 去年同期 ) )

销售额 年初至今 = TOTALYTD ( [销售额], '日期'[日期] )

产品占比 % =
DIVIDE ( [销售额], CALCULATE ( [销售额], ALLSELECTED ( '产品' ) ) )

解释「产品占比」:在矩阵中「华东门店 × 产品 A」这个单元格里,筛选上下文是门店为华东、产品为 A。分母中 ALLSELECTED('产品') 移除了单元格本身对产品的筛选,但保留切片器的选择,因此分母是「华东门店在当前切片器选择下所有产品的销售额」。

同款作品

用这条提示词做出来的作品;原作者会因此获得积分

做同款

还没有同款,来做第一个。

Nathaniel 的更多内容

同主题

同模型

0 条评论

登录 后参与评论

还没有评论,来抢沙发~