![4dda71695b4708866375d1eacc476ba7.gif](https://i-blog.csdnimg.cn/blog_migrate/a32c19cc269de8f05b4c17daed5c08c5.gif)
本文翻译自国际Power BI大师Alberto Ferrari的文章——《Understanding data lineage in DAX》,该文介绍了数据沿袭的定义以及数据沿袭的执行方法。
数据沿袭是DAX的一个功能,但是大多数开发人员在使用它时并不知道它的存在,本文主要讲解数据沿袭及其如何帮助我们生成更优的DAX代码。
什么是数据沿袭?
首先,数据沿袭是分配给表中的每一列的标记,它标识数据模型中产生列值的原始列。例如,下面的查询返回Product表中的不同类别:
EVALUATE VALUES ( 'Product'[Category] )
结果包含8行,每个类别一行:
![e7cbaf25c1c7bb7feac600372ac1783b.png](https://i-blog.csdnimg.cn/blog_migrate/1dd4b89bdf41eb0455c29339fe6d241a.jpeg)
通过VALUES函数返回包含8个字符串的表。然而,它们不只是字符串。DAX知道这些字符串源自Product[Category]列。因此,作为Product表的列,它们继承了在筛选器通过关系传播之后筛选模型中其他表的能力。这就是上下文转换迭代 VALUES ( Product[Category] )筛选Sales表的原因。我们看下以下查询:
EVALUATEADDCOLUMNS ( VALUES ( 'Product'[Category] ), "Amt