USERELATIONSHIP
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Указывает связь, используемую в определенном вычислении в качестве той, которая существует между columnName1 и columnName2.
USERELATIONSHIP(<columnName1>,<columnName2>)
Термин | Определение |
---|---|
columnName1 | Имя существующего столбца с использованием стандартного синтаксиса DAX и полного определения, которое обычно представляет многие стороны используемой связи; Если аргументы задаются в обратном порядке, функция переключится перед их использованием. Этот аргумент не может быть выражением. |
columnName2 | Имя существующего столбца с использованием стандартного синтаксиса DAX и полного определения, которое обычно представляет одну сторону или сторону подстановки используемой связи; Если аргументы задаются в обратном порядке, функция переключится перед их использованием. Этот аргумент не может быть выражением. |
Функция не возвращает значения; Функция включает только указанную связь в течение длительности вычисления.
USERELATIONSHIP можно использовать только в функциях, которые принимают фильтр в качестве аргумента, например: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEQUARTTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD и TOTALYTD.
USERELATIONSHIP нельзя использовать при определении безопасности на уровне строк для таблицы, в которой включена мера. Например, возвращает ошибку,
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
если для DimCustomer определена безопасность на уровне строк.USERELATIONSHIP использует существующие связи в модели, определяя связи по столбцам конечной точки.
В USERELATIONSHIP состояние связи не важно; То есть, является ли связь активной или не влияет на использование функции. Даже если связь неактивна, она будет использоваться и переопределяет любые другие активные связи, которые могут присутствовать в модели, но не упоминаются в аргументах функции.
Ошибка возвращается, если любой из столбцов, именованных как аргумент, не является частью связи или аргументы принадлежат разным связям.
Если для объединения таблицы A к таблице B в вычислении требуется несколько связей, каждая связь должна быть указана в другой функции USERELATIONSHIP.
Если выражения CALCULATE вложены, а несколько выражений CALCULATE содержат функцию USERELATIONSHIP, то самой внутренней функцией USERELATIONSHIP является тот, который преобладает в случае конфликта или неоднозначности.
До 10 функций USERELATIONSHIP могут быть вложенными, однако выражение может иметь и более глубокий уровень вложенности. Так, следующий образец выражения имеет три уровня вложенности, но только два уровня с точки зрения USERELATIONSHIP:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))
.Для связей 1:1 USERELATIONSHIP активирует связь только в одном направлении. В частности, фильтрация будет направлена от таблицы со столбцом columnName2 к таблице со столбцом columnName1. Если нужно реализовать двунаправленную фильтрацию, вы можете использовать две функции USERELATIONSHIP с противоположными направлениями в одном вычислении. Например,
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
.
В следующем примере показано, как переопределить значения по умолчанию, активные, связи между InternetSales и таблицами DateTime. Связь по умолчанию существует между столбцом OrderDate в таблице InternetSales и столбцом Date в таблице DateTime.
Чтобы вычислить сумму интернет-продаж и разрешить срезы по shippingDate вместо традиционного заказа, создайте меру [InternetSales by ShippingDate], используя следующее выражение:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
Связи между InternetSales[ShipmentDate] и DateTime[Date] должны существовать и не должны быть активными связями; Кроме того, связь между InternetSales[OrderDate] и DateTime[Date] должна существовать и должна быть активной связью.