1.建模
Power BI 的一大优点就是无需将数据平展成表。 相反,你可以使用来自多个源的多个表,并定义它们之间的关系 还可以创建你自己的自定义计算并分配新度量值以查看数据的特定段,并在可视化效果中使用这些新度量值以实现轻松建模。
2.度量值工作原理
我们度量值是怎样计算出这个数字的呢?
沿用上一文中求销售量月环比增长率的例子,拿铁小杯在2016年11月的销售量月环比增长率为46%,我们模拟以下度量值在后台运算的过程:
(1)筛选 - 在'咖啡数据表'做筛选。条件为日期=2016年11月,咖啡种类=拿铁,杯型=小
(2)计算 - 按照度量值的公式执行计算。该公式计算环比增长率=2016年11月销售量/2016年10月销售量-1。其中Calculate这个公式具有对第一步中的筛选条件进行增、删、改的功能来产生新的筛选条件,在本例中是另做一个日期为2016年10月份的筛选。
(Divide是相除公式,Previous month是定义日期为上个月即10月份,Calculate是执行计算销售量)
我们来做个总结,度量值的工作分为两大步骤,筛选和计算,先在表中按照设定的条件筛选,再执行计算。所以度量值可以想象成一个带着漏斗的计算器。实际上DAX在运作时也是先筛选后计算的顺序。
(3)原则
我们把再多写一个步骤,把Calculate这个增删改的功能归类到筛选中。
按照这个步骤去思考可以帮助我们纠错,更好地利用度量值和在后面学习DAX公式。需要注意的是在执行这个步骤时,有三个原则是前提:
a.度量值基于源数据来计算,而不是表。
确切地讲,度量值是在关系视图里我们建立的模型中的表来操作。所以你会发现表中的总计与数据透视表里的总计不同,它并不是行或列中的数字加总。比方下图的48%是所有拿铁产品的环比增长率,52%是所有小杯型产品的环比增长率。
b.每一个值都是独立计算的。我们可以去想像DAX在运作时每个输出的值都是独立地按照先筛选再计算的顺序,从头到尾走一遍,即便是总计的输出值也是独立计算的,无一例外。
c.如果筛选的是Lookup表,筛选条件按关系设定影响数据表
注意到我们计算环比增长率的公式引用的[日期]不是来自数据表,而是日期表,Lookup表。我们的数据模型设计在这个时候发挥了作用,想像[日期]从Lookup表顺着我们建立的关系箭头至上而下流入数据表把筛选条件应用到了数据表。可以再做一个实验,把矩阵表中的列由[杯型]替换为杯型表中的[体积],看看按照结果是不是按照原则C的逻辑得出。
度量值是一个带着漏斗的计算器。
3.列与度量值
我们对列和度量值的两个知识点做个小结:
记住不要把列放入图表的"值"中,且我们要避免使用内隐式度量值(依赖自带的计数、汇总选项把列放入“值”中),而使用以公式建立的明确式度量值。
还有一个小建议,不要把同一个公式写两遍。你可能已经注意到在[销售月环比增长率]的公式中,应用了另外一个度量值[销售量],这个度量值引用度量值的方法是DAX公式大力推崇的。你应该定义像[销售量]=sum('咖啡数据'[数量]),这样的度量值,即便它非常简单。