Функция 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 являются вложенными и функция USERELATIONSHIP входит в состав нескольких выражений CALCULATE, то в случае возникновения конфликтов или неопределенности приоритет имеет функция USERELATIONSHIP максимального уровня вложенности.
Допускается вложенность до 10 функций USERELATIONSHIP, но выражение может иметь более глубокий уровень вложенности. Например, в следующем образце у выражения имеется 3 уровня вложенности, а у функции USEREALTIONSHIP только 2: =CALCULATE(CALCULATE( CALCULATE( <выражение>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).
Пример
В следующем образце показано переопределение активной связи по умолчанию между таблицами InternetSales и DateTime. Связь по умолчанию существует между столбцом OrderDate в таблице InternetSales и столбцом Date в таблице DateTime.
Чтобы вычислить сумму интернет-продаж и разрешить создание среза по столбцу ShippingDate вместо обычного OrderDate, необходимо создать меру [InternetSales по ShippingDate] с помощью следующего выражения:
=CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
В PowerPivot перетащите новую меру в область Значения на правой панели, перетащите столбец InternetSales[ShippingDate] в область Метки строк. Теперь для таблицы «Продажи через Интернет» создан срез по дате поставки, а не по дате заказа, что обычно представлено в данных примерах.
Для работы этого примера необходимо, чтобы существовали связи между столбцами InternetSales[ShipmentDate] и DateTime[Date], которые не должны быть активными. Кроме того, должна существовать активная связь между столбцами InternetSales[OrderDate] и DateTime[Date].