图6.1 Power BI视觉对象的字段存储桶 虽然Power BI提供了许多方法来创建引人注目的报表,但有时你希望超越这些方法。本章介绍通过DAX动态更改数据绑定的两种方式的方法。...将动态标签与动态度量值相结合。 首先介绍一下我们将使用的Power BI模型。 6.1商业案例 自行车公司QuantoBikes使用Power BI模型来跟踪其销售情况。...所有其他关系位于两个表中具有相同名称的ID列之间。 销售数据可提供许多不同的视图,在同一报表页上为每个视图放置单独的视觉对象会导致报表单一而并非有见地。...第一列包含指示标签类型(国家/地区、零售类型或组)位于行中的指示器,第二列包含三列中的值。第一列可用于选择标签类型。然后,DAX度量值将实现与三个原始表之一的动态关系。...图 6.9 按国家/地区显示销售额的DynAxis度量值 图6.10 按产品组显示销售额的DynAxis度量值 与动态计算的度量一样,我们使用SWITCH来确定所做的选择,代码如下。
因此,推荐使用SVG自定义,《Power BI 优化表格矩阵中的条形图》给出了度量值写法,当时Power BI尚不支持宽度高度不同参数,把度量值中的宽度值改大些即可得到下图的效果。...《Power BI DAX设计扇形图、环形图》介绍了环形图的一种制作原理。...或者在表格列中使用大头针图,《Power BI表格矩阵实现大头针图的极简方案》介绍了使用UNICODE制作大头针图的技巧,当然复杂的格式还是需要纯SVG制作,制作方法同条形图。...以上进行了拆分讲解,实际应用时可以把所有图表放在同一个表格,如下图所示。示例中的条形图没有添加数据标签,有此种需求时,图表度量值加入text标签即可。...从目前Power BI的更新进展看,DAX(强大的计算力)和SVG(强大的绘图力)结合的制图方式将发挥越来越重要的作用,内置表格矩阵成为更加可靠的可视化视觉对象。
对于Power BI使用者来说,报告最后更新的日期时间是个挺重要的信息。在报告中一般显示在四个边角处,如下图所示。...这种方法的不足在于,以下三个场景可能造成时间的时区不统一: 在本地刷新后发布到Power BI Service,返回的是本地电脑的时间; 在云端设置计划刷新(不涉及网关),返回的是云端服务器所在国家的时间...方法二 DateTimeZone.FixedUtcNow() DateTimeZone.SwitchZone(DateTimeZone.FixedUtcNow(),8),通过加减时差来避免时区差异产生的问题...这种方法也有弊端,即实行冬夏令时的国家地区,时差是不固定的,每年需要调整2次。 方法三 调用接口 通过网站(如http://worldclockapi.com/)接口,生成固定统一的时间。...报表界面展示 在Power BI报表界面上显示该日期,最好用DAX建一个度量值,方便后续其他度量值的调用。度量值写法如下所示。
DAX 即数据分析表达式,是 Microsoft Power BI、Microsoft Analysis Services 和 Microsoft Power Pivot for Excel 的编程语言...从那时起,DAX 在 Excel 社区(使用 DAX 在 Excel 中创建 Power Pivot 数据模型)和商业智能(BI)社区(使用 DAX 在 Power BI 和 Analysis Services...您只需要按你知道的语言的比较即可,然后阅读最后一节“DAX 之于 Power BI 用户”,然后再在下一章正式开始学习 DAX 语言。 [!...如图 1-1 所示,Product 表和 Product Subcategory 表之间的关系。一个子类别包含许多产品,而一个产品只有一个子类别。...DAX 是 Power BI 的原生语言,如果您没有 Excel,SQL 或 MDX 的经验,Power BI 将是您接触 DAX 的第一个地方。
实际案例,在跨国企业常常涉及到不同国家文化背景的人查看同一份报告,虽然英语是通用语言,但有时候确实需要定制成客户本地的,那么如何仅仅制作一次报告,不同的用户登录的时候看到的是不同的语言呢,答案是可以实现的...DAX 引擎版本在本月已经升级到1465,值得一提的是SSAS 2017的版本是1400,也就是说 Power BI Desktop 中总会运行最新的引擎版本。...(请各自脑补DAX基础和PBI基础知识) 扩展思考:当不同的用户登陆Power BI Service后可以根据预先的配置而显示不同的语言吗?...但不妨碍我们来感受一下,首先在微软官方的博客可以免费下载这个工具,然后安装好运行: 我们将他与分析服务连接,并构建一个简单的报告,如下: 点击运行来预览: 没错,这是 Power BI Report Builder...第一次发布,还有超级多的BUG,但不影响我们去判断这个事物的未来,我们可以注意到,它可以导出成各种格式的文件,如下: 来看看BI工具排名第一的功能,导出到Excel,如下: 怎么样,惊呆了吧,这个功能不要甩
在 Excel 中,从“上面的行”中获取一个值是很常见的。当你意识到 Power BI 模型表中的行之间没有严格的顺序时,就很容易理解这个问题了。 只有少数 DAX 函数专门用于在行上下文中工作。...简而言之,查询上下文是指在 Power BI 模型中选择的行的集合,基于这个集合进行 DAX 公式的计算。恰当地区分查询上下文中两个密切相关但独立的元素是很有必要的。...表之间的间接关系路径也是如此:Power BI 模型只允许在模型中的任意两个表之间有一个活动路径。当然,只有当你需要时可以激活这些非活动关系时,这才有用。...但请注意:两者之间存在着技术差异。...Cities 表中找到的所有唯一的国家/地区和州/省组合。
DAX-第4章 上下文和筛选 Power BI 学谦 终于,第五章来了。...相反,我们将重点放在 Power BI 模型中的安全性上。常规的方案是,使用同一报表的两个用户根据其权限设置将看到不同的报表内容。 本章涵盖以下几个主题。...使用安全角色SelectCanada后,它筛选加拿大(3)上的Country列(国家/地区列),fSales表将通该关系进行筛选。...如果用户获得了 Power BI 模型的设计权限,他们可以创建自己的报表 (这是使用 Power BI 的过程中可能经常遇到的情况), 还可以创建自己的 DAX 度量值。...若要使跨报表钻取正常工作,只需要确保用于钻取操作的两个报表中的字段具有相同的名称,以便 Power BI 可以将它们识别为同一个字段。有趣的是,这些报表不必使用相同的底层模型。
概述 《PowerBI 重构》系列(代指:Power BI DAX 重构系列)将是一系列新的话题,旨在将PowerBI 技艺提升到更高的阶段。...总计行可以按全局All或用户所选all 总计行的重要性 可以看出,Power BI自带的总计效果是远远不够的。...2、在 按产品子类别 分析 销售额增长率 的 全部 指的是 用户所选择的全部子类别(以用户的每次选择作为全部),因此我们需要用DAX ALLSELECTED函数。...ALLSELECTED 函数作为DAX函数中最复杂的一个,对,你没看错,是最复杂的,没有之一,复杂度超过CALCULATE,但是用起来感觉不到,此处只是指出,但不展开,当然在这里的案例也遇不到这种复杂。...DAX公式数 = 可能的维度数 × 可能的度量值数 × 总计方式(2个) 以 5 个维度以及 10 个度量值来看,一共就要写 100 个DAX公式了。
这里的确不是 BUG,而是 Power BI 的 DAX 引擎就是这么设计的,这里触发了 DAX 在计算时候的一个机制导致了这种效果。这个机制叫:AutoExist。...不难看出: 在 Power BI 中使用任何图表都会自然的触发条件 2,而用户的确常常会做切片器,而且来自同一个表的不同的列,那么,也很容易触发条件 1,这样一来,这个叫 AutoExist 的机制是很容易被触发的...因此,Power BI 用户,尤其是编写了 DAX 的公式,大概率会遇到这个问题的。...总结 AutoExist 是内置于 DAX 底层运算中用于提升性能的技术特性,它在绝大多数时候都扮演了积极且重要的角色,但有时可能会导致副作用,这种可能导致副作用的诡异现象的触发条件常常如下: 度量值的公式中有修改...时间来到 2022 年,Power BI 的学习方式已经不是几年前,一起高喊 DAX 牛逼的日子,而是精细化的拆解出一套业务人员与技术人员的有效区隔,业务人员应该将注意力集中在业务本身,以及如果使用 DAX
两个SUM写法虽同,但本质截然不同。 这就好比美国版的“特朗普”和中国版的“特朗普”虽然音声和手势类似,但只是形式上的某种类似。...可以用一个图示表示这个过程(我在“SQL别裁新解”中的图例): 一旦理解了窗口函数和子查询之间的相关性,我们甚至可以用子查询来完成任何一种窗口函数的计算,并进而理解窗口函数在逻辑上的简洁意义。...四、 结语:致 2026 的技术远航 数据分析的技术工具繁多,但底层逻辑万变不离其宗:维度、度量(指标),以及计算所依赖的详细级别(颗粒度)(在 Power BI 中被称为上下文,但我个人不喜欢这个容易误解的词...我计划从 2026 年 启动一个更具雄心的项目——“SQL、Tableau 与 DAX 的系统性逻辑对比”,并最终推出《 SQL 别谈新解》和《 DAX 别裁新解》两本小册子(能否出版则依赖于更多的context...无论你是精通 SQL 的数据库专家,还是擅长 DAX 的 Power BI 达人,亦或是深耕 Tableau 的分析专家,你都会发现,我们虽然用着不同的方言,但在数据逻辑的维度里,我们其实在说同一种思考逻辑
;前者是性能的积极因素,后者通常则是消极因素——不同的优化能力,体现了分析师、工具之间的差异。...如果把上面的3行数据扩展到3000万行,性能之间的巨大差异往往会导致数据库资源长期占用,甚至拖垮一个分析工具。...CALCULATE(聚合表达式, FILTER条件) 通过在每一个度量中单独指定filter计算条件,DAX可以在引擎中将其优先级提前,从而避免了SUM+IF的低下性能。...Power Bi把筛选条件和分类维度都视为filter context,这一逻辑影响了业务用户理解问题中的层次关系。...也正因此,我个人之见,Tableau是业务方向的,Power BI是技术方向的。
Power BI Desktop中的 DAX 查询视图已经正式发布1年时间了,并且有了copilot的加持,一句话直接生成复杂 DAX 度量值和查询变得十分容易: 震撼发布:使用Copilot自动生成DAX...在 Power BI 中,DAX 公式用于定义不同类型的计算,例如度量值或计算列。另一方面,DAX 查询可用于从语义模型返回数据。...1.Web 中的 DAX 查询视图需要用户在启用的 Power BI 服务(预览版)中编辑数据模型。这可在 Power BI > 常规>工作区设置中找到。...现在,您可以在 Web 中使用 DAX 查询视图编写 DAX 查询。 DAX 查询视图已在 Power BI Desktop 中提供,大多数功能与 Web 相同,但存在一些差异。...完成后,我可以看到模型中尚不存在此度量值,因为在第 6 行和第 7 行之间显示的 CodeLens 操作文本提示我更新模型:添加新度量值。
若要在 Power BI 模型中创建一个简单的计算表,可以使用表构造函数。如下的表达式仅由大括号之间的值列表组成,它创建一个包含一列的表。...实际上,我们在 Power BI 模型上执行的大部分工作都可以归结为设计并应用 DAX 度量值。 在 Power BI 报表中使用事实表中的数字列时,列的值将被执行聚合运算。...这是 DAX 度量值的额外优势的一个简单示例,使用适当的 DAX 函数而不是对列进行基本聚合。 DAX 度量值应当作为您为 Power BI 模型提升智能水平的默认选项。...度量值是高度动态的,它们不会使模型变得更臃肿,并且没有哪个计算不能通过度量值来实现。 根据经验,除非你找到了足够好的理由,否则,尽量别碰计算列和计算表!...事实表包含要聚合的主要数据,但不在报表中使用其中的列,处于隐藏状态。 筛选表(或维度表)包含要筛选模型结果的所有属性。 度量值表不包含任何数据,只包含 DAX 度量值,位于字段列表的顶部。
image.png 3.如何用Power BI中管理数据关系呢? 首先,将需要的表导入Power BI,可以看之前的内容:如何导入数据。...导入后,在画布的左边的“模型视图”中,可以显示每个表及其列之间的关系。 image.png 一般Power BI会自动识别相同字段进行连接(如下图)。...image.png 在公式栏中,输入定义度量值的 DAX 表达式。DAX表达式类似于Excel里的函数,DAX 表达式里面包括了很多常用的函数,方便分析使用。...image.png 在输入DAX 表达式时,Power BI 会显示这个函数的作用,同时还会显示表格里面的字段给你选择。例如下图输入DAX 表达式是SUM,表示是求和函数。...9.总结 通过案例,我们学会了Power BI的以下知识点: 1)如何管理数据关系 2)创建计算列 3)如何隐藏列 4)创建度量值 5)创建计算表 6)浏览基于时间的数据 推荐:什么样的人升职加薪快?
可以看出来: 每个类别形成了对比,类别是立地的柱子。 每个细目是类别之间对比的项目。 细目的排序是按照差异从正数的大到负数的小来排列的,无法自定义。...那么,我们就得到了一个结论: 如果不考虑差异项可以自定义顺序的场景,是可以用原生 Power BI 瀑布图做出的。 下面给出终极方案,该方案是全网首发滴。...第二步:DAX 自定义差异细项 用 DAX 自定义差异细项如下: Waterfall-Body-ByIndustry = DISTINCT( Customer[Industry] ) 这个用来作为首末端点之间的内容...第三步:DAX 自定义度量值 这是最精妙的一步,这里存在一个非常非常重要的技巧,我们先来看 DAX 实现,如下: Waterfall.Value.ByIndustry = VAR vPoint = SELECTEDVALUE...它的差异项并非是按照月份来排序的,而是按照贡献度来排序的。 也就是说: Power BI 的原生瀑布图在设计的时候就是考虑到它对贡献度的分析。
: 销售额同比增长率排名(按全部,按所选全部,按地区,按类别) 销售额同比增长率排名增长(按全部,按所选全部,按地区,按类别) 销售额占比(按全部,按所选全部,按地区,按类别) 因此,在PowerBI中会写度量值只是基础...Power BI DAX 在语言级别对于复用的支持是很弱的,导致实际在写 DAX 的时候需要大量的 复制+粘贴,而往往一处改动,又要去全部修改所有类似的度量值,这种纯体力还容易出错,错了还找不到的问题将成为梦魇...先来看本案例: 再看下已经开始产生重复的度量值集合: 其中,销售类指标是基础指标集合,其他的分析是基于此的,这种层次结构便于将业务领域的主题映射为Power BI DAX度量值,可以满足工程做法。...这充分体现了Power BI DAX的强大,在此前的多篇标题为《xxx全动态xxx》文章中经常采用这种方法,来将PowerBI的动态性提升到最大限度,但这种极致性通常也可能产生副作用: 一旦用户需求产生对某个维度或指标的局部修改...让我们不仅想到:Power BI , Simple but not easy.
效果如下: Power BI DAX表达式: 以及: 小结: PowerBI DAX 计算可以非常容易地实现效果。 PowerBI 可视化层无法显示用户鼠标点击点位。...效果如下: Power BI DAX 表达式: 小结: PowerBI DAX 计算可以非常容易地实现效果。 Tableau 有更加丰富的报告层计算功能,可以通过设置完成。...这里,我们使用 Superstore 销售数据进行加权平均: 在 PowerBI 中,模拟类似的需求,实现按子类别销售额利润率加权来计算类别的平均销售额,效果如下: PowerBI DAX 表达式可以直接由快速度量值给出...各时段与平均值的差异 您可能更想看到季度销售额与当年平均值(而不是绝对数)的差异。此处显示了与当年平均值和绝对订单数之间的差异。...后记 本文让我们清晰地看到 PowerBI 的成长空间,但不妨碍我们用发展的眼光继续选择 PowerBI 来补充自己的 BI能力,很多伙伴反应认为自己刚刚接触 PowerBI,感觉已经错失了最好的学习时机
概览 我们对本月的更新感到非常兴奋!我们发布了两个最重要的社区请求:Power BI Pro的增量刷新和分层切片器。此外,我们还对新功能区和一些新的DAX功能进行了一些改进。...单个图表显示单个测量值,而移动范围图表显示一个样本与下一个样本之间的差异。个体图和移动范围图也用于监视过程改进理论的效果。 移动范围图通过查找连续样本之间的差异来创建要绘制的范围值。...此图表显示了集中趋势的指示(图表数据居中)。X条形图可以使您了解子组之间的差异。...U型图显示了过程(以每个项目或一组项目的不合格品数量来衡量)随时间变化的方式。不合格是在采样子组中发现的缺陷或出现。可以将它们描述为存在但不应该存在的任何特征,或者描述为不存在但应该存在的任何特征。...分层切片器可以这么玩: 但会出现一个问题: 选择子类别时,类别是不被选的;而在分层切片器中,却被视为直接选择,如下: 这点差异可以说是非常重大。
小勤:用个例子给我讲讲Power BI怎么用的呗。...大海:好吧,Power Query你学了那么多,Power Pivot也基本入门了,Power BI也可以同步开始学了,反正PQ和PP的知识除了操作上有一点点儿区别外,都是能在Power BI里直接用的...小勤:这不是和Excel里的Power Query一模一样的吗?虽然披了个黑乎乎的马甲,但不就是那些功能嘛。 大海:就是!其实PBI里的数据整理过程就是使用PQ的过程。...,然后再将两个表之间匹配的字段拖拽一下。...甚至有的时候,因为度量值太多了,可以考虑建一张单独的空白表,里面专门放度量值,这根据实际需要或按照自己的喜好选择就行了。 构建度量的函数就是PowerPivot里的DAX函数。
,也就是从东北到华南之间的所有地区。...但Power BI发送给DAX的只是一个DAX引擎,并不存在当前视觉对象的概念。...'[地区]) ) ) 图5 度量值test返回的结果都是400 在度量值test中引入新的迭代器SUMX,迭代所有的地区。...在ALLSELECTED之前可以出现的唯一迭代是由查询引擎(主要是Power BI客户端)创建的最外层迭代。在迭代内部调用ALLSELECTED的度量值会使计算更加复杂。...参考资料: [1] DAX权威指南(https://item.jd.com/13168782.html) [2] 深入理解 Power BI DAX 中 ALLSELECTED 的影子筛选器(https