Create and manage relationships in Power BI Desktop (Создание связей и управление ими в Power BI Desktop)

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

Автоматическое заполнение во время загрузки

При одновременном запросе двух или более таблиц при загрузке данных Power BI Desktop пытается найти и создать связи для вас. Параметры связи кратность, направление перекрестного фильтра и автоматическая установка этой связи. Power BI Desktop проверяет имена столбцов в таблицах, которые запрашиваются, чтобы определить, есть ли какие-либо потенциальные связи. Если есть, эти связи создаются автоматически. Если Power BI Desktop не может определить высокий уровень достоверности, он не создает связь. Однако вы по-прежнему можете использовать диалоговое окно "Управление связями" для создания или редактирования связей вручную.

Создание связи с автоматическим набором данных

На вкладке "Моделирование" выберите "Управление связями>" "Автодетет".

Animation showing how to create a relationship with autodetect.

Создание связи вручную

  1. На вкладке "Моделирование" выберите "Управление связями>"

  2. В диалоговом окне "Создание связи" в раскрывающемся списке первой таблицы выберите таблицу. Выберите столбец, который вы хотите использовать в связи.

  3. В раскрывающемся списке второй таблицы выберите другую таблицу, которую вы хотите в связи. Выберите другой столбец, который вы хотите использовать, и нажмите кнопку "ОК".

    Animation showing how to create a manual relationship.

По умолчанию Power BI Desktop автоматически настраивает параметры кратности (направление), перекрестное направление фильтра и делает эту связь активной для новой связи. Однако при необходимости эти параметры можно изменить. Дополнительные сведения см. в разделе "Общие сведения о дополнительных параметрах".

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

При возникновении этой ошибки существует несколько способов устранения этой проблемы:

  • Используйте удаление дубликатов для создания столбца с уникальными значениями. Недостаток этого подхода заключается в том, что при удалении повторяющихся строк может быть потеряна информация. Часто ключ (строка) дублируется по хорошей причине.
  • Добавьте промежуточную таблицу из списка уникальных ключевых значений в модель, которая затем будет связана с обоими исходными столбцами в связи.

Дополнительные сведения см. в этой записи блога.

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

Изменение связи

В Power BI можно изменить связь двумя способами.

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

Screenshot of adjusting relationships in the properties pane.

В области "Свойства" также можно увидеть видео демонстрацию связей редактирования.

Другой способ редактирования связи — это диалоговое окно редактора связей, которое можно открыть различными способами в Power BI Desktop. В следующем списке показаны различные способы открытия диалогового окна редактора связей:

В представлении отчета сделайте следующее:

  • Выберите связь "Управление связями" на ленте> "Моделирование", а затем нажмите кнопку "Изменить".
  • Выберите таблицу в списке полей, а затем выберите ленту >"Управление связями" средств таблиц, а затем выберите связь и нажмите кнопку "Изменить".

В представлении данных выберите ленту> "Управление связями" средств таблиц, а затем выберите связь и нажмите кнопку "Изменить".

В представлении модели сделайте следующее:

  • Выберите " Главная лента >" Управление связями, а затем выберите связь и нажмите кнопку "Изменить".
  • Дважды щелкните любую строку между двумя таблицами.
  • Щелкните правой кнопкой мыши любую строку между двумя таблицами и выберите пункт "Свойства".
  • Выберите любую строку между двумя таблицами, а затем в области "Свойства" выберите редакторсвязей "Открыть".

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

На следующем рисунке показан снимок экрана окна "Изменить связь ".

Screenshot of the edit relationship window.

Изменение связей с помощью различных методов

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

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

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

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

Важно!

Изменения связей в функции области свойств в настоящее время находятся в предварительной версии. В предварительной версии функции и документация, скорее всего, будут изменяться. Эту функцию необходимо включить в Power BI Desktop, перейдя в раздел "Параметры файла>" и "Параметры >> предварительного просмотра", а затем в разделе GLOBAL выберите поле проверка box рядом с областью "Связь".

Настройка дополнительных параметров

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

