数据可视化之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 | 把数据聚合为分析需要的最细粒度 本文假设最细分析粒 ...
随机推荐
- 开发小白可以一年涨薪10w?这份java文档功不可没,学透你也可以
靠这份文档,跳槽涨薪10K 金九银十的时候我分享了一份面试文档给我的兄弟,没想到这哥们2个月之内斩获数个BAT的offer, 最后选择了一个他最想要去的公司,既然有这么好的效果,我就打算把这份文档分享 ...
- FFT快速傅里叶变换的python实现
FFT是DFT的高效算法,能够将时域信号转化到频域上,下面记录下一段用python实现的FFT代码. # encoding=utf-8 import numpy as np import pylab ...
- php 判断设备是手机还是平板还是pc
1 <?php 2 //获取USER AGENT 3 $agent = strtolower($_SERVER['HTTP_USER_AGENT']); 4 5 //分析数据 6 $is_pc ...
- C#结构体struct -0029
结构体 有时候我们仅需要一个小的数据结构,类提供的功能多于我们需要的功能:考虑到性能原因,最好使用结构体. 结构体是值类型,存储在栈中或存储为内联(如果结构体是存储在堆中的另一个对象的一部分). 例如 ...
- 升级OPENSSH踩过的坑
安装三个必要依赖包yum install gcc zlib-devel openssl-devel上传安装包,创建一个/tmp目录下,然后解压,将/etc/ssh/目录移动到本地解压安装包,进入安装目 ...
- vue 入门, todoList
# 实现逻辑: > * 技术栈> 1. 生命周期,creatd( 创建后执行)> 2. methods': 调用事件方法,结果不会缓存> 3. Watch : 监听器,监听输 ...
- Python爬虫实战,完整的思路和步骤(附源码)
前言 小的时候心中总有十万个为什么类似的问题,今天带大家爬取一个问答类的网站. 本堂课使用正则表达式对文本类的数据进行提取,正则表达式是数据提取的通用方法. 环境介绍: python 3.6 pych ...
- 探索ADC的原理(自制3位并行比较型ADC)
摘要 本文通过列举历史中出现的产品,梳理了模数转换器在20世纪30年代~~20世纪80年代末的发展历史.接下来,简要介绍模数转换器的原理.技术指标.分类和未来发展方向.最后,提供了一种自制3位FLAS ...
- Python 简明教程 --- 6,Python 控制流
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io Talk is cheap, show me the code. -- Linus Torvalds ...
- akka-typed(8) - CQRS读写分离模式
前面介绍了事件源(EventSource)和集群(cluster),现在到了讨论CQRS的时候了.CQRS即读写分离模式,由独立的写方程序和读方程序组成,具体原理在以前的博客里介绍过了.akka-ty ...