[函数大全] USERELATIONSHIP

  [复制链接]
查看113698 | 回复121 | 2021-2-21 23:06:52 | 显示全部楼层 |阅读模式
指定 DAX 表达式的在计算时所使用的关系。将关系两端的列作为参数可以定义这种关系。

语法
  1. USERELATIONSHIP ( <列 1>, <列 2> )
复制代码

参数属性描述
列 1关系的主键外键
列 2关系的主键外键

返回值

函数不返回任何值;仅用来明确计算过程中使用的关系。

备注

USERELATIONSHIP 只能用于将筛选器用作参数的函数中,例如:CALCULATECALCULATETABLECLOSINGBALANCEMONTHCLOSINGBALANCEQUARTERCLOSINGBALANCEYEAROPENINGBALANCEMONTHOPENINGBALANCEQUARTEROPENINGBALANCEYEARTOTALMTDTOTALQTDTOTALYTD 函数。


关系的状态不重要;也就是说,关系是否活动不影响函数的使用。 即使关系不活动,USERELATIONSHIP 也会使用该关系,并覆盖模型中可能存在但函数参数中未提及的其他任何有效的关系。


如果任何命名为参数的列不属于一个关系,或者参数属于不同的关系,则会返回错误。


如果使用嵌套的 CALCULATE 表达式,并且多个 CALCULATE 表达式都包含 USERELATIONSHIP 函数,那么只有最内层的 USERELATIONSHIP 生效。注意最多只能嵌套 10 个 USERELATIONSHIP 函数

USERELATIONSHIP 引用的表不支持行级别安全性,也就是说你不能对开启行级别安全性的表使用这个函数,CROSSFILTER 也是同理。可以考虑用 LOOKUPVALUE 或者 TREATAS 作为替代方案。

示例

借助 CALCULATE 和 USERELATIONSHIP,我们可以在计算时临时激活发货日期与日期表的关系,执行如下计算:

  1. [Delivered Amount] :=
  2. CALCULATE (
  3.     [Sales Amount],
  4.     USERELATIONSHIP ( Sales[DeliveryDateKey], Date[DateKey] )
  5. )
复制代码


扩展阅读:

理解 USERELATIONSHIP

CALCULATE的另一项功能是在表达式求值期间激活关系。事实上,数据模型可能同时包含活动关系和非活动关系,而两个表之间只允许存在一个活动关系,此时我们需要使用USERELATIONSHIP来激活活动关系


回复

使用道具 举报

佩雯 | 2021-4-25 17:13:27 来自手机 | 显示全部楼层
我只是路过,不发表意见
回复

使用道具 举报

luodan2004 | 2021-6-9 19:58:50 | 显示全部楼层
看起来好像不错的样子
回复

使用道具 举报

yjsl | 2021-7-15 14:40:54 来自手机 | 显示全部楼层
垃圾内容,路过为证。
回复

使用道具 举报

超越 | 2021-10-10 15:31:13 | 显示全部楼层
不错不错.,..我一直很喜欢
回复

使用道具 举报

really | 2021-10-28 17:51:20 | 显示全部楼层
非常好,顶一下
回复

使用道具 举报

泥公仔 | 2021-11-2 18:36:30 来自手机 | 显示全部楼层
好帖必须得顶起
回复

使用道具 举报

斌仔 | 2021-11-5 07:29:57 来自手机 | 显示全部楼层
这么强,支持楼主,佩服
回复

使用道具 举报

tcdyt1234 | 2021-11-11 15:16:07 来自手机 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊
回复

使用道具 举报

coke仔 | 2021-12-6 09:14:29 | 显示全部楼层
忙完了,来看看视频
回复

使用道具 举报

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

本版积分规则