本篇文章将简单介绍一下度量值的概念,以及度量值的注意事项,并给出一些管理度量值的方法。由于度量值的计算要依赖外部计值环境,所以度量值的定义与使用在后续文章中再介绍。


  度量值的概念不太好描述,如果硬要给度量值下一个定义的话,我认为是这样的:

” 度量值是一个从基础数据表中抽取数据,并对抽取出来的数据进行转换与处理后,最终聚合成一个标量值的计算过程。其中,抽取数据是通过其所属的计值环境来完成的,聚合则由聚合函数完成。“

  我把度量值定义为一个计算过程(或者说是计算逻辑),因为我们只需要把不同的基础数据提供给度量值,就可以得到不同的结果,这些结果都是遵循着相同的计算逻辑所计算出来的。更简单一点,我们可以把度量值看成一个黑屋子,在黑屋子里有个工具人,我们把数据扔进黑屋子里,那个工具人就会帮我们处理好一切,最终给我们返回一个结果。这样听起来,度量值就好像是类似于编程语言里的自定义函数,我们先定义好这个函数的计算流程,然后输入不同的参数就可以得到不同的结果。是的,它们非常类似。但是在DAX中,我们不需要像调用自定义函数那样手动的输入参数,因为度量值会自动地从它所处的计值环境中获取数据,所以度量值的使用非常依赖于外部计值环境,这就要求我们必须对计值环境有较高的理解,否则就很容易出错或得到一些奇怪的结果。

  通过度量值,我们可以真正地把各种抽象指标对应成具体的度量值对象,再与各个视觉对象所提供的各种计值环境相结合,从而达到一次定义、重复使用、自动计算的效果。

  上面是我对度量值的概念的一些理解与描述,只是一家之言,并不确保正确。对于初学者来说,度量值的概念其实并不重要,只要知道度量值怎么定义,怎么用,有什么注意事项等等内容就可以了。


  下面来看一下度量值的注意事项:

  • 度量值的最终计算结果必须为标量值

  • 度量值定义好后不会立即计算,也不占用内存,度量值只有放入到计算列或视觉对象中才会开始计算,计算过程消耗CPU资源

  • 度量值非常依赖外部计值环境,对于复杂的度量值,最好在搭建好外部计值环境后再去定义度量值的表达式

  • DAX引擎会自动为每一个度量值的引用套上一个CALCULATE函数

  • 行上下文遇到CALCULATE函数时,会发生行上下文转换,变成筛选上下文

  度量值的管理也是一项很重要的工作,在一个实际项目中,往往会新建大量的度量值,如果不对度量值进行一定的管理的话,那么肯定会很麻烦,不利于工作。例如,要在大量的度量值中寻找一个特定的度量值,那么如何才能快速且准确的找到目标度量值呢?所以,下面我将介绍一些常用的管理度量值的方法:

  • 新建一个度量值表,用来存放所有度量值
  • 使用文件夹来对度量值分类
  • 对每个度量值的命名,采用统一标准

  上面介绍的最后一种方法:采用统一标准对度量值进行命名,应该是比较好理解的。你可以按照度量值的用途、性质等等简单做个分类,然后在度量值名称里加上这个分类的前缀或后缀等等,方法不限。而前两种方法的使用,请见下图:


  DAX系列文章中涉及到的案例文件,均已上传到QQ群:344353627,若有需要,可自行加群获取。

  加入Q群