Кратность

Параметр кратности может иметь один из следующих параметров:

Многие к одному (*:1): связь "многие ко одному" является наиболее распространенным типом связи по умолчанию. Это означает, что столбец в данной таблице может иметь несколько экземпляров значения, а другая связанная таблица, часто известная как таблица подстановки, имеет только один экземпляр значения.

Один к одному (1:1): в связи "один к одному" столбец в одной таблице имеет только один экземпляр определенного значения, а другая связанная таблица имеет только один экземпляр определенного значения.

Один ко многим (1:*) — в связи "один ко многим", столбец в одной таблице имеет только один экземпляр определенного значения, а другая связанная таблица может иметь несколько экземпляров значения.

Многие ко многим (*:*): с составными моделями можно установить связь "многие ко многим" между таблицами, которая удаляет требования к уникальным значениям в таблицах. Это также избавит от использования обходных путей, таких как введение новых таблиц только для установления связей. Дополнительные сведения см. в разделе "Связи с множеством" карта inality.

Дополнительные сведения об изменении карта inality см. в разделе "Общие сведения о дополнительных параметрах".

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

Параметр направления перекрестного фильтра может иметь один из следующих параметров:

Оба: для фильтрации обе таблицы обрабатываются так, как если бы они были одной таблицей. Оба параметра хорошо работают с одной таблицей с множеством таблиц подстановки, которые окружают его. Примером является таблица фактических продаж с таблицей подстановки для отдела. Эта конфигурация часто называется конфигурацией схемы "звезда" (центральная таблица с несколькими таблицами подстановки). Однако если у вас есть две или более таблиц, которые также имеют таблицы подстановки (с некоторыми общими), вы не хотите использовать оба параметра. Чтобы продолжить предыдущий пример, в этом случае у вас также есть таблица продаж бюджета, которая записывает целевой бюджет для каждого отдела. Кроме того, таблица отделов подключена как к продажам, так и к таблице бюджета. Избегайте обоих параметров для такой конфигурации.

Одно: наиболее распространенное направление по умолчанию, которое означает, что выбор фильтрации в подключенных таблицах работает над таблицей, в которой объединяются значения. При импорте Power Pivot в excel 2013 или более ранней модели данных все связи будут иметь единое направление.

Дополнительные сведения об изменении направления перекрестной фильтрации см. в разделе "Общие сведения о дополнительных параметрах".

Активировать связь

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

Дополнительные сведения о том, когда следует активировать определенную связь, см. в разделе "Общие сведения о дополнительных параметрах".

Общие сведения о связях

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

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

Совет

Вы можете выполнить этот урок самостоятельно:

  1. Скопируйте следующую таблицу ProjectHours в лист Excel (за исключением заголовка), выберите все ячейки и нажмите кнопку "Вставить>таблицу".
  2. В диалоговом окне "Создать таблицу" нажмите кнопку "ОК".
  3. Выберите любую ячейку таблицы, выберите имя таблицы конструктора>таблиц и введите ProjectHours.
  4. Выполните то же самое для таблицы CompanyProject .
  5. Импортируйте данные с помощью получения данных в Power BI Desktop. Выберите две таблицы в качестве источника данных и выберите "Загрузить".

Первая таблица ProjectHours — это запись рабочих билетов, которые записывают количество часов, которые работали над конкретным проектом.

ProjectHours

Билет SubmittedBy Часы Проект DateSubmit
1001 Алан Брюер 22 Синий 1/1/2013
1002 Алан Брюер 26 Красный 2/1/2013
1003 Шу Ито 34 Желтый 12/4/2012
1004 Алан Брюер 13 Апельсин 02.01.2012
1005 Эли Боуен 29 Лиловая 10.01.2013
1006 Нуно Бенто 35 Зеленый 2/1/2013
1007 Дэвид Хэмилтон 10 Желтый 10.01.2013
1008 Му Хан 28 Апельсин 02.01.2012
1009 Шу Ито 22 Лиловая 2/1/2013
1010 Эли Боуен 28 Зеленый 10.01.2013
1011 Эли Боуен 9 Синий 10/15/2013

