DAX 综合实战案例—简单的中国式报表详解(一)


Hello,小伙伴们大家好 !
继上次的预告☞DAX综合实战案例——简单的中国式报表之后
今天开始正式讲解中国式报表的实现过程。
前方大量表格出没,请做好护眼工作!

模型包含一张记录销售数据的事实表,一张日期表,还有一张维度表即中国式表头。
这次我们先讲中国式表头。
首先,我们来回顾下案例涉及的报表结构:

file

主要是看表头,即列字段。有各月月份,全年累计,去年累计,去年全年,全年累计同比去年全年,全年累计同比去年累计,各维度下又有预算、达成、达成率。
初步梳理后,我们可以知道:这个表头分为两层,第一层的每个维度都有第二层(预算、达成、达成率)。我们要实现这样的表结构,就要把表头给构造出来,然后再对应填充数据即可。

表头其实就是一张维度表,和平时用的维度表区别就是把不同的粒度、类别、维度等放一起了,然后拖动对应的字段即可呈现出来。

按照这样的思路,我们可以建立一张维度表,命名为中国式表头。
它要包含N列,我们可以从最细的颗粒度往前推,一列是要包含预算、达成、达成率,一列要包含表头的第一层月份、全年累计、去年累计…这些,然后再来一列给它们归个类,这样就需要至少三列(L1、L2、L3)。那这张维度表就生成了。
生成维度表可以在EXCEL里制作好再导入Power BI Desktop或Power Pivot模型里,或者用表函数(DATATABLE等)生成,因为涉及的行数比较多,这次就用EXCEL生成的,结构如下:

(由于表格过长,所以分两部分截取)
file

file

把维度字段拖到Desktop画布上可以看看效果:
file

感觉没啥效果?大家先要把字段拖到矩阵里的列位置哦!然后要进行下钻。
file

file

初步看到效果了,然后再下钻,才能看到预算、达成、达成率哦!

file

file

表结构大体是构造出来了,但是字段的顺序非常凌乱,没法看,这时候就需要用到按列排序功能了。

因为L1/L2/L3每一列都包含有重复值,所以每一列都需要单独进行按列排序功能设置。如果最细粒度的列比如L3列没有重复值,那可以添加一个索引列,L3按索引列排序即可。

对于每一列不同的值按想要排序的先后顺序,设置数值,比如L1有三个不重复值,月份、总计和差异,我们想让月份在最左边、差异在最右边,总计居中,那么可以添加一列L1_order,对应的月份为1,总计为2,差异为3。同理,L2、L3也是同样的操作,添加完L2_order和L3_order列后,可以进行按列排序了。
L1列按L1_order列排序,其他同理。这样表头的维度表就不止之前的3列了:
file

file

选中L1列,然后点击建模功能选项卡下的按列排序,然后选择L1_order,这样,L1就会按L1_order列的数值进行排序。

file

把L1拖放到画布里看下效果。
file

没有问题,顺序调整过来了,再依次拖放L2/L3字段进来。

file

file

file

到此,中国式表头就构建好了,接下来就该写度量值了。
限于篇幅有限,我们将在下一篇继续学习,今天就先到这里喽,拜拜~~

file

  • PowerPivot工坊原创文章,转载请注明出处!

Power Pivot工坊