数据模型有三类维度:
你可能听过日期维度,但你可能没有听过空间维度和指标维度。这些都是这里的原创划分,你需要关注这些内容的讲法。
我是 BI 佐罗,今天来和大家分享 “指标维度”。
在财务数据模型中,一类非常重要,常见,特有而在其他模型中可能不存在的就是财务科目或指标。
但这一具体的实例的抽象,就是指标维度,它具有这样的特点:
与此类似的还有例如:电商系统导出的报表,也包含多列指标,例如:浏览次数,浏览人数,跳出时间,访问深度,购买数量,购买金额等。甚至提供给用户一个功能,可以选择不同的指标列进行导出。
对于复杂的场景,可能达到,导出超过 100 个指标以上。
系统导出的报表往往是透视过的,形如:
这样的结构是不能做分析的。
必须进行逆透视。
如果要计算,对比的内容位于列头,就无法进行计算和对比。
其常见特点包括:
这都预示着这些可变的元素不在分析的范畴中。
将列头元素还原到内容区域的过程,称为:数据还原,或逆透视。
它将列头元素还原为内容。内容是可以被分析的。
同时,为这个内容以及对应的值起名,如下:
先来看效果,如下:
这里将 AccountCode 放入矩阵的行;将 KPI 放入矩阵的列;然后定义一个计算度量值来根据选择的参数实现计算。如下:
KPI.TopX =
VAR vTopX = [Var.X.Value]
VAR vItemCurrent =
SELECTEDVALUE( FactKPI[AccountCode] )
VAR vKPICurrent =
SELECTEDVALUE( FactKPI[KPI] )
VAR vTable =
CALCULATETABLE(
ADDCOLUMNS(
SUMMARIZE( FactKPI , [AccountCode] ),
"Value" , [KPI.Value]
) ,
FactKPI[KPI] = vKPICurrent ,
ALLSELECTED( )
)
VAR vTableRanked =
ADDCOLUMNS(
vTable ,
"Rank" , RANKX( vTable , [Value] )
)
VAR vRowSet =
FILTER( vTableRanked ,
[Rank] <= vTopX &&
[AccountCode] = vItemCurrent
)
RETURN
SUMX( vRowSet , [Value] )
其中,以上做法对于初学者可能需要解释为什么,而且看着很复杂,但对于正确学习了 DAX 的伙伴,不能看出其主体框架套路是恒久不变的,如下:
以上五步,是视图层计算的通用模式,在《PBI - 高级》和此前文章中已经详细讲解,这里不再展开。
💡提示 利用一些固有模式使用 DAX 并不复杂,可以极大降低每次要理解上下文或上下文转换的问题。
本文是指标维度系列的一篇入门文章。并结合到一个案例中。后续会进一步讲解指标维度的各种通用思维和模式。
这对财务小伙伴来理解如何使用数据模型应用到财务领域是非常重要的基础。
案例讲解,独到见解