Эта вторая таблица, CompanyProject, представляет собой список проектов с назначенным приоритетом: A, B или C.

CompanyProject

ProjName Приоритет
Синий а
Красный Б
Зеленый О
Желтый О
Лиловая Б
Апельсин О

Обратите внимание, что каждая таблица содержит столбец проекта. Каждое название немного отличается, но значения выглядят так же. Эта разница важна, и мы вернемся к нему в ближайшее время.

Теперь, когда у нас есть две таблицы, импортированные в модель, создадим отчет. Первое, что мы хотим получить, — это количество часов, отправленных приоритетом проекта, поэтому мы выбираем приоритет и часы на панели полей .

Screenshot of the Priority and Hours fields selected from the Fields pane.

Если мы рассмотрим таблицу на холсте отчета, вы увидите, что количество часов составляет 256 для каждого проекта, что также является общим. Очевидно, что это число неправильно. Почему? Это связано с тем, что мы не можем вычислить сумму значений из одной таблицы (часы в таблице Project ), срезанные значениями в другой таблице (Приоритет в таблице CompanyProject ) без связи между этими двумя таблицами.

Итак, давайте создадим связь между этими двумя таблицами.

Помните, что эти столбцы мы видели в обеих таблицах с именем проекта, но со значениями, которые выглядят так? Мы будем использовать эти два столбца для создания связи между таблицами.

Почему эти столбцы? Ну, если мы рассмотрим столбец Project в таблице ProjectHours , мы видим такие значения, как синий, красный, желтый, оранжевый и т. д. На самом деле мы видим несколько строк с одинаковым значением. В действительности у нас есть много значений цветов для Project.

Если мы рассмотрим столбец ProjName в таблице CompanyProject , мы видим, что для имени проекта есть только один из значений цвета. Каждое значение цвета в этой таблице уникально, и это важно, так как мы можем создать связь между этими двумя таблицами. В этом случае связь "многие ко одному". В связи "многие к одному" по крайней мере один столбец в одной из таблиц должен содержать уникальные значения. Есть несколько дополнительных вариантов для некоторых отношений, которые мы рассмотрим позже. Теперь давайте создадим связь между столбцами проекта в каждой из двух таблиц.

Создание новой связи

  1. Выберите " Управление связями " на вкладке "Моделирование ".

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

  3. В первом раскрывающемся списке выберите ProjectHours в качестве первой таблицы, а затем выберите столбец Project . Эта сторона является много стороной наших отношений.

  4. Во втором раскрывающемся списке КомпанияProject предварительно выбирается в качестве второй таблицы. Выберите столбец ProjName. Эта сторона является одной стороной наших отношений.

  5. Примите значения по умолчанию для параметров связи и нажмите кнопку "ОК".

    Screenshot of the Create relationship dialog box.

  6. В диалоговом окне "Управление связями" нажмите кнопку "Закрыть".

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

Теперь давайте снова рассмотрим таблицу на холсте отчета.

Screenshot of the Priority and Hours fields selected from the Fields pane with new relationship.

Это выглядит намного лучше, не так ли?

При сумме часов по приоритету Power BI Desktop ищет каждый экземпляр уникальных значений цветов в таблице подстановки CompanyProject, ищет каждый экземпляр каждого из этих значений в таблице ProjectHours, а затем вычисляет сумму для каждого уникального значения.

При автоматическом выборе, возможно, вам даже не придется делать это много.

Общие сведения о дополнительных параметрах

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

Screenshot of the lower portion of the Create relationship dialog box showing Cardinality and Cross filter direction options.

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

Автоматическое обновление связей

Вы можете управлять обработкой и автоматической настройкой связей в отчетах и моделях Power BI. Чтобы указать способ обработки параметров связей Power BI, выберите "Параметры файла>" и "Параметры параметров>" в Power BI Desktop, а затем выберите "Загрузка данных" в левой области. Отображаются параметры связей .

Screenshot of the Options box showing the Relationships settings in the Data Load tab.

