Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >史上最速解决:Power BI由"按列排序"导致的"循环依赖"

史上最速解决:Power BI由"按列排序"导致的"循环依赖"

作者头像
陈学谦
发布于 2021-12-08 10:21:02
发布于 2021-12-08 10:21:02
4.5K00
代码可运行
举报
文章被收录于专栏:学谦数据运营学谦数据运营
运行总次数:0
代码可运行

引子

当我们在处理这样的数据时,想要进行排列时,会发现它并没有按照我们预想的按照1……9,10,11,12……这样的排序:

因为文本和数字在一起的列,数字只是文本。如果我们想要按照预想的顺序排列,能做的应该也只有按列排序,因此我们将周数中的数字提取出来作为单独一列:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
周数2 = MID([周数],6,10)

再选中[周数]列,点击“按列排序”,选择[周数2],结果发现:

检测到循环依赖关系!

原因分析

因为[周数2]这一列是由[周数]生成的,因此对[周数]进行排序计算时,引擎需要计算按列排序的目标[周数2]这一列的大小以便排序,而在计算[周数2]的时候发现,它是由[周数]计算而来,这就产生了循环依赖。

通俗点讲:循环依赖的产生就是这样,本来要计算A,但是过程中要计算B,而要计算B又需要计算A,就循环起来了。

循环依赖的产生有很多种形式,最常见的就是多个新建列之间经常性由于没有ALL掉合适的列,而导致行上下文转换为筛选上下文导致的循环依赖。

关于这一点后续我会再发文总结,几个常见的循环依赖问题产生的原因以及如何进行避免。

那这个问题该怎么解决呢?

如果是从数据源中直接获取的这个表,那么可以在pq中直接将数字提取出来作为单独一列,这样加载到报告中它们就是相互独立的两列,两者之间并没有依赖关系,也就不会产生循环依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
自定义= Table.AddColumn(更改的类型1, "自定义", each Text.Select([周数],{"0".."9"}))

但是这样做有个问题,比如我的数据表很大,我在里面添加一列是会无端地加大数据量的,影响刷新速度,这不是我想要的。

而且,一般情况下,我都是会将周数抽离出来作为单独的一个维度表,这样也可以对其他表进行关联计算:

那这个表是无法在pq里进行处理的。

此时我们应该如何做呢?

办法其实很简单。

解决问题

我们仍然对这个表添加一列[周数2]:

刚才我们说过,[周数]对[周数2]按列排序是会导致循环依赖的。但是如果我再根据[周数]添加一列新列,它和[周数2]是否还存在循环依赖关系呢?大家可以思考一下:

[周数2]和[周数3]之间有关系吗?这两列都是由[周数]计算得来,但是这两列本身并不存在什么直接关联。

实践是检验真理的唯一标准,我们测试一下:

没有问题。

结论

当遇到因为按列排序而导致的循环依赖问题,可以再新建复制一列想要排序的列,这样两个都是由原列计算而来的列直接并没有直接关系,也就不存在循环依赖,因此可以放心地进行按列排序。

虽然会造成数据的重复,但是毕竟是维度表,数据量很小,虽然有所重复,但影响不大。

而且,理论上应该也是解决问题最快的办法。

