Работа с отношениями и кардиналовностью

Завершено

В отличие от других систем управления базами данных, Power BI имеет понятие направленности к отношениям. Такая направленность играет важную роль в фильтрации данных между несколькими таблицами. При загрузке данных Power BI автоматически выполняется поиск связей, которые существуют внутри данных, путем сопоставления имен столбцов. Можно также использовать управление отношениями для изменения этих параметров вручную.

Например, было извлечено много таблиц из базы данных продаж, и следующее изображение является примером вашей семантической модели. Power BI авторопределенное несколько отношений, но вы не можете понять, что они означают. Необходимо убедиться, что отношения точно отражают отношения, существующие в ваших данных.

Отношения

Ниже перечислены различные типы отношений, которые вы найдете в Power BI.

Отношение "много к одному (*:1) " или "один к многим (1: *) "

  • Описывает отношение, при котором имеется много экземпляров значения в одном столбце и которые относятся только к одному уникальному соответствующему экземпляру в другом столбце.

  • Описывает направления между таблицами фактов и таблиц измерений.

  • Является наиболее распространенным типом направленности и применяется по Power BI умолчанию при автоматическом создании отношений.

Примером связи "один к многим" может быть между таблицами CountryName и Territory, где можно иметь много территорий, связанных с одной уникальной страной.

Отношение один к одному (1:1):

  • Описывает отношение, при котором между двумя таблицами используется общий только один экземпляр значения.

  • Требуются уникальные значения в обеих таблицах.

  • Не рекомендуется, так как это отношение сохраняет излишнюю информацию и предполагает, что модель разработана неправильно. Рекомендуется объединять таблицы.

Примером одно-к-одному может быть, если бы в двух разных таблицах имелись продукты и коды продуктов. Создание отношений один к одному излишно, и эти две таблицы должны быть объединены.

Отношения между многими (.)

  • Описывает связь, в которой между двумя таблицами имеется общее множество значений.

  • Не требуются уникальные значения в любой таблице отношения.

  • Не рекомендуется; Отсутствие уникальных значений приводит к двусмысленности, и пользователи могут не знать, какой столбец значений ссылается на что.

Например, на следующем рисунке показана связь между таблицами "Продажи и заказы" в столбце OrderDate , поскольку с несколькими продажами может быть связано несколько заказов. Неопределенность введена, потому что обе таблицы могут иметь одинаковые даты порядка.

Направление перекрестного фильтра

Данные могут быть отфильтрованы с одной или с обеих сторон отношения.

С одним перекрестным фильтром в направлении:

  • Для фильтрации данных можно использовать только одну таблицу во взаимосвязях. Например, таблицу 1 можно отфильтровать по таблице 2, но таблицу 2 нельзя отфильтровать таблицей 1.

    Кончик

    Следуйте направлению стрелки по отношению между таблицами, чтобы понять, в каком направлении будет течь фильтр. Обычно нужно, чтобы эти стрелки указывали на вашу информационную таблицу.

  • Для отношения "один к многим" или "много-к одному" направление перекрестного фильтра будет осуществляться с одной стороны, то есть фильтрация будет выполняться в таблице, которая содержит много значений.

С обоими направлениями перекрестной фильтрации или двухнаправленной перекрестной фильтрации:

  • Одна таблица в отношениях может использоваться для фильтрации другой. Например, таблицу измерений можно фильтровать через таблицу фактов, а таблицы фактов — через таблицу измерений.

  • Может быть более низкая производительность при использовании двухнаправленной перекрестной фильтрации с отношением "многие ко многим".

Предостережение в отношении двухнаправленной перекрестной фильтрации: Вы не должны разрешать двухнаправленные отношения перекрестной фильтрации, если вы полностью не понимаете последствия этого. Включение такой работы может привести к двусмысленности, избыточному выборку проб, непредсказуемым результатам и потенциальному ухудшению производительности.

Кардиналичность и направление перекрестного фильтра

Для связей «один к одному» доступна только двухсторонняя перекрестная фильтрация. Данные могут быть отфильтрованы по любой стороне этой связи и в результате получить одно четкое, однозначное значение. Например, можно выполнить фильтрацию по одному коду продукта и вернуться по одному Продукту, а также можно выполнить фильтрацию по Продукту и вернуться с одним кодом продукта.

Для отношений "многие к многим" можно выбрать фильтрацию в одном или в обоих направлениях, используя двухнаправленную перекрестную фильтрацию. Двусмысленность, связанная с двухнаправленной перекрестной фильтрацией, усиливается в отношении "многие к многим", потому что между различными таблицами будет существовать несколько путей. При создании меры, расчета или фильтрации могут произойти непреднамеренные последствия фильтрации данных и в зависимости от того, какое отношение Power BI двигатель выбирает при применении фильтра, конечный результат может быть другим. Такая ситуация также относится к двухнаправленным отношениям и почему следует быть осторожным при их использовании.

По этой причине отношения между несколькими и/или двухнаправленными отношениями осложнены. Если вы не уверены в том, как выглядит данные при агрегации, такие типы открытых закрытых связей с несколькими направлениями фильтрации могут представлять различные пути через данные.

Создание связей между несколькими и несколькими

Рассмотрите сценарий, в котором вам поручено создать визуальный элемент, который будет рассматривать бюджеты клиентов и счетов. Вы можете иметь несколько клиентов на одном счете и несколько счетов с одинаковым клиентом, поэтому вы знаете, что вам нужно создать отношения многих к многим.

Чтобы создать это отношение, перейдите к разделу Управление отношениями>новое. В итоговом окне создайте связь между столбцом кода клиента в CustomerTable и AccountTable. Отношение настроено на значение "много к многим", и тип фильтра находится в обоих направлениях. Немедленно вас предупредит, что вы должны использовать этот тип отношений только в том случае, если ожидается, что ни один из столбцов не будет иметь уникальных значений, поскольку вы можете получить неожиданные значения. Так как необходимо выполнять фильтрацию в обоих направлениях, выберите двухнаправленную перекрестную фильтрацию.

Выберите OK. Теперь вы успешно создали много-к-многим отношения.

Дополнительные сведения см. в разделе "Отношения между несколькими и многими" в разделе Power BI.