都说度量值是 Power BI 数据建模的灵魂,我们之前的内容中也是一直提到度量值,那到底什么是度量值?它有什么用?这一节,我们将仔细讲解到底什么是度量值。
一、度量值介绍
简单来说,度量值是用DAX公式创建一个虚拟字段的数据值,它不改变源数据,也不改变数据模型,如果你不在报表上使用它,甚至不知道它是什么样子的,而一旦被拖拽到报表上,便会随着各种筛选和维度展现不同的数据,所以度量值一般在报表交互时使用。
上面说了一大堆,说了又好像没说,直接看例子。
先建一个度量值【国内货物成本占比】:
国内货物成本占比 = DIVIDE(-SUM(fba_profit_data_processing_result[国内货物成本]),sum(‘fba_profit_data_processing_result’[总销售额]))
它是个什么,它是个值,从公式就知道,它是两个数据的比值。它在bi中存在样子如下:
它的存在不影响原始数据,也不影响原始数据的模型结构。
接着,我们把度量值放在报表上看看:
你以为就这?接着看
看到没,当给不同的维度(轴)时,展现的计算结果都是基于维度本身的,是不是很奇妙?
现在,回过头看它的定义说明,首先,它是一个计算的值,然后它可以根据给定的维度,展现基于维度上的计算结果,另外它的特点是,不占内存,不改变原始数据,还可以嵌套(一个度量值可以引用另一个度量值。
这里需要提一句,上面说的轴也就时常说的上下文,关于上下文的说明,之前讲解DAX的时候讲解过,大家可以回头看看,这个概念很重要。
二、度量值兄弟----快速度量值
对于刚接触读者,可能编写度量值有点头大,那怎么办呢?别慌,让它兄弟----快速度量值来帮你。顾名思义,快速度量值就是快速的建立度量值,不需要你写,只通过拖拽字段即可实现。老样子,看图看例子。
快速度量计算类型目前有六组,比如聚合、筛选器、时间智能、文本等,每组均包含一系列计算。
1.快速度量值的创建方法:
主页上的计算选项卡:
建模下的计算选项卡:
任意字段右键:
2.快速度量值演示
如下图,构建一个国内销售额相较于10组的其他组的差异
让我们看看DAX公式:
说实话,这公式我看着都头皮发麻,所以这也反映了快速度量值的强大,关于快速度量值,大家要多使用,毕竟比自己写方便快捷的多,当然如果你是大神,当我啥也没说哈!
我们也可以通过看快速度量值的代码,学习我们自己写代码的能力。
三、度量值的管理和格式设置
格式设定
大家应该发现了,建好度量值后,很多时候,并不是我们想要的格式,比如我们最开始建立的那个【国内货物成本占比】度量值,按理来说应该是百分比,但是却是数字,所以,需要我们调整数据格式。度量值格式调整有两种:
格式设定修改:
使用FORMAT函数修改:
国内货物成本占比 = FORMAT(
DIVIDE(
-SUM(fba_profit_data_processing_result[国内货物成本]),
sum(‘fba_profit_data_processing_result’[总销售额])
),
“0.00%”
)
关于更多的关于FORMAT函数的使用,请查看之前的文章【DAX讲解】学习,另外要注意的是,format函数修改过的度量值是文本格式,只能用于显示,不能进行计算。
管理
当我们创建的度量值很多时,会显得很乱,而且我们找起来也很不方便,所以我们通过给不同类的度量值放置不同文件夹,更好管理。效果如下:
通过上面的方式,我们可以很容易找到我们需要的度量值,具体的分类你可以是一页报表放一起,也可以一种数据类型放一起,看个人。具体设置方法如下:
- 点击模型窗口
- 选择度量值
- 给定文件夹名称,相同文件夹的度量值就会在一起。
四、度量值和新建列、新建表的区别
看这里,处理度量值外,还有个新建列和新建表,那是不是一样呢?当然不是。
项目 | 说明 | 特点 |
---|---|---|
度量值 | 一个dax创建的计算值 | 不占内存,不影响原始数据,可以根据上下文展现不同数据 |
新建列 | 数据中新增的一列 | 占内存,影响原始数据,它的上下文是原始表的每一行 |
新建表 | 新建的一个内存表 | 很占内存,相当于一个临时表,通过原表创建要提取指定上下文 |
所以,说白了,所有的区别在于上下文的差异,这也侧面说明了上下文的重要性。一般来说,为了性能考虑,能用度量值解决的问题就尽量不用计算列和新建表,当然如果度量值很复杂时,可以使用新建列和新建表,因为后两者是提前计算好的,不像度量值是每次用的时候计算的。