Сокращение кратности
Кратность — это термин, который используется для описания уникальности значений в столбце. Кратность также используется в контексте связей между двумя таблицами, где она описывает направление связи.
Выявление уровня кратности в столбцах
Ранее при использовании редактора Power Query для анализа метаданных параметр Распределение столбцов на вкладке Представление отображал статистику по количеству различных и уникальных элементов в каждом столбце данных.
Число различных значений — общее количество различных значений в заданном столбце.
Число уникальных значений — общее количество значений, которые отображаются только один раз в заданном столбце.
Столбец с большим количеством повторяющихся значений в диапазоне (число уникальных значений — низкое), будет иметь низкий уровень кратности. И наоборот, столбец с большим количеством уникальных значений в своем диапазоне (число уникальных элементов велико) будет иметь высокий уровень кратности.
Более низкая кратность приводит к повышению оптимизации производительности, поэтому может потребоваться уменьшить количество столбцов с высокими значениями в семантической модели.
Уменьшение кратности связи
При импорте нескольких таблиц, вероятно, понадобится провести некоторый анализ с использованием данных из всех этих таблиц. Связи между этими таблицами необходимы, чтобы точно вычислить результаты и отобразить правильные сведения в отчетах. Power BI Desktop помогает упростить создание этих связей. К слову, в большинстве случаев вам не нужно ничего не делать — функция автообнаружения сделает все автоматически. Однако иногда может возникнуть необходимость в создании или изменении связей. В любом случае очень важно понимать связи в Power BI Desktop, а также способы их создания и изменения.
При создании или изменении связи можно настроить дополнительные параметры. По умолчанию Power BI Desktop автоматически настраивает дополнительные параметры на основе наилучшего предположения, которое может отличаться для каждой связи в зависимости от данных в столбцах.
Связи могут иметь разную кратность. Кратность — это направление связи, и каждая связь модели должна быть определена с типом кратности. Варианты кратности в Power BI приведены ниже.
Многие к одному (
*
:1) — это самый распространенный тип связи, используемый по умолчанию. Она означает, что у столбца в одной таблице может быть несколько экземпляров значения, а у другой связанной таблицы, которую часто называют таблицей подстановки, есть только один экземпляр значения.Один к одному (1:1) — это тип связи, при котором у столбца в одной таблице есть только один экземпляр определенного значения, а у другой связанной таблицы также только один экземпляр определенного значения.
Один ко многим (1:
*
) — это тип связи, при котором у столбца в одной таблице есть только один экземпляр определенного значения, а у другой связанной таблицы может быть несколько экземпляров значения.Многие ко многим (:) — при использовании составных моделей можно установить между таблицами связь "многие ко многим", что приведет к удалению требований к уникальности значений в таблицах. Это также избавит от использования обходных путей, таких как введение новых таблиц только для установления связей.
Во время разработки вы создаете и редактируете связи в модели, поэтому при построении новых связей в модели, независимо от выбранной кратности, всегда убедитесь, что оба столбца, которые вы используете для участия в связи, имеют один и тот же тип данных. Модель не будет работать, если попытаться построить связь между двумя столбцами, в которых один столбец имеет текстовый тип данных, а другой — целочисленный.
В следующем примере поле ProductID имеет тип данных целое число в таблицах Product и Sales. Столбцы с типом данных Integer (целое число) обрабатываются лучше, чем столбцы с типом данных Text (текст).
Повышение производительности за счет уменьшения уровня кратности
Power BI Desktop предлагает различные методы, которые можно использовать для уменьшения объема данных, загружаемых в семантические модели, например формирования сводных данных. Уменьшение количества данных, загружаемых в модель, улучшит кратность связей отчета. По этой причине важно, чтобы стремиться минимизировать данные, которые будут загружены в ваши модели. Это особенно справедливо для больших моделей или моделей, которые будут расти с течением времени.
Возможно, самым эффективным способом уменьшения размера модели является использование сводной таблицы из источника данных. Если таблица подробных сведений может содержать каждую транзакцию, то сводная таблица будет содержать одну запись в день, в неделю или в месяц. Это, к примеру, может быть среднее значение по всем транзакциям в день.
Например, исходная таблица фактов продаж хранит по одной строке для каждой строки заказа. Значительное сокращение объема данных может быть достигнуто за счет суммирования метрик продаж, если группирование выполняется по датам, клиентам и продуктам, а сведения об отдельных транзакциях не требуются.
Тогда учтите, что еще более значительное сокращение данных можно достичь путем группировки по дате на уровне месяца. Это позволит уменьшить размер модели до 99 процентов, но получение отчетов на уровне дней или отдельных заказов станет недоступным. Решение о суммировании фактических данных —это всегда компромисс по отношению к детализации данных. Недостаток заключается в том, что вы можете потерять возможность детализации данных, так как подробности больше не существуют. Этот компромисс можно уменьшить, используя при проектировании смешанную модель.
Power BI Desktop в смешанном режиме создает составную модель. По сути, она позволяет определить режим хранения для каждой таблицы. Таким образом, для каждой таблицы можно установить свое значение свойства Режим хранения: Импорт или DirectQuery.
Эффективным способом уменьшения размера модели является установка свойства Режим хранения для больших таблиц фактов в значение DirectQuery. Этот подход к проектированию хорошо работает в сочетании с методами суммирования данных. Например, сводные данные по продажам можно использовать для создания высокопроизводительных "сводных" отчетов. Можно создать страницу детализации для отображения детализированных продаж для определенного (и узкого) контекста фильтра, в котором отображаются все контекстные заказы на продажу. Страница детализации включает визуальные элементы на основе таблицы DirectQuery для получения данных заказа на продажу (подробности заказа на продажу).
Дополнительные сведения см. в статье Методы уменьшения объема данных для моделирования импорта.