↓ 预约直播,更多干货,不要错过 ↓
在学习和使用 Power BI 的过程中,DAX 是不可避免的重要部分。然而,许多初学者甚至有经验的用户在编写 DAX 公式时,可能会犯一些常见错误。今天,我们将分享 5 个常见的 DAX 错误,以及如何正确解决它们。这篇文章将帮助你在学习旅程中少走弯路,快速提高 DAX 技能。
度量值必须返回标量值
在 Power BI 中,度量值的结果必须是单一值(标量值),但许多用户在编写公式时没有意识到这一点,导致返回表格值的错误。例如:
我们希望计算销售表中属于上海地区的交易数量,于是写了如下公式:
上海订单量 =
FILTER( 'Fact 订单' , 'Fact 订单'[城市] = "上海" )
尽管公式语法正确,但由于 FILTER
函数返回的是一个表格,而度量值需要返回单一值,因此系统会报错。
解决方案: 将返回表格的函数包裹在聚合函数中,例如 COUNTROWS
:
上海订单量 =
COUNTROWS( FILTER( 'Fact 订单' , 'Fact 订单'[城市] = "上海" ) )
此外,编写公式时,可以通过 Power BI 的智能提示检查函数返回的值类型。例如,FILTER
的提示信息会说明它返回的是一个表,而不是单一值。
度量值不是表的列
许多用户在编写度量值时,会错误地认为度量值可以像表中的新建列一样直接访问表的行数据。例如,在销售表中创建一个新列,用于标识上海地区的交易:
是否为上海 =
IF( 'Fact 订单'[城市] = "上海" , 1 , 0 )
这是可以的,因为新列是逐行计算的。但是,如果将相同逻辑用于度量值,会发现度量值报错,无法访问确定表 'Fact 订单' 中列 "城市" 的单个值,因为度量值默认无法逐行访问表。
解决方案: 要实现逐行计算,需要使用迭代函数(如 SUMX
或 AVERAGEX
):
上海地区订单数 =
SUMX( 'Fact 订单', IF( 'Fact 订单'[城市] = "上海" , 1 , 0 ) )
迭代函数允许访问表的每一行,从而实现类似逐行计算的效果。
无法区分数据类型
在 Power BI 中,数据类型的正确识别和使用至关重要,尤其是在比较数值类数据和文本类数据时。
• 数值类数据:通常用于表示数量、大小和连续值,如销售额、利润、温度等。这类数据可以进行数学运算、聚合(如求和、平均值)和其他统计计算。
• 文本类数据:主要用于表示类别、描述性信息和离散值,如产品名称、客户ID、城市等。文本数据无法直接进行数学运算,但可以用于分组、筛选和排序等操作。
不少刚入门的小伙伴在写表达式时,分不清二者的区别,用引号 "" 包围的表示文本类数据,直接写数字的表示数值类数据。
假设我们有一列整数列,那这列数据只能跟数值类进行比较,如果跟文本类数据进行比较,就会报错。
不带引号才表示数字。
如果在进行比较时实在避免不了不同数据类型之间的对比,可以使用 VALUE 函数将文本转换为数值,或者使用 FORMAT 函数将数值转化为文本。
忽略按列排序的影响
我们常常使用按列排序功能让一些文本列按照某种特定的顺序进行排序,比如最常见的月份排序,我们会对月份名称列进行按列排序操作,使其按照月份序号 1 - 12 的顺序显示。
按列排序功能很实用,但是会带来某些“副作用”,可能会对筛选上下文和度量值的结果产生影响。
具体原因参考:PowerBI 按列排序功能的“副作用”,你知道吗?
解决办法也很简单,在移除进行过按列排序操作列的筛选上下文时,要注意不仅只有报表中使用的列的筛选上下文要移除,它所依靠的排序列的筛选上下文也要移除。
例如,如果月份名称列依赖于排序列(如 MonthNum
),仅移除月份名称列的筛选是不够的,同时要移除排序列的筛选。
月份销售额最大值 =
MAXX( ALL( 'Dim Calendar'[MonthNameCN] , 'Dim Calendar'[MonthNum] ) , [Sales] )
误解 Power BI 中的“总计”
在 Power BI 中,总计并非简单地将所有行的结果相加,而是基于当前的筛选上下文进行计算。例如,以下表显示每个月的最佳销售日金额:
年份 | 月份 | 最佳销售日金额 |
2022 | 1 | 192 |
2022 | 2 | 150 |
总计 | 407(错误) |
这里总计显示的应该是全年最佳销售日的金额,而不是各月最佳销售日金额的总和。
总结
通过本文的分享,相信你对常见的 DAX 错误和解决方法有了更清晰的了解。从度量值的标量返回到数据类型区分,再到按列排序和总计的正确理解,掌握这些细节会让你在 Power BI 中更加得心应手。希望在 2025 年的学习中,你能快速提升 DAX 技能,避免常见的坑,创造更优秀的数据报告!
如果你想学习更多关于 Power BI 的知识,可以关注我们的最新课程《Power BI 经典》,更加系统化学习 Power BI 相关内容!
一更专业的数据分析师训练营一
📈【高级课程】:业务人(管理、销售、财务、供应链)彻底解决企业数据分析。
🔍【企业咨询】:十大行业,十大领域,企业案例,咨询,培训,实施。
🔗 如何获取更多信息?扫描下方二维码具体咨询。
点击“阅读原文”获取更多资源