在学习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初学者刚见的错误,帮你轻松处理的更多相关文章

  1. 数据可视化之powerBI技巧(十四)采悟:PowerBI中自制中文单位万和亿

    使用PowerBI的时候,一个很不爽之处就是数据单位的设置,只能用千.百万等英美的习惯来显示,而没有我们中文所习惯的万亿等单位,虽然要求添加"万"的呼声很高,但迟迟未见到改进动作, ...

  2. 数据可视化之powerBI技巧(八)Power BI按多列排序的技巧

    目前PowerBI的表格已经支持多列排序,但是矩阵依然还不支持按多个字段排序,虽然这个需求很普遍,这里利用DAX提供一个变通的实现方式. 模拟数据如下,有两个数据指标: 对类别首先按[指标一]进行排序 ...

  3. 数据可视化之powerBI基础(六)Power BI的“问答”,你用过吗?

    https://zhuanlan.zhihu.com/p/64412190 ​本文来自星球嘉宾"海艳"的分享,关于Power BI的问答功能以及各项细节,海艳详细为大家逐一介绍,下 ...

  4. 数据可视化之powerBI基础(十四)Power BI中创建联动切片器

    https://zhuanlan.zhihu.com/p/67564062 进行数据分析时,每个分析维度并不总是独立的,比如省份是一个维度,城市也是一个维度,而这两个维度之间是有逻辑关系的,那么在进行 ...

  5. 数据可视化之powerBI技巧(十二)学会这几个度量值,轻松获取前N名

    数据中的明细项一般都有很多,可是我们关注的往往只是前几名,所以在报表中只展示关注的部分,就十分常用. 有了上篇(这几个示例,帮你深入理解RANKX排名)关于排名的铺垫,仅显示前N名就简单多了. 依然以 ...

  6. 数据可视化之powerBI技巧(十八)Power BI动态技巧:动态显示列和度量值

    今天分享一个可视化小技巧,如何在PowerBI的表格中动态显示需要的列? 就是这样的效果, 也就是根据切片器的筛选,来显示需要的列,做起来很简单,步骤如下: 01 逆透视表 进入Powerquery编 ...

  7. 数据可视化之powerBI技巧(十六)采悟:PowerBI作图技巧:动态显示可视化标题

    默认情况下,PowerBI图表的标题是静态的,为了增强图表的可读性,通过设置动态标题,可快速展示关键信息.提升沟通效率.本文通过两个简单的例子来看看PowerBI中如何创建动态标题. /01/ 拿之前 ...

  8. 数据可视化之powerBI技巧(十九)DAX作图技巧:使用度量值动态分组和配色

    有了前两篇关于分组的铺垫,这篇文章就来学习一个分组的经典应用,图表的动态分组,并对分组动态配色. 假设有十几个产品,每个产品的销售额,是随着时间而变化的,想知道某个时间的每一个产品的销售额与平均销售额 ...

  9. 数据可视化之powerBI技巧(十五)采悟:Power BI动态技巧:动态显示数据层级

    今天给大家分享一个动态显示数据层级的技巧,效果如下: 无论想按什么维度.什么顺序查看分析数据,只需要选择不同的切片器组合就行了. 方法如下:01 | 把数据聚合为分析需要的最细粒度 本文假设最细分析粒 ...

随机推荐

  1. OKR-Periods of Words【KMP最小前后缀】

    OKR-Periods of Words 传送门:链接    来源:UPC 8180 题目描述 串是有限个小写字符的序列,特别的,一个空序列也可以是一个串.一个串P是串A的前缀,当且仅当存在串B,使得 ...

  2. C# 9.0 新特性之模式匹配简化

    阅读本文大概需要 2 分钟. 记得在 MS Build 2020 大会上,C# 语言开发项目经理 Mads Torgersen 宣称 C# 9.0 将会随着 .NET 5 在今年 11 月份正式发布. ...

  3. 超详细实战教程丨多场景解析如何迁移Rancher Server

    本文转自Rancher Labs 作者介绍 王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有6年的云计算领域经验,经历了OpenStack到Kubernetes ...

  4. WebDriverWait

    显示等待 WebDriverWait( driver, timeout, poll_frequency, ignored_exceptions) driver: 传入WebDriver实例,即webd ...

  5. Spring Boot 在启动时进行配置文件加解密

    Spring Boot Application 事件和监听器 寻找到application.yml的读取的操作. 从spring.factories 中查看到 # Application Listen ...

  6. Python实现梯度法(最速上升(下降)法)寻找函数极大(极小)值

    首先简介梯度法的原理.首先一个实值函数$R^{n} \rightarrow R$的梯度方向是函数值上升最快的方向.梯度的反方向显然是函数值下降的最快方向,这就是机器学习里梯度下降法的基本原理.但是运筹 ...

  7. opencv C++全局直方图均衡化

    cv::Mat histogramEqualization(cv::Mat img){ int rows=img.rows; int cols=img.cols; cv::Mat grayScale= ...

  8. 谈谈java中的并发(一)

    一.并发的定义 并发:对于这个概念一直就是没怎么搞懂,就是感觉特别的生疏,(自己从从字面上理解就是多个东西,一起出发),所以就上网上查了一些资料: 同时拥有两个或多个线程,如果程序在单核处理器上运行, ...

  9. 深入理解Java闭包概念

    闭包又称词法闭包 闭包最早定义为一种包含<环境成分>和<控制成分>的实体. 解释一:闭包是引用了自由变量的函数,这个被引用的变量将和这个函数一同存在. 解释二:闭包是函数和相关 ...

  10. 控制shell终端提示符格式和颜色

    字体颜色值 (ASCII) 背景颜色值 (ASCII) 显示颜色 30 40 黑色 31 41 红色 32 42 绿色 33 43 黄色 34 44 蓝色 35 45 紫红色 36 46 青蓝色 37 ...