你学会了吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI生命管理大师学谦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
生成UUID论英雄:Python、MySQL和Power BI谁强?
我们在实际编程过程中会经常遇到需要用唯一ID的场合,这些唯一ID还会存到数据库中以便于我们将来进行查询和匹配。
陈学谦
2021/12/13
2.8K0
生成UUID论英雄:Python、MySQL和Power BI谁强?
一次深刻的学习之旅:Power Query中真有循环吗?从获取GUID说起
也就是说,“得益于”pq强大的引擎,Text.NewGuid()只运行了一次,的确非常节省算力。
陈学谦
2021/12/15
1.3K0
一次深刻的学习之旅:Power Query中真有循环吗?从获取GUID说起
逻辑结构?存储结构?傻傻分不清……
对于数据结构与算法的学习,我相信不管是新手还是老手,都会对“逻辑结构、存储结构”产生很多的疑问。你可能觉得不就是两个简单的概念嘛,早就了然于胸了。
roobtyan
2020/06/30
5.1K0
逻辑结构?存储结构?傻傻分不清……
Power Query 系列 (12) - Power Query 结构化列应用案例
本篇数据处理来自一个实际处理数据的简化。下图中,假设左边是一个直观的 BOM 结构展示,数据在 Excel 中存储格式如中间部分所示:第一列为物料编码的级别,第二列为物料编码。数据处理任务:需要在 Excel 中增加一列输出物料编码上一级的物料编码(目标为黄色部分)。
StoneWM
2021/03/25
1.3K0
NeurIPS 2018 | 如何用循环关系网络机智地解决数独类关系推理任务?
作者:Rasmus Berg Palm、Ulrich Paquet、Ole Winther
机器之心
2018/12/28
6940
NeurIPS 2018 | 如何用循环关系网络机智地解决数独类关系推理任务?
单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率
自 2017 年被提出以来,Transformer 已成为 AI 大模型的主流架构,一直稳站 C 位。
机器之心
2024/06/04
1070
单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率
数学建模-------MATLAB分支循环&&断点调试
其实对于初学者而言,第二种的代码多了一些,但是他的阅读以及对于程序的理解会更加的直观,我们需要知道的是使用elseif语句,后面是必须要有判断的条件的,但是如果直接使用else,就不需要添加任何的条件了;
阑梦清川
2025/02/24
800
数学建模-------MATLAB分支循环&&断点调试
BI技巧丨按列排序
PowerBI本身内置的排序方式,是遵循ASCII国际标准的方式,这就导致了中文的默认排序对于很多小伙伴来说并不友好。
PowerBI丨白茶
2022/11/12
3.6K0
BI技巧丨按列排序
从代码层面优化系统性能的解决方案
在 上一篇 我们主要介绍了所遇到问题的五点,那么今天接下来讨论剩下的问题,我们先再回顾一下之前讨论的问题:
九州暮云
2019/08/21
7660
从代码层面优化系统性能的解决方案
史上最全 | HBase 知识体系吐血总结
HBase 是 BigTable 的开源 Java 版本。是建立在 HDFS 之上,提供高可靠性、高性能、列存储、可伸缩、实时读写 NoSql 的数据库系统。
五分钟学大数据
2021/11/23
5K0
史上最全 | HBase 知识体系吐血总结
Power BI: 使用计算列创建关系中的循环依赖问题
文章背景: 在表缺少主键无法直接创建关系,或者需要借助复杂的计算才能创建主键的情况下,可以利用计算列来设置关系。在基于计算列创建关系时,循环依赖经常发生。下面先介绍一个示例,然后讲解循环依赖产生的原因,以及如何避免空行依赖。
Exploring
2023/09/10
9760
Power BI: 使用计算列创建关系中的循环依赖问题
简单谈谈OLTP,OLAP和列存储的概念
在商业数据处理的早期阶段,写入数据库通常对应于商业的交易场景,如: 销售,订单等涉及金钱交易的场景,交易的英文为transaction,也就是事务一词的来源,在计算机领域代表一个逻辑单元的一组读写操作。
大忽悠爱学习
2023/05/02
4K0
简单谈谈OLTP,OLAP和列存储的概念
智能分析:ChatGPT+Excel+Python超强组合玩转数据分析
首先是顶流Python高举卷王之王的大旗向传统王者VBA抢班夺权,pandas, xlwings、OpenPyXL和Matplotlib等第三方包已经具备VBA和Power Query的几乎所有功能。
博文视点Broadview
2023/12/21
1.1K0
智能分析:ChatGPT+Excel+Python超强组合玩转数据分析
1.14 PowerBI数据准备-添加条件列,给维度添加排序列
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/21
1130
1.14 PowerBI数据准备-添加条件列,给维度添加排序列
PowerBI 大型报表架构设计 - 30页100个度量值1000个对象
PowerBI 虽然从某种意义上说只是一个制作报表的工具,但在制作报表的过程中,从简单的报表,到极为复杂的报表都有可能。
BI佐罗
2019/09/23
3.9K0
PowerBI 大型报表架构设计 - 30页100个度量值1000个对象
《算法设计与分析》期末不挂科的原因_算法设计与分析重点
感兴趣的话可以参考 算法竞赛、小白学DP(动态规划) 学习相关代码的具体实现(Java版)
全栈程序员站长
2022/11/08
1.2K0
《算法设计与分析》期末不挂科的原因_算法设计与分析重点
用PowerBI分析上市公司财务数据(二)
笔者认为要具备以下条件:一是理解业务数据,知道主要分析的指标及潜在的报表分析需求;二是对DAX表达计算逻辑、特性有一定的了解。
公众号PowerBI大师
2019/10/28
5K0
用PowerBI分析上市公司财务数据(二)
1个函数获取Power BI所有表行列信息,轻松发现最大影响列 | PBI实用技巧
前面,我曾发布过文章《PowerBI数据模型优化,从导入数据开始》,其中提到一个很重要的知识点——列基数:
大海Power
2022/05/25
1.7K0
1个函数获取Power BI所有表行列信息,轻松发现最大影响列 | PBI实用技巧
Numpy中的索引与排序
花哨的索引探索花哨的索引组合索引Example:选择随机点利用花哨索引修改值数组排序Numpy中的快速排序:np.sort,np.argsort部分排序:分割
用户3577892
2020/06/12
2.5K0
Numpy中的索引与排序
一个简单的学历排序问题,隐藏3种建模思路 | PBI实战
大海:一般来说,对于饼图或环形图,会以占比进行降序排序。不过,这里的学历本身的确无法按照高低进行排序。
大海Power
2023/09/09
3630
一个简单的学历排序问题,隐藏3种建模思路 | PBI实战
推荐阅读
相关推荐
生成UUID论英雄:Python、MySQL和Power BI谁强?
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验