DAX 第八篇:【翻译】数据沿袭(Data Lineage )

数据沿袭实际上存在DAX中的每个角落,它的设计如此好,以至于很多开发人员在不知情的情况使用。

DAX使用数据沿袭来维护关于列值来源的信息。数据沿袭实际上是一个标签(Tag),分配给表中的每一列,此Tag用于标识数据模型中的原始列,即列的值源自于该列。通过数据沿袭,DAX可以利用现有的关系来过滤数据模型。

对列的简单引用会保留数据沿袭,对列执行运算会破坏数据沿袭。

1,对列的简单引用会保留数据沿袭

例如,以下查询返回 Product 表中的不同类别:

EVALUATE VALUES ( 'Product'[Category] )

VALUES 返回的表包含 8 个字符串,然而,它们不仅仅是字符串,DAX还知道这些字符串源自 Product[Category] 列。作为 Product 表的沿袭,它们继承了Product可以通过关系传播来过滤数据模型中其他表的能力,这就是在迭代函数中迭代VALUES ( Product[Category] ) ,创建的行上下文能够转换为过滤 Sales 表的原因。

考虑以下查询,通过把行上下文转换为筛选上下文,计算每个Categoyr的销售额。VALUES函数返回的表之所以能够和Sales表进行关联,原因就是VALUES函数会保持数据沿袭,这使得Product和Sales之间的关系不变。

EVALUATE
ADDCOLUMNS (
    VALUES ( 'Product'[Category] ),
    "Amt", [Sales Amount]
)

2,数据沿袭跟列名和内容无关,仅跟原始列有关系

举个例子,使用DATATABLE创建一个静态表Category,该表和Sales之间没有任何关系,这使得列值“Audio”本身无法过滤 Sales,可以通过运行以下查询轻松检查这一点:

EVALUATE
VAR Categories =
    DATATABLE (
        "Category", STRING,
        {
            { "Category" },
            { "Audio" },
            { "TV and Video" },
            { "Computers" },
            { "Cameras and camcorders" },
            { "Cell phones" },
            { "Music, Movies and Audio Books
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悦光阴

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值