Power BI DAX 在语言级别对于复用的支持是很弱的,导致实际在写 DAX 的时候需要大量的 复制+粘贴,而往往一处改动,又要去全部修改所有类似的度量值,这种纯体力还容易出错,错了还找不到的问题将成为梦魇,从概率的角度,一定会出错的,一定会找不到的,一定会在生产环境某天被最终用户发现的,然后就有得搞了。先来看本案例:
再看下已经开始产生重复的度量值集合:
其中,销售类指标是基础指标集合,其他的分析是基于此的,这种层次结构便于将
业务领域的主题
映射为
Power BI DAX度量值
,可以满足工程做法。问题是随着维度的增加,可能出现
度量值爆炸
的现象(度量值海量增加)。由于其中存在大量类似的逻辑,一旦某一处逻辑需要修改,就需要全部调整,出现凭概率就会犯的错误。解决这种问题的最好方法就是:微软继续增强DAX对复用的支持,可惜没有。在此前,则可以采用如下这种套路:
【第一步】让用户选择需要使用的维度
【第二步】再让用户选择使用的度量值
【第三步】进行计算
理论上,通过上述三步可以实现一个度量值来替代海量度量值的方法,并称该方法为:
全动态度量值
。就是在用户对 维度 和 指标 等参数需要在实时做出选择后的实时计算。这充分体现了Power BI DAX的强大,在此前的多篇标题为《xxx全动态xxx》文章中经常采用这种方法,来将PowerBI的动态性提升到最大限度,但这种极致性通常也可能产生副作用: