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] должна существовать и должна быть активной связью.