Существует три варианта, которые можно выбрать и включить:

  • Импорт связей из источников данных при первой загрузке: этот параметр выбран по умолчанию. Когда он выбран, Power BI проверка для связей, определенных в источнике данных, таких как связи внешнего ключа или первичного ключа в хранилище данных. Если такие связи существуют, они зеркало в модель данных Power BI при первоначальной загрузке данных. Этот параметр позволяет быстро начать работу с моделью, а не требовать поиска или определения этих связей самостоятельно.

  • Обновление или удаление связей при обновлении данных: этот параметр не выбран по умолчанию. Если выбрать его, Power BI проверка изменения связей источника данных при обновлении семантической модели. Если эти связи изменились или удалены, Power BI зеркало эти изменения в собственной модели данных, обновите или удалив их для сопоставления.

    Предупреждение

    Если вы используете безопасность на уровне строк, которая зависит от определенных связей, мы не рекомендуем выбрать этот параметр. Если вы удаляете связь, от которую используются параметры RLS, модель может стать менее безопасной.

  • Автоматическое определение новых связей после загрузки данных: этот параметр описывается в разделе "Автодетет" во время загрузки.

Для будущих обновлений данных требуется другая карта inality

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

Таблица CompanyProjectPriority — это список всех корпоративных проектов и их приоритет. Таблица Project Budget — это набор проектов, для которых утвержден бюджет.

CompanyProjectPriority

ProjName Приоритет
Синий а
Красный Б
Зеленый О
Желтый О
Лиловая Б
Апельсин О

ProjectBudget

Утвержденные проекты Бюджетные затраты Распределение
Синий 40 000 12/1/2012
Красный 100,000 12/1/2012
Зеленый 50,000 12/1/2012

Если мы создадим связь между столбцом "Утвержденные проекты" в таблице ProjectBudget и столбцом ProjectName в таблице CompanyProjectPriority, Power BI автоматически присваивает кратность одному (1:1) и перекрестному направлению фильтрации для обоих.

Screenshot of the Create relationship dialog box with Cardinality to One to one (1:1) and Cross filter direction to Both.

Причина, по которой Power BI делает эти параметры, заключается в том, что для Power BI Desktop лучшее сочетание двух таблиц выглядит следующим образом:

ProjName Приоритет Бюджетные затраты Распределение
Синий а 40 000 12/1/2012
Красный Б 100,000 12/1/2012
Зеленый О 50,000 12/1/2012
Желтый О

Лиловая Б

Апельсин О

Существует связь "один к одному" между двумя таблицами, так как в столбце ProjName объединенной таблицы нет повторяющихся значений. Столбец ProjName является уникальным, так как каждое значение происходит только один раз. Поэтому строки из двух таблиц можно объединить напрямую без дублирования.

Но предположим, что вы знаете, что данные изменятся при следующем обновлении. Обновленная версия таблицы ProjectBudget теперь содержит дополнительные строки для проектов Blue и Red:

ProjectBudget

Утвержденные проекты Бюджетные затраты Распределение
Синий 40 000 12/1/2012
Красный 100,000 12/1/2012
Зеленый 50,000 12/1/2012
Синий 80 000 01.06.2013
Красный 90 000 01.06.2013

Эти дополнительные строки означают, что лучшее сочетание двух таблиц теперь выглядит следующим образом:

ProjName Приоритет Бюджетные затраты Распределение
Синий а 40 000 12/1/2012
Красный Б 100,000 12/1/2012
Зеленый О 50,000 12/1/2012
Желтый О

Лиловая Б

Апельсин О

Синий а 80 000 01.06.2013
Красный Б 90000 01.06.2013

В этой новой объединенной таблице столбец ProjName имеет повторяющиеся значения. Две исходные таблицы не будут иметь связь "один к одному" после обновления таблицы. В этом случае, так как мы знаем, что эти будущие обновления будут вызывать дубликаты столбца ProjName, мы хотим задать для кратности значение "Многие" (*:1), причем многие стороны в ProjectBudget и одна сторона в CompanyProjectPriority.

