USERELATIONSHIP 函數 (DAX)
將特定計算中要使用的關聯性指定為 columnName1 及 columnName2 之間所存在的關聯性。
語法
USERELATIONSHIP(<columnName1>,<columnName2>)
參數
columnName1
現有資料行使用標準 DAX 語法且為完整的名稱,這通常表示要使用關聯性的多邊;若引數是以反向順序提供,則函數會在使用引數前先將其交換。 此引數不能為運算式。columnName2
現有資料行使用標準 DAX 語法且為完整的名稱,這通常表示會使用關聯性的一端或查閱端;若引數是以反向順序提供,則函數會在使用引數前先將其交換。 此引數不能為運算式。
傳回值
此函數不傳回任何值;此函數只在計算的持續時間內啟用指定的關聯性。
備註
USERELATIONSHIP 僅可用於將篩選做為引數的函數,如:CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTD 及 TOTALYTD 函數。
USERELATIONSHIP 會使用模型中的現有關聯性,並由其結束點資料行識別關聯性。
在 USERELATIONSHIP 中,關聯性的狀態不重要;也就是說,關聯性是否使用中並不影響此函數的使用。 即使關聯性處於非使用中狀態,則會使用此關聯性覆寫模型中有可能出現但函數引數中未提及的任何其他使用中關聯性。
如果任何資料行命名的引數不是關聯性的一部分,或者引數屬於不同的關聯性,則會傳回錯誤。
如果在計算中需要多個關聯性聯結資料表 A 和資料表 B,每個關聯性必須在不同的 USERELATIONSHIP 函數中指定。
如果 CALCULATE 運算式是巢狀的,並且有多個 CALCULATE 運算式包含 USERELATIONSHIP 函數,在遇到衝突或模稜兩可的情況時,則以最內部的 USERELATIONSHIP 為優先。
最多可以有 10 個巢狀的 USERELATIONSHIP 函數;但是,運算式應該有更深層的巢狀結構,例如: 下列範例運算式為 3 層巢狀,但 USEREALTIONSHIP: =CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])) 僅 2 層巢狀。
範例
下列範例示範如何覆寫 InternetSales 和 DateTime 資料表之間的預設使用中關聯性。 該預設關聯性存在於 InternetSales 資料表的 OrderDate 資料行和 DateTime 資料表的 Date 資料行之間。
若要計算網際網路銷售額總和,並允許依據 ShippingDate (而不是傳統的 OrderDate) 配量,則需要使用下列運算式建立量值 [InternetSales by ShippingDate]:
=CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
在 PowerPivot 中:將新量值拖曳至右窗格中的 [值] 區域,將 InternetSales[ShippingDate] 資料行拖曳至 [資料列標籤] 區域;現在,就是依據出貨日期,而不是在這些範例中常見的依訂單日期,來配量網際網路銷售額。
若要讓這個範例正常執行,InternetSales[ShipmentDate] 和 DateTime[Date] 之間的關聯性必須存在,並且不應是使用中關聯性;另外,InternetSales[OrderDate] 和 DateTime[Date] 之間的關聯性也應存在,並且應是使用中關聯性。