Рвав-рвав,
сегодня мы рассмотрим использование такой конструкции, как Userelationship. При помощи данной функции можно переопределить активную связь на время выполнение запроса. Синтаксис указанной функции из серии «проще практически не бывает», однако, покопавшись в памяти, собака-вспоминака вспомнил, что встречал в одном сообществе такую вот задачку: «Так и так, хочу в одну таблицу подтянуть столбец из другой таблицы (по принципу работы RELATED), но при этом активную связь надо переопределить, не перестраивая связи в модели…»
Пример
Имеется базовый набор данных, содержащий только ID необходимых нам записей:
Для вашего удобства, на иллюстрациях мы будем отображать только часть информации, а именно первые 10 записей.
Дополнительно, у нас есть еще один набор данных, который является справочником, содержащим текстовое описание значений, присутствующих в наборе данных:
Для вашего удобства, на иллюстрации показаны только те записи справочника, которые соответствуют только первым10 записям набора данных.
Задача
Дополнить набор данных текстовой информацией из справочника, используя в качестве ключа записи поле «Breed ID».
Рвав-рвав, конечно, есть много неспортивных способов выполнения поступившего запроса (например, с использованием функции «Switch», условного столбца в Power Query и так далее), но поскольку это не интересно и не универсально, мы это, не рассматриваем.
Функция RELATED
Для получения данных из справочника можно использовать функцию «Related», однако, эта функция работает только при наличии связей между данными, которые устанавливаются непосредственно на уровне модели:
При создании связей важен не только сам тип связи, но и ее направление, примере показана самая простая связь с использованием ключевого поля «Breed ID».
После создания связи можно использовать конструкцию следующего вида:
Результат работы формулы:
Функция USERELATIONSHIP
Для получения данных по полю «Friend ID» необходимо настроить вторую связь, при этом она будет неактивной, поскольку одна активная связь, по полю «Breed ID», уже есть:
После создания связи можно использовать конструкцию следующего вида:
Результат работы формулы:
Рвав-рвав, некоторые записи остались пустыми намеренно, поскольку эти породы между собой плохо уживаются…
Результат
В итоге, при помощи DAX, а именно функции «Userelationship», исходный набор данных, содержащий только ID записи, был дополнен текстовым описанием из соответствующего справочника (столбцы «Breed» и "Friend"), а активная связь в модели данных осталась в исходном виде.
Всем хорошей погоды и горячей воды!Ваш Смайл