USERELATIONSHIP
指定要在特定计算中使用的关系,作为 columnName1 and columnName2 之间存在的关系。
语法
USERELATIONSHIP(<columnName1>,<columnName2>)
parameters
术语 | 定义 |
---|---|
columnName1 |
使用标准 DAX 语法 and 完全限定的现有列的名称,通常表示要使用的关系的多端;if 参数按相反顺序给出,函数会在使用参数之前交换参数。 此参数不能是表达式。 |
columnName2 |
使用标准 DAX 语法 and 完全限定的现有列的名称,通常表示要使用的关系的一侧 or 查找端;if 参数按相反顺序给出,函数会在使用参数之前交换参数。 此参数不能是表达式。 |
返回 value
该函数不返回 value;该函数仅为计算 duration 启用指示的关系。
备注
USERELATIONSHIP 只能在采用 filter 作为参数的函数中使用,例如:CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTDandTOTALYTD 函数。
为包含 measure 的表定义行级别安全性时,无法使用 USERELATIONSHIP。 例如,
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
将为 DimCustomer 定义 errorif 行级别安全性。USERELATIONSHIP 使用模型中的现有关系,通过它们的终点列标识关系。
在 USERELATIONSHIP中,关系的状态 not 重要;也就是说,关系是否处于活动状态 ornot 确实 not 影响函数的使用。 Even if 关系处于非活动状态,它将 and 替代模型中可能存在的任何其他活动关系,但函数参数中 not 提及。
if 作为参数命名的任何列 notor 参数属于不同关系的关系的一部分,将返回 error。
If 多个关系才能将表 A 联接到计算中的表 B,必须在不同的 USERELATIONSHIP 函数中指示每个关系。
If CALCULATE 表达式是嵌套的,and 多个 CALCULATE 表达式 containsUSERELATIONSHIP 函数,那么最内部的 USERELATIONSHIP 是在冲突 or 歧义的情况下占上风的表达式。
最多可以嵌套 10 个 USERELATIONSHIP 函数;但是,表达式可能具有更深层次的嵌套,即。以下 sample 表达式嵌套 3 个级别,但对于 USERELATIONSHIP只有 2 个级别:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))
。对于 1 对 1 的关系,USERELATIONSHIP 只会以一个方向激活关系。 具体而言,filters 只能从 columnName2的表流向 columnName1表。 If 需要双向交叉筛选,可以在同一计算中使用具有相反方向的两个 USERELATIONSHIP。 例如,
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
。
示例
以下 sample 演示如何替代 InternetSales and DateTime 表之间的默认活动关系。 在 InternetSales 表中的 OrderDate 列之间存在默认关系,and DateTime 表中 Date 列。
若要 calculate Internet 销售 andsum 允许通过 ShippingDate 而不是传统的 OrderDate 进行切片,请使用以下表达式创建 measure[InternetSales by ShippingDate] :
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
InternetSales[ShipmentDate] and DateTime[Date] 之间的关系必须存在,and 应 not 为活动关系;此外,InternetSales[OrderDate] and DateTime[Date] 之间的关系应存在,and 应为活动关系。