[知识体系] 关系函数

  [复制链接]
查看184168 | 回复155 | 2021-2-21 19:31:10 | 显示全部楼层 |阅读模式
为了便于在公式内部操作模型关系,DAX 提供了两个非常有用的函数:RELATEDRELATEDTABLE.


你已经知道,计算列可以在定义它的表中引用列值,因此,在销售表中定义的计算列可以引用所在表的任何列。但是,如果必须引用另一个表中的列,该怎么办呢?通常,除非模型中定义了两个表之间的关系,否则不能使用其他表中的列。如果两个表建立了关系,那么可以使用 RELATED 函数访问相关表中的列。

从关系的多端访问一端

例如,你可能希望在销售表中定义这样一个计算列,该列检查已销售的产品是否属于“手机”类别,当满足条件时,适当缩减标准成本。要计算这样一个列,你必须使用一个条件来检查产品类别的值,该值不在销售表中。然而,模型中的关系链从销售表开始,通过产品表和产品子类别表到达产品类别表,如下图所示。


7135211936391.jpeg

Sales 表和 Product Category 表通过关系链接到一起


从原始表到目标表之间需要经过多少步并不重要,DAX 将遵循完整的关系链,并返回相关列值。因此,可调整成本(AdjustedCost)列的公式为:
  1. Sales[AdjustedCost] =
  2. IF (
  3.     RELATED ( 'Product Category'[Category] ) = "Cell Phone",
  4.     Sales[UnitCost] * 0.95,
  5.     Sales[UnitCost]
  6. )
复制代码

在一对多关系中,RELATED 可以从多端访问一端,因为在这种情况下,关联表中只有一行(如果有的话)。如果不存在满足条件的行,RELATED 返回空。

从关系的一端访问多端

如果你希望从关系的一端访问多端,那么 RELATED 就不适用了,因为另一端(关系的多端)可能存在许多行对单个行可用。在这种情况下,可以使用 RELATEDTABLERELATEDTABLE 返回一个表,其中包含与当前表相关的所有行。例如,如果你想知道每个类别中有多少个产品,你可以使用以下公式在产品类别表中创建一个列:
  1. COUNTROWS ( RELATEDTABLE ( Product ) )
复制代码

此计算列将显示每个产品类别的相关产品数量,如图所示。


7135211936392.jpeg

使用 RELATEDTABLE 计算每个类别的产品数量


就像 RELATED 一样,RELATEDTABLE 沿着模型关系链,总是从一端指向多端。
RELATEDTETABLE 函数执行从行上下文到筛选上下文的转换,并在生成的筛选上下文中计值表达式。它是 CALCULATETABLE 的简化版,没有其他筛选器,只接受表引用而不接受表达式。


上下文转换与关系函数

关系函数需要一个活动的行上下文才能生效。如果移除计算列的行上下文,那么它们将不再工作。例如,下面的计算列会报错,因为 CALCULATE 执行上下文转换移除了行上下文:
  1. Sales[Wrong] = CALCULATE ( RELATED ( Product[Product Name] ) )
复制代码

当你学习了扩展表的概念之后,会了解到扩展表包含了关系。实际上,关系就是在扩展表中运行的,一旦你开始用扩展表的方式思考,就不再需要考虑关系了。在刚开始学习 DAX 的当前阶段,我们对 RELATED 的认知是它允许访问相关表中的列。更准确的理解是,RELATED 允许你访问扩展表的相关列。


扩展阅读:


理解关系
回复

使用道具 举报

auqa | 2021-4-24 17:54:37 | 显示全部楼层
OMG!介是啥东东!!!
回复

使用道具 举报

bainian | 2021-6-14 08:13:38 | 显示全部楼层
OMG!介是啥东东!!!
回复

使用道具 举报

捷达仔 | 2021-6-16 23:02:17 来自手机 | 显示全部楼层
不错 支持下
回复

使用道具 举报

volcano | 2021-9-30 14:41:43 | 显示全部楼层
我擦!我要沙发!
回复

使用道具 举报

痴情浪子 | 2021-10-7 20:43:38 来自手机 | 显示全部楼层
支持支持再支持
回复

使用道具 举报

蚊少 | 2021-10-16 08:56:49 | 显示全部楼层
云发教育是我遇到最好的机构,和其他机构有本质区别
回复

使用道具 举报

ccbi8888 | 2021-10-24 09:16:13 来自手机 | 显示全部楼层
LZ帖子不给力,勉强给回复下吧
回复

使用道具 举报

美女的猪仔 | 2021-10-26 18:20:30 | 显示全部楼层
我也来支持一下,很喜欢这里老师
回复

使用道具 举报

心怡 | 2021-11-4 16:45:40 来自手机 | 显示全部楼层
占位编辑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则