Настройка направления перекрестного фильтра для сложного набора таблиц и связей

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

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

Перекрестная фильтрация по одному направлению работает во многих ситуациях. На самом деле, если вы импортировали модель из Power Pivot в Excel 2013 или более ранней версии, все связи будут заданы в одном направлении. Однонаправленное направление означает, что фильтрация вариантов в подключенных таблицах работает в таблице, в которой выполняется агрегирование. Иногда понимание перекрестной фильтрации может быть немного сложным, поэтому рассмотрим пример.

При перекрестной фильтрации по одному направлению при создании отчета, который суммирует часы проекта, можно выбрать сводку (или фильтровать) по таблице CompanyProject и его столбцу Priority или таблице CompanyEmployee и его столбцу City . Однако если вы хотите подсчитать количество сотрудников на проекты (менее распространенный вопрос), он не будет работать. Вы получите столбец значений, которые одинаковы. В следующем примере направление перекрестной фильтрации обеих связей устанавливается в одно направление: к таблице ProjectHours . В поле "Значения" задано значение Count:

Screenshot of the visualization tab used with the Employee and Project fields.

Спецификация фильтра будет передаваться из CompanyProject в ProjectHours (как показано на следующем рисунке), но она не будет передаваться в CompanyEmployee.

Diagram of a cross filtering example with flow from CompanyProject to ProjectHours.

Однако если задать направление перекрестной фильтрации для обоих, он будет работать. Оба параметра позволяют спецификации фильтра передаваться в CompanyEmployee.

Diagram of a cross filtering example with flow both ways

Если для направления перекрестной фильтрации задано значение "Оба", наш отчет теперь отображается правильно:

Screenshot of cross filtering direction set to Both.

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

Diagram of cross filtering both directions in star schema.

Направление перекрестной фильтрации не работает хорошо с более общим шаблоном, часто найденным в базах данных, как и на этой схеме:

Diagram of cross filtering in both directions on a database pattern.

Если у вас такой шаблон таблицы, с циклами, перекрестная фильтрация может создать неоднозначный набор связей. Например, если вы суммируете поле из TableX, а затем выбираете фильтрацию по полю в TableY, то не ясно, как фильтр должен перемещаться, через верхнюю таблицу или нижнюю таблицу. Типичным примером такого типа является таблица продаж TableX с фактическими данными и данными о бюджете TableY. Затем таблицы в середине — это таблицы подстановки, которые используют обе таблицы, например деление или регион.

Как и в случае с активными или неактивными связями, Power BI Desktop не позволит установить связь как в том случае, если она создаст неоднозначность в отчетах. Существует несколько различных способов обработки этой ситуации. Ниже приведены два наиболее распространенных варианта:

  • Удаление или пометка связей как неактивных для уменьшения неоднозначности. Затем можно задать перекрестную фильтрацию связи как оба.
  • Дважды введите таблицу (с другим именем во второй раз), чтобы исключить циклы. Это делает шаблон связей, таких как схема звездочки. При использовании схемы "Звезда" все связи могут иметь значение "Оба".

Неправильные активные отношения

Когда Power BI Desktop автоматически создает связи, иногда возникает несколько связей между двумя таблицами. Если это происходит, то для одной из связей задано значение "Активный". Активная связь служит связью по умолчанию, поэтому при выборе полей из двух разных таблиц Power BI Desktop может автоматически создавать визуализацию. Однако в некоторых случаях автоматически выбранная связь может быть неправильной. Используйте диалоговое окно "Управление связями" , чтобы задать связь как активную или неактивную, или задать активную связь в диалоговом окне "Изменить связь ".

Чтобы обеспечить связь по умолчанию, Power BI Desktop позволяет одновременно использовать только одну активную связь между двумя таблицами. Поэтому необходимо сначала задать текущую связь как неактивную, а затем задать связь, которую необходимо активировать.

Рассмотрим пример. Первая таблица — ProjectTickets, а вторая — EmployeeRole.

