数据可视化之powerBI技巧(二十四)Power BI初学者刚见的错误,帮你轻松处理
在学习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星球,随时问题答疑,更多资源分享。
不要忘了在评论区回复你的答案哦:)
数据可视化之powerBI技巧(二十四)Power BI初学者刚见的错误,帮你轻松处理的更多相关文章
- 数据可视化之powerBI技巧(十四)采悟:PowerBI中自制中文单位万和亿
使用PowerBI的时候,一个很不爽之处就是数据单位的设置,只能用千.百万等英美的习惯来显示,而没有我们中文所习惯的万亿等单位,虽然要求添加"万"的呼声很高,但迟迟未见到改进动作, ...
- 数据可视化之powerBI技巧(八)Power BI按多列排序的技巧
目前PowerBI的表格已经支持多列排序,但是矩阵依然还不支持按多个字段排序,虽然这个需求很普遍,这里利用DAX提供一个变通的实现方式. 模拟数据如下,有两个数据指标: 对类别首先按[指标一]进行排序 ...
- 数据可视化之powerBI基础(六)Power BI的“问答”,你用过吗?
https://zhuanlan.zhihu.com/p/64412190 本文来自星球嘉宾"海艳"的分享,关于Power BI的问答功能以及各项细节,海艳详细为大家逐一介绍,下 ...
- 数据可视化之powerBI基础(十四)Power BI中创建联动切片器
https://zhuanlan.zhihu.com/p/67564062 进行数据分析时,每个分析维度并不总是独立的,比如省份是一个维度,城市也是一个维度,而这两个维度之间是有逻辑关系的,那么在进行 ...
- 数据可视化之powerBI技巧(十二)学会这几个度量值,轻松获取前N名
数据中的明细项一般都有很多,可是我们关注的往往只是前几名,所以在报表中只展示关注的部分,就十分常用. 有了上篇(这几个示例,帮你深入理解RANKX排名)关于排名的铺垫,仅显示前N名就简单多了. 依然以 ...
- 数据可视化之powerBI技巧(十八)Power BI动态技巧:动态显示列和度量值
今天分享一个可视化小技巧,如何在PowerBI的表格中动态显示需要的列? 就是这样的效果, 也就是根据切片器的筛选,来显示需要的列,做起来很简单,步骤如下: 01 逆透视表 进入Powerquery编 ...
- 数据可视化之powerBI技巧(十六)采悟:PowerBI作图技巧:动态显示可视化标题
默认情况下,PowerBI图表的标题是静态的,为了增强图表的可读性,通过设置动态标题,可快速展示关键信息.提升沟通效率.本文通过两个简单的例子来看看PowerBI中如何创建动态标题. /01/ 拿之前 ...
- 数据可视化之powerBI技巧(十九)DAX作图技巧:使用度量值动态分组和配色
有了前两篇关于分组的铺垫,这篇文章就来学习一个分组的经典应用,图表的动态分组,并对分组动态配色. 假设有十几个产品,每个产品的销售额,是随着时间而变化的,想知道某个时间的每一个产品的销售额与平均销售额 ...
- 数据可视化之powerBI技巧(十五)采悟:Power BI动态技巧:动态显示数据层级
今天给大家分享一个动态显示数据层级的技巧,效果如下: 无论想按什么维度.什么顺序查看分析数据,只需要选择不同的切片器组合就行了. 方法如下:01 | 把数据聚合为分析需要的最细粒度 本文假设最细分析粒 ...
随机推荐
- 《Java并发编程的艺术》第6/7/8章 Java并发容器与框架/13个原子操作/并发工具类
第6章 Java并发容器和框架 6.1 ConcurrentHashMap(线程安全的HashMap.锁分段技术) 6.1.1 为什么要使用ConcurrentHashMap 在并发编程中使用Has ...
- 浅谈async 及 await
async 及 await 涉及面试题:async 及 await 的特点,它们的优点和缺点分别是什么?await 原理是什么? 一个函数如果加上 async ,那么该函数就会返回一个 Promise ...
- ca77a_c++__一个打开并检查文件输入的程序_流对象_操作文件
/*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14*/ /*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14 */ #include < ...
- 最通俗易懂的RSA加密解密指导
前言 RSA加密算法是一种非对称加密算法,简单来说,就是加密时使用一个钥匙,解密时使用另一个钥匙. 因为加密的钥匙是公开的,所又称公钥,解密的钥匙是不公开的,所以称为私钥. 密钥 关于RSA加密有很多 ...
- linux 上设置mysql开机自启
此方式是通过安装包安装的,如果是yum安装的rpm包,可参考yum安装MySQL8.0 三个月之前安装的mysql,记得是设置了开机自启,但是今天再次进入的时候发现,无法登录,报错如下 原因是mysq ...
- elasticSearch中集群状态的guan'l
es中集群出现上面的问题一般是磁盘空间不够引起的,就是node节点所在的磁盘空间不足引起的 es整个集群放在c盘,都快满了 说明es的磁盘已经快被使用完了,我们可以临时更新下磁盘空间大小 修改 ES分 ...
- android 中使用自定义权限在广播中的利用
1.在一个进程中发送一个有自定义权限的广播,另外一个进程中拥有广播接受者接受到该广播 <?xml version="1.0" encoding="utf-8&quo ...
- java scoket aIO 通信
AsynchronousServerSocketChannel assc.accept(this, new ServerCompletionHandler()); 第一个参数是服务器的处理类,第二个参 ...
- SpringMVC中Map、Model、ModelMap、ModelAndView之间的关系及区别
首先,在了解这三者之前,需要知道一点:SpringMVC在调用方法前会创建一个隐含的数据模型(Model),作为模型数据的存储容器, 成为”隐含模型”. 如果controller方法的参数为Moedl ...
- Python3-算法-递归
递归 递归算法是指一般通过函数或子进程来实现,在函数或子进程的内部,直接或间接地调用自己的算法,说白了就是自己调自己 注: 1.在使用递归的时候,必须要有一个递归出口,即一个明确的结束条件,否则就是死 ...