在学习PowerBI的过程中,尤其是刚接触的时候,不可避免的会遇到各种各样的错误,有时自己怎么检查都没法消除,不解决这个错误又没法进行下一步的工作,经常会搞的自己烦闷无比,不过最后通过自己的苦苦摸索、或者他人的片语点拨而解决后,也会欣喜异常。
你遇到的问题,我同样也都遇到过,并且我遇到的更多(因为我还接收到星友们遇到的各种问题:),这里归纳了一下初学者使用PowerBI时,几个常见的错误以及解决的办法。
01 | DAX书写错误
刚开始在DAX编辑框建度量值时,总是眼前一堆红色的波浪线有没有,
经常有新人问我说,就是按照文章中的DAX一个个字符敲的,为什么会报错,其实出现这个问题一般都是少了右括号,忘记输入逗号或者有中文字符等,所以在编写DAX时一定要切记:
- 每一个函数左右括号 () ,要配对;
- 引用表的单引号 '',不要漏;
- 参数之间的分隔逗号 , 不能缺少;
- 以上字符均要求为英文字符;
另外一定要按照格式规范书写DAX(请参考:送你一份DAX格式指南),上图中出现错误,其实还是比较容易排查出错误在那里的,如果全部写在一行,有这些错误就更加头大了。
这个问题一般都是出现在刚开始学习时,写的多了基本都不会遇到或者出现这种提示可以马上知道是哪里错了。所以学习DAX时不要只看不练,或者练习时复制别人写好的DAX,一定要自己亲自动手去写,锻炼肌肉记忆,才能在需要编写DAX的时候行云流水。
02 | 函数使用错误
有些函数返回的表,若用于新建度量值,肯定返回错误,比如,
度量值需要返回的是一个值,而FILTER函数返回的表,所以它不能单独用于建度量值,但该函数可以作为其他函数的参数使用,来建立度量值。
虽然上图中的FILTER函数建度量值时出错,但是却可以建表,该表达式将返回所有北京的客户的订单表。
也有些函数返回的是值,若用于建表,也会报错,比如,
CALCULATE函数返回的是一个值,不能用于建表。不过如果你确实想建一个只有一个值的表,也是可以做到的,可以在这个表达式外层套一个大括号{},正常返回一个表,
该表只有一个数据,为北京客户贡献的销售额。
通过这种方式,也可以用于在数据视图下,查看度量值的返回结果。
03 | 参数使用错误
参数错误的时候,有时并不会有红色波浪线提醒,比如下图,
提示MAX函数的参数只接受列,该错误就是参数应该为列的时候,使用了表。
还有的函数应该引用表,却用了列或者值,
出现这种情况就是按照错误提示进行更改,再仔细研究一下该函数的介绍文档,弄清楚该函数需要有几个参数,以及每个参数分别是什么类型。
关于函数和参数的错误,主要是要理解DAX各类函数及其参数的用法,请参考:DAX中的表函数和值函数
04 | 作图时出现错误
好不容易把度量值的DAX代码调试好了,系统也没有提示任何错误,比如这个度量值,
没有错误提示好开心,现在就来看看到底是哪个客户的单笔购买金额最高吧,用个卡片图来展示,可结果却是这样,
世事难料啊,要崩溃了有没有!
但是也不能因为这点小事崩溃啊,该做的还得继续做,点击“请参阅详细信息”看看为什么会出错?
原来是返回的值不唯一导致错误的。再回头看看这个度量值,其实DAX代码本身并没有错误(所以没有错误提示),但是逻辑上有bug,假如有多个客户的订单额都同时是最大订单额,那么这个度量值无法返回唯一值,也就不能正常显示出结果。
这个问题解决的办法有很多,主要看你想要什么结果,如果只是想不出现错误提示,就可以在上面那个表达式中加一个判断判断来拦截错误,可使用IF和HASONEVALUE,
使用这个度量值肯定不会再有错误出现,但是如果有多个客户,它也不会显示出客户姓名,只会显示空白。
这个例子中确实有多个客户的订单额都是最大值,但是又想显示出一个客户姓名,这个问题可以改一下,比如最早达到最大订单额的是哪个客户?这就是一个确定的唯一客户了,我不再详细写度量值了,大家可以拿这个简单的例子练练手。
05 | 显示结果不符合预期
写度量值时没有任何错误提示,把它拖入到图表中也没有错误,可是显示的数据却很奇怪,完全不是想象中的,
所有的数据都相同,没有按上下文进行计算?
这个问题一般都是维度表和事实表没有建立关系,或者没有建立正确的关系,因此度量值没有按照外部下上文正确计算。
遇到这种情况去建模视图下,更改一下关系就可以了。
这里也建议大家,导入数据之后,先在建模视图下建立正确的关系图,然后再去着手去写度量值。如果系统自动建立的,也要检查一下,自动建立的关系是否与我们的分析逻辑一致。
06 | 使用度量值作为筛选维度
还有不少人问我,为什么我建立的度量值无法拖入到图表里,我仔细一看,原来TA是想用这个度量值拖到图表的轴上,或者是切片器中。
度量值作为动态的公式,只有在一定的上下文环境中才有确定的返回结果,所以PowerBI中默认它是不能作为筛选维度的。如果确实需要用这个维度,就去构建一个表吧。
这次就先写这么多,以后有空了再总结其他的。
其实当我们开始学习一个新的事物时,都会遇到各种各样的困惑和难题,有的人会抱怨这个工具太弱智,一点都不智能,然后就放弃了;也有的人试着去理解它内在的逻辑,然后利用它的逻辑来解决自己的问题,你属于哪种人呢?
有问题不可怕,让我们一起解决它,加入PowerBI星球,随时问题答疑,更多资源分享。
不要忘了在评论区回复你的答案哦:)