ProjectTickets

Билет OpenedBy SubmittedBy Часы Проект DateSubmit
1001 Перхэм, Том Алан Брюер 22 Синий 1/1/2013
1002 Роман, Даниэль Алан Брюер 26 Красный 2/1/2013
1003 Рот, Даниэль Шу Ито 34 Желтый 12/4/2012
1004 Перхэм, Том Алан Брюер 13 Апельсин 02.01.2012
1005 Роман, Даниэль Эли Боуен 29 Лиловая 10.01.2013
1006 Рот, Даниэль Нуно Бенто 35 Зеленый 2/1/2013
1007 Рот, Даниэль Дэвид Хэмилтон 10 Желтый 10.01.2013
1008 Перхэм, Том Му Хан 28 Апельсин 02.01.2012
1009 Роман, Даниэль Шу Ито 22 Лиловая 2/1/2013
1010 Рот, Даниэль Эли Боуен 28 Зеленый 10.01.2013
1011 Перхэм, Том Эли Боуен 9 Синий 10/15/2013

EmployeeRole

Сотрудник Роль
Нуно Бенто Руководитель проекта
Эли Боуен Руководитель проекта
Алан Брюер Руководитель проекта
Дэвид Хэмилтон Руководитель проекта
Му Хан Руководитель проекта
Шу Ито Руководитель проекта
Перхэм, Том Спонсор проекта
Роман, Даниэль Спонсор проекта
Рот, Даниэль Спонсор проекта

Здесь есть две связи:

  • Между Employee в таблице EmployeeRole и SubmittedBy в таблице ProjectTickets.
  • Между OpenedBy в таблице ProjectTickets и Employee в таблице EmployeeRole .

Screenshot of a two-relationship example.

При добавлении обоих связей в модель (Открытое приложение сначала), в диалоговом окне "Управление связями " показано, что OpenedBy активен:

Screenshot of a OpenedBy active in the Manage relationships dialog box.

Теперь, если мы создадим отчет, использующий поля роли и сотрудника из EmployeeRole, и поле "Часы " из ProjectTickets в визуализации таблицы на холсте отчета, мы видим только спонсоров проектов, так как они являются единственными, которые открыли билет проекта.

Screenshot shows the Employee, Role, and Hours fields selected.

Мы можем изменить активную связь и получить SubmittedBy вместо OpenedBy. В разделе "Управление связями" отмените проверка связь ProjectTickets(OpenedBy) с EmployeeRole(Employee), а затем проверка связь EmployeeRole(Employee) в Project Tickets(SubmittedBy).

Screenshot of changing the active relationship in the Manage relationship dialog box.

Просмотр всех связей в представлении связей

Иногда модель имеет несколько таблиц и сложных связей между ними. Представление связей в Power BI Desktop показывает все связи в модели, их направление и карта inality в легкой и настраиваемой схеме.

Дополнительные сведения см. в статье "Работа с представлением отношений" в Power BI Desktop.

Устранение неполадок

В этом разделе содержатся рекомендации и сведения об устранении неполадок при работе с связями в Power BI.

Не удается определить связи между полями

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

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

Screenshot of a sample model used in troubleshooting scenarios.

Сценарий 1. Традиционная схема звезды и ограничение меры не указано. Ссылаясь на пример модели на предыдущем изображении, давайте сначала рассмотрим правой половины изображений с помощью поставщика — покупки — таблицы продуктов . В этом примере показана традиционная схема звездочек с таблицей фактов (покупки) и двумя таблицами измерений (продукт и поставщик). Связь между таблицами измерений и таблицей фактов составляет 1 ко многим (один продукт соответствует многим покупкам, один поставщик соответствует многим покупкам). В этой схеме мы можем ответить на такие вопросы, как какие продажи у нас есть для продукта X? и какие продажи у нас есть для поставщика Y? и какие продукты продаются поставщиком Y?

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

Correlate Product[Color] with Vendor[Name] where CountRows(Purchases)>0

