DAX: CalulationGroup (度量值组) 概念与应用

本文介绍了DAX中的CalculationGroup(度量值组)特性,阐述其概念并展示了在Power BI中如何应用,包括建立多维度度量值、切换日期字段以及汇率转换。CalculationGroup简化了度量值维护,增强了报表的计算效率和格式控制灵活性。
摘要由CSDN通过智能技术生成

【前述:根据微软Power BI排期,原本只能在SSAS 2019中使用的DAX特性–CalulationGroup,将在今年的Desktop中发布。本文将围绕CalulationGroup,言简意赅的讲解它的概念,以及它在PBI报表中具体是如何被应用的,能为我们带来什么。】

众所周知,近期国内疫情严重,宅在家里,工作要做,游戏要玩,但对BI技术的探索也不能少。偶然想起半年前Macro Russo大师曾发表数篇关于CalulationGroup的介绍性文章,但当时本人除了Power BI以外,SSAS也只装了2012和2017两个版本,不便亲自实践,只能在理论意义上理解CalulationGroup,现在有时间折腾了,就在个人电脑中又装了一个SQL Server 2019,以SSAS表格模型作为后端,Power BI作为前端来实际体验一下CalulationGroup。

概念

关于CalulationGroup,中文译为“计算组",也称”度量值组",在Macro的此篇文章中有很好的介绍,推荐阅读,本文在概念上仅简明介绍关于它的几个核心知识点:

  • CalulationGroup是一个表,这意味着它同样可以在DAX公式中被引用;它包含一列或两列,第一列即实际意义上的"度量值组",列中的值由多个度量值组成;第二列为可选列,用于对度量值组进行排序。
  • 度量值组中的值,即度量值本身被成为CalulationItem(计算项),它本身代表的是一个上下文环境。SELECTEDMEASURE()函数接受度量值作为参数,在特定计算项的上下文环境中执行计算。
  • 计算项默认对所有度量值有效,但你可以使用ISSELECTEDMEASURE()或SELECTEDMEASURENAME()对计算项的应用范围做出限制,使之仅对特定度量值有效。
  • 允许创建多个度量值组,但必须设定优先级,以使引擎能够理解特定度量值在不同度量值组之下的计算项上下文环境中的计算顺序(如X+1和X * 2, 是先加1还是先乘2,需要设置清楚)。在SSAS中,优先级参数为Precedence, 该值越大,优先级越高。
  • 同一个度量值组中,只能有一个计算项被激活,这是可以理解的,因为在同一个度量值组中,不同计算项不存在优先级关系,一旦多个计算项被同时应用,引擎无法理解哪个计算项被优先应用。

此外,还有一个名为SELECTEDMEASUREFORMATSTRING()的函数,它代表当前度量值的格式字符串,我们暂时无法了解未来CalulationGroup在Power BI中是如何使用的,但在SSAS中,你可以为每个计算项使用DAX表达式来设定其格式字符串。

应用

首先介绍本文使用微软官方提供的AdventureWork2017作为数据源进行建模,主要表格关系如下示&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DAVIS-BI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值