Это where CountRows(Purchases)>0 неявное ограничение, которое Power BI добавит для обеспечения возврата соответствующих данных. Благодаря этой корреляции с помощью таблицы "Покупки" мы можем возвращать пары Product-Vendor, имеющие по крайней мере одну запись в таблице фактов , пары, которые имеют смысл с точки зрения данных. Вы можете ожидать любые нечувствичные сочетания Product-Vendor, для которых никогда не было продажи (которые будут бесполезны для анализа) не будут отображаться.

Сценарий 2. Предоставьте традиционное ограничение схемы и меры. В предыдущем примере в сценарии 1, если пользователь предоставляет ограничение в виде сводного столбца (сумм/среднее или число qty покупки) или модели (число VendID), Power BI может создать запрос в виде следующего примера:

Correlate Product[Color] with Vendor[Name] where MeasureConstraint is not blank

В таком случае Power BI пытается вернуть сочетания с значимыми значениями ограничения, предоставленного пользователем (непустыми). Power BI не обязательно добавить собственное неявное ограничение CountRows(Purchases)>0, например то, что было сделано в предыдущем сценарии 1, так как ограничение, предоставленное пользователем, достаточно.

Сценарий 3. Незвездочная схема и ограничение мер не указано. В этом сценарии мы сосредоточим внимание на центре модели, где у нас есть таблицы Sales - Product - Purchases, где у нас есть одна таблица измерений (продукт) и две таблицы фактов (продажи, покупки). Так как этот пример не является звездочной схемой, мы не можем ответить на те же вопросы, что и в сценарии 1. Предположим, что мы пытаемся сопоставить покупки и продажи, так как покупки имеют отношение "Многие к 1" с продуктом, и продукт имеет 1 к многим отношениям с продажами. Продажи и покупки косвенно многие ко многим. Мы можем связать один продукт с многими покупками и одним продуктом с многими продажами, но мы не можем связать одну продажу со многими покупками или наоборот. Мы можем связать только много покупок со многими продажами.

В этой ситуации, если мы пытаемся объединить покупку[VenID] и Sales[CustID] в визуальном элементе, Power BI не имеет конкретного ограничения, которое может применяться из-за связи "Многие ко многим" между этими таблицами. Хотя могут быть пользовательские ограничения (не обязательно основанные на связях, установленных в модели), которые могут применяться для различных сценариев, Power BI не может выводить ограничение по умолчанию исключительно на основе связей. Если Power BI попытается вернуть все сочетания двух таблиц, он создаст большое перекрестное соединение и возвратит не соответствующие данные. Вместо этого Power BI вызывает ошибку в визуальном элементе, например следующую.

Screenshot of an error dialog when relationship can’t be inferred. Alternatively, Screenshot of an error dialog where relationship isn’t inferred.

Сценарий 4. Незвездочная схема и ограничение мер предоставлено. Если мы рассмотрим пример из сценария 3, и добавьте ограничение пользователя в виде сводного столбца (счетчик продукта[ProdID]) или меру модели (Sales[Total Qty]), Power BI может создать запрос в виде коррелярной покупки[VenID] и Sales[CustID], где MeasureConstraint не является пустым.

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

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

Screenshot of an error dialog when Power BI can’t find default constraints.

Устранение ошибок связи

При появлении ошибки "Не удается определить связи между полями ", можно выполнить следующие действия, чтобы попытаться устранить эту ошибку:

  1. Проверьте модель. Правильно ли он настроен для типов вопросов, которые вы хотите ответить на анализ? Можно ли изменить некоторые связи между таблицами? Можно ли избежать создания косвенного числа для многих?

    Рассмотрите возможность преобразования схемы обратной фигуры V в две таблицы и используйте прямую связь "Многие ко многим ", как описано в описании применения связей "многие ко многим" в Power BI Desktop.

  2. Добавьте ограничение в визуальный элемент в виде сводного столбца или меры модели.

  3. Если добавлен сводные столбцы и по-прежнему возникает ошибка, рассмотрите возможность использования меры модели.

Дополнительные сведения о моделях и отношениях см. в следующих статьях: