Вы находитесь на странице: 1из 334

Даниил Маслюк

Анализируем данные
в Microsoft Power BI
Подготовка к экзамену DA-100
Exam Ref DA-100
Analyzing Data with
Microsoft Power BI

Daniil Maslyuk
Анализируем данные
в Microsoft Power BI
Подготовка к экзамену DA-100

Даниил Маслюк

Москва, 2022
УДК 004.424
ББК 32.372
М314

М314 Даниил Маслюк


Анализируем данные в Microsoft Power BI. Подготовка к экзамену DA-100 /
пер. с англ. А. Ю. Гинько – М.: ДМК Пресс, 2022. – 332 с.: ил.

ISBN 978-5-97060-849-4

В книге рассматриваются все основные темы для подготовки к серти-


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

УДК 004.424
ББК 32.372

Original English language edition published with the authorization of Microsoft Corporation
by: Pearson Education, Inc. Copyright ©  2021 by Pearson Education, Inc. All rights reserved.
Russian-language edition copyright © 2021 by DMK Press. All rights reserved.

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

ISBN 978-0-13-681968-4 (англ.) © Pearson Education, Inc., 2021


ISBN 978-5-97060-849-4 (рус.) © Оформление, перевод на русский язык,
издание, ДМК Пресс, 2022
Даше, Леонарду и Уильяму с огромной благодарностью
за мотивацию и поддержку.

Даниил Маслюк
Оглавление

Предисловие от издательства............................................................................................13
Благодарности.......................................................................................................................14
Об авторе...............................................................................................................................15
Введение................................................................................................................................16
Структура книги.................................................................................................................................16
Подготовка к экзамену...................................................................................................................17
Сертификация Microsoft.................................................................................................................17
Сопроводительные файлы............................................................................................................17
Список ссылок на источники в сети..........................................................................................18
Ошибки, обновления и поддержка............................................................................................18
Оставайтесь на связи.......................................................................................................................18
Глава 1. Подготовка данных................................................................................................19
Навык 1.1. Получение данных из различных источников.....................................................19
Распознавание источника данных и подключение к нему.............................................20
Редактор Power Query............................................................................................................................ 23
Зависимости запросов........................................................................................................................... 24
Изменение настроек источника данных.................................................................................25
Выбор между использованием общего набора данных и созданием
локального.......................................................................................................................................26
Выбор режима хранения...............................................................................................................28
Режим импорта данных......................................................................................................................... 28
Режим DirectQuery................................................................................................................................... 29
Режим Live Connection........................................................................................................................... 30
Составные модели................................................................................................................................... 30
Выбор подходящего типа запроса.............................................................................................32
Последствия использования режима DirectQuery...................................................................... 32
Поиск проблем с производительностью запросов.............................................................35
Просмотр машинных запросов.......................................................................................................... 35
Диагностика запросов............................................................................................................................ 37
Добавочное (инкрементное) обновление..................................................................................... 39
Использование облачного хранилища Microsoft Dataverse...........................................40
Применение параметров...............................................................................................................40
Создание параметров.....................................................................................................................41
Использование параметров.........................................................................................................42
Редактирование параметров.......................................................................................................44
Создание функций............................................................................................................................45
Использование и создание файла PBIDS...............................................................................46
Оглавление    7

Использование и создание потока данных...........................................................................47


Подключение к набору данных с использованием конечных точек XMLA..............48
Навык 1.2. Профилирование данных.............................................................................................50
Распознавание аномалий в данных..........................................................................................50
Оценка структуры данных и извлечение свойств столбцов...........................................52
Получение статистических сведений о данных...................................................................53
Навык 1.3. Очистка, преобразование и загрузка данных......................................................55
Поиск проблем с качеством информации и противоречивостью данных
и их устранение путем замены значений...........................................................................56
Замена значений...................................................................................................................................... 56
Удаление строк.......................................................................................................................................... 58
Поиск первопричины ошибки............................................................................................................ 58
Определение и преобразование типов данных столбцов...............................................59
Использование локали.......................................................................................................................... 62
Определение и создание подходящих ключей для объединения...............................63
Ключи для объединения таблиц в Power Query.......................................................................... 63
Ключи для создания связей................................................................................................................. 64
Применение преобразований к структуре таблиц.............................................................65
Работа с шагами запроса...................................................................................................................... 67
Уменьшение количества строк и столбцов.................................................................................... 68
Сведение, отмена свертывания и транспонирование.............................................................. 71
Добавление столбцов............................................................................................................................. 73
Комбинирование запросов...........................................................................................................78
Добавление................................................................................................................................................ 78
Объединение.............................................................................................................................................. 80
Соглашение об именовании столбцов и запросов.............................................................83
Использование расширенного редактора для написания кода
на языке M в Power Query.........................................................................................................84
Строка формул........................................................................................................................................... 86
Настройка загрузки данных.........................................................................................................88
Решение проблем с импортом данных....................................................................................89
Заключение.........................................................................................................................................91
Мысленный эксперимент...............................................................................................................93
Ответы...................................................................................................................................................95
Глава 2. Моделирование данных.......................................................................................96
Навык 2.1. Проектирование модели данных..............................................................................96
Определение таблиц.......................................................................................................................97
Плоская схема........................................................................................................................................... 97
Схема «звезда»......................................................................................................................................... 98
Схема «снежинка»................................................................................................................................... 99
Настройка свойств таблиц и столбцов.................................................................................. 101
Свойства таблиц.................................................................................................................................... 101
Свойства столбцов................................................................................................................................ 102
8    Оглавление

Определение быстрых мер........................................................................................................ 103


Выравнивание иерархий типа родитель–потомок.......................................................... 107
Определение ролевых измерений......................................................................................... 110
Определение кратности связей и настройка двунаправленной
перекрестной фильтрации..................................................................................................... 114
Кратность связей................................................................................................................................... 115
Направление кросс-фильтрации.................................................................................................... 116
Оптимизация модели данных................................................................................................... 119
Режим хранения данных.................................................................................................................... 119
Организация связей............................................................................................................................. 120
Создание агрегаций............................................................................................................................. 120
Настройка кратности связей............................................................................................................ 120
Установка связей типа «многие ко многим»....................................................................... 121
Прямые связи типа «многие ко многим».................................................................................... 122
Связи типа «многие ко многим» с использованием таблиц-мостов................................ 123
Создание общей таблицы дат................................................................................................... 125
Создание календаря в Power Query.............................................................................................. 126
Создание календаря при помощи DAX........................................................................................ 127
Определение приемлемого уровня гранулярности данных........................................ 128
Навык 2.2. Разработка модели данных...................................................................................... 131
Установка направления кросс-фильтрации и применение фильтра
безопасности............................................................................................................................... 131
Создание вычисляемых таблиц................................................................................................ 132
Клонирование таблиц......................................................................................................................... 132
Создание таблицы на основе данных из разных источников............................................ 133
Предварительный расчет мер для повышения эффективности отчетов....................... 134
Создание иерархий....................................................................................................................... 134
Создание вычисляемых столбцов........................................................................................... 135
Применение ролей безопасности на уровне строк......................................................... 138
Создание ролей в Power BI Desktop.............................................................................................. 138
Выбор роли в Power BI Desktop...................................................................................................... 141
Динамическая безопасность на уровне строк.......................................................................... 142
Настройка инструмента Вопросы и ответы (Q&A)........................................................... 145
Обучение визуального элемента Вопросы и ответы............................................................. 147
Синонимы................................................................................................................................................. 149
Навык 2.3. Создание мер с использованием языка DAX..................................................... 150
Использование языка DAX для написания сложных мер............................................. 151
Использование функции CALCULATE для манипулирования фильтрами.............. 155
Добавление фильтров......................................................................................................................... 155
Удаление фильтров............................................................................................................................... 156
Изменение фильтров........................................................................................................................... 157
Преобразование контекста............................................................................................................... 158
Логика операций со временем с применением DAX...................................................... 161
Замена числовых столбцов на меры..................................................................................... 164
Оглавление    9

Использование базовых статистических функций для обогащения данных....... 165


Создание полуаддитивных мер............................................................................................... 166
Навык 2.4. Оптимизация производительности модели данных....................................... 169
Удаление ненужных строк и столбцов.................................................................................. 169
Удаление ненужных строк................................................................................................................. 169
Удаление ненужных столбцов.......................................................................................................... 170
Определение мер, визуальных элементов и связей, негативно влияющих
на производительность............................................................................................................ 170
Улучшение ситуации с кратностью столбцов путем изменения типов данных....... 172
Улучшение ситуации с кратностью столбцов при помощи суммирования
данных............................................................................................................................................ 173
Создание и управление агрегациями.................................................................................... 174
Заключение...................................................................................................................................... 176
Мысленный эксперимент............................................................................................................ 178
Ответы................................................................................................................................................ 181
Глава 3. Визуализация данных.........................................................................................184
Навык 3.1. Создание отчетов.......................................................................................................... 184
Добавление элементов визуализации в отчет................................................................... 185
Выбор подходящего типа элемента визуализации......................................................... 186
Линейчатая диаграмма....................................................................................................................... 187
График и диаграмма с областями................................................................................................... 188
Комбинированная диаграмма......................................................................................................... 189
Ленточная диаграмма......................................................................................................................... 190
Каскадная диаграмма......................................................................................................................... 191
Воронка..................................................................................................................................................... 192
Точечная диаграмма............................................................................................................................ 193
Круговая и кольцевая диаграммы................................................................................................. 194
Диаграмма дерева................................................................................................................................ 195
Карта................................................................................................................................................... 196
Датчик........................................................................................................................................................ 197
Карточка, многострочная карточка и KPI.................................................................................... 198
Визуальные элементы с искусственным интеллектом........................................................... 199
Форматирование и настройка визуализаций.................................................................... 200
Импортирование пользовательских визуализаций......................................................... 200
AppSource................................................................................................................................................. 201
Из файла................................................................................................................................................... 202
Настройка условного форматирования................................................................................ 202
Применение срезов и фильтров.............................................................................................. 204
Срезы.......................................................................................................................................................... 204
Панель фильтров................................................................................................................................... 206
Добавление визуальных элементов R и Python................................................................ 208
Настройка страницы отчета....................................................................................................... 211
Настройка специальных возможностей в отчетах........................................................... 212
Имена страниц, заголовки и метки................................................................................................ 213
10    Оглавление

Маркеры.................................................................................................................................................... 214
Альтернативный текст.......................................................................................................................... 214
Порядок табуляции............................................................................................................................... 214
Тема отчета и выбор цвета................................................................................................................ 215
Настройка автоматического обновления страниц........................................................... 216
Фиксированный интервал................................................................................................................. 217
Обнаружение изменений.................................................................................................................. 217
Создание отчетов с разбивкой на страницы...................................................................... 219
Навык 3.2. Создание дашбордов.................................................................................................. 221
Управление плитками на дашборде...................................................................................... 221
Настройка мобильного отображения.................................................................................... 223
Конфигурирование оповещений о данных......................................................................... 225
Использование визуального элемента Вопросы и ответы........................................... 226
Добавление темы дашборда..................................................................................................... 227
Закрепление динамической страницы отчета на дашборде....................................... 228
Навык 3.3. Повышение удобства использования отчетов.................................................. 229
Настройка закладок...................................................................................................................... 230
Создание пользовательских подсказок................................................................................ 233
Настройка и конфигурирование взаимодействий между визуальными
элементами................................................................................................................................... 236
Настройка навигации по отчету............................................................................................... 237
Применение сортировки............................................................................................................. 238
Синхронизация срезов................................................................................................................ 240
Использование панели Выбор................................................................................................. 242
Применение детализации и кросс-фильтрации................................................................ 243
Углубление в данные с использованием интерактивных визуальных
элементов...................................................................................................................................... 245
Экспорт данных отчета................................................................................................................ 247
Разработка отчетов для мобильных устройств.................................................................. 247
Заключение...................................................................................................................................... 249
Мысленный эксперимент............................................................................................................ 252
Ответы................................................................................................................................................ 253

Глава 4. Анализ данных......................................................................................................255


Навык 4.1. Повышение эффективности отчетов за счет выделения важных
аналитических выводов........................................................................................................... 255
Применение условного форматирования........................................................................... 256
Таблицы и матрицы.............................................................................................................................. 256
Другие визуальные элементы.......................................................................................................... 260
Анализ ведущих N элементов................................................................................................... 261
Фильтр уровня визуализации.......................................................................................................... 261
Вопросы и ответы................................................................................................................................. 261
DAX .......................................................................................................................................................... 262
Оглавление    11

Исследование статистической сводки.................................................................................. 263


Добавление результатов краткой аналитики (Quick Insights) на дашборд........... 265
Создание опорных линий с помощью панели Аналитика (Analytics)...................... 266
Использование оси воспроизведения (Play Axis) и проведение анализа
на основе временных рядов................................................................................................. 268
Персонализация визуальных элементов.............................................................................. 270
Навык 4.2. Выполнение углубленного анализа....................................................................... 271
Определение выбросов в данных........................................................................................... 272
Группирование данных и разделение на ячейки............................................................. 274
Группирование данных....................................................................................................................... 274
Разделение на ячейки......................................................................................................................... 276
Использование элемента Ключевые факторы влияния для анализа
по измерениям............................................................................................................................ 277
Применение дерева декомпозиции для анализа мер................................................... 279
Применение аналитики ИИ....................................................................................................... 280
Заключение...................................................................................................................................... 282
Мысленный эксперимент............................................................................................................ 284
Ответы................................................................................................................................................ 285
Глава 5. Развертывание и поддержка.............................................................................287
Навык 5.1. Управление наборами данных................................................................................ 287
Настройка запланированного обновления набора данных........................................ 288
Доступ к локальным данным............................................................................................................ 288
Настройка запланированного обновления................................................................................ 290
Настройка членства в группах безопасности на уровне строк.................................. 291
Присвоение ролей в службе Power BI.......................................................................................... 291
Просмотр в качестве роли в службе Power BI.......................................................................... 293
Обеспечение доступа к наборам данных............................................................................ 294
Доступ через рабочую область........................................................................................................ 294
Доступ через приложение................................................................................................................. 294
Управлением разрешениями наборов данных........................................................................ 295
Анализ влияния...................................................................................................................................... 297
Настройка инкрементного обновления наборов данных............................................. 297
Создание параметров RangeStart и RangeEnd......................................................................... 298
Фильтрация с использованием созданных параметров....................................................... 299
Определение политики инкрементного обновления............................................................ 301
Свертывание запросов....................................................................................................................... 302
Рекомендация и сертификация содержимого в Power BI............................................. 303
Настройка формата хранения крупных наборов данных............................................. 305
Навык 5.2. Создание и управление рабочими областями.................................................. 307
Создание и настройка рабочей области.............................................................................. 308
Рекомендованная стратегия жизненного цикла разработки...................................... 310
Параметры............................................................................................................................................... 310
Конвейеры развертывания............................................................................................................... 311
12    Оглавление

Присвоение ролей рабочей области..................................................................................... 313


Настройка и публикация приложения рабочей области............................................... 314
Установка.................................................................................................................................................. 315
Переходы.................................................................................................................................................. 316
Разрешения............................................................................................................................................. 317
Вид приложения.................................................................................................................................... 317
Обновление опубликованного приложения.............................................................................. 318
Отмена публикации приложения................................................................................................... 319
Публикация, импорт и обновление элементов рабочей области.............................. 319
Применение меток конфиденциальности к содержимому рабочей области....... 320
Настройка подписок..................................................................................................................... 321
Подписка на содержимое.................................................................................................................. 321
Управление подписками.................................................................................................................... 323
Заключение...................................................................................................................................... 323
Мысленный эксперимент............................................................................................................ 325
Ответы................................................................................................................................................ 327
Предметный указатель......................................................................................................328
Предисловие от издательства

Отзывы и пожелания
Мы всегда рады отзывам наших читателей. Расскажите нам, что вы ду-
маете об этой книге, – что понравилось или, может быть, не понравилось.
Отзывы важны для нас, чтобы выпускать книги, которые будут для вас мак-
симально полезны.
Вы можете написать отзыв прямо на нашем сайте www.dmkpress.com,
зайдя на страницу книги, и оставить комментарий в разделе «Отзывы и
рецензии». Также можно послать письмо главному редактору по адресу
dmkpress@gmail.com, при этом напишите название книги в теме письма.
Если есть тема, в которой вы квалифицированы, и вы заинтересованы
в написании новой книги, заполните форму на нашем сайте по адресу
http://dmkpress.com/authors/publish_book/ или напишите в издательство по
ад­ресу dmkpress@gmail.com.

Список опечаток
Хотя мы приняли все возможные меры для того, чтобы удостовериться
в качестве наших текстов, ошибки все равно случаются. Если вы найдете
ошибку в одной из наших книг – возможно, ошибку в тексте или в коде, –
мы будем очень благодарны, если вы сообщите нам о ней. Сделав это, вы
избавите других читателей от расстройств и поможете нам улучшить по-
следующие версии этой книги.
Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них
главному редактору по адресу dmkpress@gmail.com, и мы исправим это в
следующих тиражах.

Нарушение авторских прав


Пиратство в интернете по-прежнему остается насущной проблемой.
Издательства «ДМК Пресс» очень серьезно относится к вопросам защиты
авторских прав и лицензирования. Если вы столкнетесь в интернете с не-
законно выполненной копией любой нашей книги, пожалуйста, сообщите
нам адрес копии или веб-сайта, чтобы мы могли применить санкции.
Пожалуйста, свяжитесь с нами по адресу электронной почты dmkpress@
gmail.com со ссылкой на подозрительные материалы.
Мы высоко ценим любую помощь по защите наших авторов, помогаю-
щую нампредоставлять вам качественные материалы.
Благодарности
Я бы хотел выразить благодарность Лоретте Йейтс (Loretta Yates) за доверие
в написании второй книги для подготовки к экзамену по Power BI, Харви
Ароре (Charvi Arora) – за ведение проекта, Трейси Крум (Tracey Croom) – за
обеспечение выпуска книги и всем в издательстве Pearson, кто приложил
руку к ее выходу. Также я хотел бы поблагодарить технических редакто-
ров – Клэр Митчелл (Claire Mitchell) и Оуэна Аугера (Owen Auger) – за тща-
тельную проверку книги и избавление ее от ошибок и опечаток.
Стоит отметить и людей, повлиявших на мое увлечение Power BI. Габри-
эль Поло Рейес (Gabriel Polo Reyes) сыграл важную роль в моем знакомстве
с  миром Microsoft BI. А мой первый клиент Томас ван Флит (Thomas van
Vliet) не придал значения отсутствию у меня коммерческого опыта в Power
BI, в результате чего наша совместная работа позволила мне выйти на но-
вый уровень в освоении этого инструмента бизнес-аналитики.
Об авторе
Даниил Маслюк (Daniil Maslyuk) является независи-
мым консультантом в области бизнес-аналитики, а
также занимается преподавательской деятельностью
и выступает в качестве спикера на мероприятиях, по-
священных Microsoft Power BI. Даниил ведет блог на
сайте xxlbi.com и Twitter: @DMaslyuk.
Введение

Экзамен DA-100: Analyzing Data with Microsoft Power BI, как понятно из на-
звания, посвящен анализу данных при помощи Microsoft Power BI. Пример-
но четверть экзамена отводится на подготовку данных, включая их получе-
ние из различных источников, профилирование, очистку, преобразование
и загрузку. Около 30 % вопросов на экзамене касается моделирования
данных. Сюда относится проектирование модели, ее разработка и опти-
мизация. Еще треть экзамена посвящена визуализации и анализу данных,
включая создание отчетов и дашбордов, а также проведение углубленного
анализа данных. Ну, и остаток экзамена и книги, которую вы держите в
руках, будет отведен на обсуждение вопросов, связанных с управлением
наборами данных и рабочими областями в службе Power BI.
Экзамен DA-100 нацелен на профессионалов в области бизнес-аналити-
ки, аналитиков данных и специалистов по проектированию и созданию от-
четов, желающих проверить и подтвердить свои навыки в анализе данных
при помощи Power BI. Для успешной сдачи экзамена необходимо хорошо
разбираться в вопросах получения данных, их подготовки, преобразова-
ния, моделирования и визуализации средствами Power BI Desktop, а также
уметь размещать отчеты и дашборды в общем доступе.
В данной книге мы подробно обсудим все основные темы для подготовки
к экзамену. В то же время вы не встретите в ней конкретных экзаменацион-
ных вопросов, доступ к которым есть только у экзаменационной команды
Microsoft. К тому же список актуальных вопросов постоянно обновляется и
дополняется, в связи с чем осветить все из них просто не представляется
возможным. Эту книгу скорее стоит рассматривать в качестве дополнения
к другим обучающим материалам и вашему жизненному опыту в области
анализа данных. При необходимости самостоятельно узнать больше о той
или иной теме вы можете обращаться к соответствующим ссылкам в секци-
ях «Дополнительная информация». Кроме того, массу полезной информа-
ции можно найти на сайтах MSDN и TechNet, а также в блогах и на форумах.

Структура книги
Данная книга организована согласно списку проверяемых на экзамене на-
выков. Со списком навыков для каждого экзамена можно ознакомиться на
сайте Microsoft Learn по адресу http://aka.ms/examlist в разделе Skills measured.
Каждая глава книги посвящена отдельной теме из этого списка, а разделы
внутри главы описывают технические нюансы реализации того или иного
аспекта темы. К примеру, если экзамен включает в себя шесть главных тем,
в книге будет шесть глав.
Сопроводительные файлы    17

Подготовка к экзамену
Успешная сдача сертификационного экзамена Microsoft – это прекрасный
способ дополнить свое резюме и заявить окружающим о своем уровне
знаний в конкретной области. Экзамен в полной мере подтверждает ваши
знания и опыт. И хотя практический опыт ничто заменить не может, под-
готовка к экзамену путем освоения материала в теории и проверки его на
практике вполне может принести успех. Данная книга не ставит себе целью
научить вас новым навыкам.
Лучше всего готовиться к экзамену комплексно, изучая все доступные
материалы и проходя курсы. Например, вы можете читать данную кни-
гу и другие пособия и одновременно с этим пройти обучение на курсах
Microsoft Official Curriculum. Выберите оптимальную для себя комбинацию
обучающих материалов. Подробнее о курсах и обучающих мероприятиях
от Microsoft вы можете узнать по адресу http://microsoft.com/learn. Практиче-
ские тесты для сертификационных экзаменов от Microsoft по различным
дисциплинам можно найти по следующей ссылке: http://aka.ms/practicetests.
Обратите внимание, что данная книга написана на основании информа-
ции, находящейся в общем доступе, и личного опыта автора. Из соображе-
ний профессиональной этики автор книги не имел доступа к актуальным
экзаменационным вопросам.

Сертификация Microsoft
Наличие сертификата Microsoft выделяет вас из общей массы специали-
стов, свидетельствуя об обширном наборе знаний и опыта в работе с теку-
щей линейкой продуктов и технологий от Microsoft. Экзамены и соответ-
ствующие им сертификаты разработаны с целью подтвердить ваш статус
разработчика локальных и облачных решений на базе продуктов и техно-
логий Microsoft. Сертификат дает большие преимущества как сотруднику,
так и работодателю и компании в целом.

ИНФОРМАЦИЯ. Все сертификаты Microsoft


Полный список сертификатов Microsoft и дополнительную информа-
цию о них можно найти на странице www.microsoft.com/learn.

Список доступных сертификатов Microsoft постоянно обновляется, сле-


дите за информацией на сайте.

Сопроводительные файлы
Большинство глав из этой книги включает в себя практические упражнения
на закрепление полученных знаний. Сопроводительный файлы для упраж-
18    Введение

нений можно скачать по адресу http://MicrosoftPressStore.com/ExamRefDA100PowerBI/


downloads.
К книге прилагаются два типа файлов.
1. Файлы источников, необходимые для работы в Power Query:
■■ папка Targets;
■■ файл Inventory.xlsx;
■■ файл WideWorldImporters.xlsx.
2. Папка Power BI, содержащая файлы с расширением PBIX.
В упражнениях мы будем предполагать, что вы загрузили сопроводи-
тельные файлы в папку C:\DA-100.

Список ссылок на источники в сети


На протяжении книги автор рекомендует обращаться за дополнительной
информацией в интернете. Ссылки на некоторые из этих источников очень
длинные, и мы решили сократить их для удобства использования. Кроме
того, мы собрали весь список в один файл PDF, к которому вы можете об-
ращаться в процессе чтения книги.
Скачать список можно по ссылке http://MicrosoftPressStore.com/
ExamRefDA100PowerBI/downloads в разделе Downloads.
Ссылки организованы по главам и заголовкам. Каждый раз, когда вы
встречаете ссылку в книге, вы можете найти в списке соответствующий
адрес и открыть его.

Ошибки, обновления и поддержка


Мы сделали все возможное, чтобы ошибки и опечатки не пробрались в
книгу и сопроводительные файлы. Вы можете получить доступ ко всем ис-
правлениям в книге по ссылке http://MicrosoftPressStore.com/ExamRefDA100PowerBI/
errata. Если вы обнаружите в книге ошибку, не присутствующую в данном
списке, просьба сообщить о ней на той же странице.
Для поддержки и дополнительной информации о книге вы можете
перей­ти на страницу http://www.MicrosoftPressStore.com/Support.
Обратите внимание, что Microsoft не осуществляет поддержку прог­
раммного и аппаратного обеспечения по приведенным выше ссылкам. Для
получения помощи обращайтесь по адресу http://support.microsoft.com.

Оставайтесь на связи
Давайте продолжим общение! Наш Twitter: http://twitter.com/MicrosoftPress.
Глава 1
Подготовка данных

За последние пять лет Microsoft Power BI превратился из новичка в мире


бизнес-аналитики в один из самых мощных аналитических инструментов
для визуализации данных. Но, перед тем как начать анализировать инфор-
мацию, мы должны подготовить ее, представить в виде модели и визуа-
лизировать. В данной главе мы будем говорить о первом шаге, а именно о
подготовке данных, – пройдемся по всем навыкам, необходимым для за-
грузки данных в программу Power BI Desktop.
Начнем с действий, которые нужно выполнить для подключения к раз-
личным источникам данных. После этого подробно поговорим о техни-
ках профилирования данных, которые помогают вам, как бы это сказать,
почувст­вовать информацию. Далее мы перейдем к описанию процесса
очистки и преобразования данных при помощи Power Query – во многих
проектах, связанных с анализом информации, этот этап занимает непро-
порционально большое количество времени. В завершение главы посмо-
трим, как можно отлавливать и исправлять ошибки, возникшие при за-
грузке.
Навыки, описываемые в данной главе.
■■ 1.1. Получение данных из различных источников.
■■ 1.2. Профилирование данных.
■■ 1.3. Очистка, преобразование и загрузка данных.

Навык 1.1. Получение данных из различных


источников
Вне зависимости от того, с каким источником данных вы имеете дело, пре-
жде чем начать работать с информацией в Power BI, ее нужно получить.
Power BI умеет подключаться к самым разнообразным источникам данных
(data source), количество которых с каждым месяцем увеличивается. Кроме
того, вы можете создавать собственные коннекторы (connector) к данным
из Power BI, что фактически снимает любые ограничения на возможности
получения информации извне.
20    Глава 1. Подготовка данных

В основе процесса получения данных лежит хорошее понимание биз-


нес-требований и особенностей вашего источника данных. К примеру,
если вам необходимо работать с данными почти в реальном времени (near-
real-time data), процедура получения информации будет значительно от-
личаться от ситуации, когда данные должны обновляться с некоторой пе-
риодичностью. Как вы совсем скоро узнаете, разные источники данных
поддерживают разные режимы подключения.

Основные составляющие навыка:


■■ распознавание источника данных и подключение к нему;
■■ изменение настроек источника данных;
■■ выбор между использованием общего набора данных и созда-
нием локального;
■■ выбор режима хранения;
■■ выбор подходящего типа запроса;
■■ поиск проблем с производительностью запросов;
■■ использование облачного хранилища Microsoft Dataverse;
■■ применение параметров;
■■ использование и создание файла PBIDS;
■■ использование и создание потока данных;
■■ подключение к набору данных с использованием конечных то-
чек XMLA.

Распознавание источника данных


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

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Источники данных в Power BI


Полный список источников данных, доступных в Power BI, можно
увидеть по адресу https://docs.microsoft.com/ru-ru/power-bi/power-bi-data-
sources.

Для выбора подходящего коннектора вы должны четко представлять,


что из себя представляет источник. К примеру, вы не можете использо-
вать коннектор Oracle для подключения к базе данных SQL Server, несмо-
тря на то что оба коннектора предназначены для соединения с базами
данных.
Распознавание источника данных и подключение к нему     21

ПРИМЕЧАНИЕ. Сопроводительные файлы


В примерах из этой книги мы будем использовать сопроводительные
файлы, данные в которых основаны на результатах деятельности вы-
мышленной компании Wide World Importers. При этом мы будем исхо-
дить из предположения о том, что вы предварительно скопировали
файлы в папку C:\DA-100.

Для проверки навыков, необходимых для подключения из Power BI к раз-


личным источникам, давайте начнем с открытия файла WideWorldImporters.
xlsx, находящегося в списке сопроводительных файлов к книге.
1. На вкладке Главная (Home) в Power BI выберите пункт Excel.
2. В диалоговом окне Открытие (Open) найдите файл WideWorldImpor­
ters.xlsx и нажмите на кнопку Открыть (Open).
3. В открывшемся окне Навигатор (Navigator) отметьте все восемь
флажков слева. После этого окно должно выглядеть так, как показа-
но на рис. 1.1.

Рис. 1.1. Окно навигации подключения в Power BI

4. Нажмите на кнопку Преобразовать данные (Transform Data). В ре-


зультате откроется окно Редактор Power Query (Power Query Editor),
показанное на рис. 1.2.
Если в окне навигатора нажать на кнопку Загрузить (Load), окно редак-
тора Power Query не появится, и выбранные вами листы Excel откроются
как есть.
Обратите внимание, что в окне навигатора есть предварительный про-
смотр объектов, которые вы выбираете. Например, на рис. 1.1 мы видим
содержимое листа Targets for 2020. Его структура предполагает выполнение
22    Глава 1. Подготовка данных

предварительной обработки перед загрузкой, поскольку в первых строках


листа мы видим несколько странных значений.

Рис. 1.2. Редактор Power Query

Окно Навигатор открывается не только при импорте данных из Excel.


Такое же окно вы увидите, например, при подключении к сложным источ-
никам – скажем, к базам данных.

ПРИМЕЧАНИЕ. Информация в предварительном просмотре


В целях ускорения работы с данными в Power Query предусмотрен
механизм кеширования предварительного просмотра. Таким обра-
зом, если ваши данные часто меняются, вы можете видеть в редакто-
ре Power Query не самую актуальную информацию. Для обновления
предварительного просмотра на вкладке Главная (Home) нажмите на
кнопку Обновить предварительный просмотр (Refresh Preview). Для
актуализации данных во всех запросах раскройте эту выпадающую
кнопку и выберите пункт Обновить все (Refresh All).

Преобразованием данных мы займемся позже в этой главе, а пока да-


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

1. На вкладке Главная (Home) нажмите на выпадающую кнопку Со-


здать источник (New source) и выберите пункт Дополнительно
(More).
2. В открывшемся окне Получить данные (Get data) выберите пункт
Папка (Folder) и нажмите на кнопку Подключить (Connect).
Распознавание источника данных и подключение к нему     23

3. Нажмите на кнопку Обзор (Browse), перейдите в папку C:\DA-100\


Targets и дважды нажмите на кнопку OK. Должен открыться список
файлов, показанный на рис. 1.3.

Рис. 1.3. Список файлов из папки C:\DA-100\Targets

4. Нажмите на кнопку Объединить и преобразовать данные (Combine


& Transform Data).
5. В открывшемся окне Объединить файлы (Combine files) нажмите
на кнопку OK, не производя никаких изменений.
На данном этапе вы подключились к двум источникам одновременно –
к файлу Excel и к папке, содержащей несколько файлов CSV.
И хотя мы не указывали тип файлов при подключении явно, Power Query
автоматически определил его и применил подходящие преобразования.
Помимо файлов Excel и CSV, Power BI умеет подключаться и ко многим дру-
гим типам файлов, включая JSON, XML, PDF и базы данных Access.

ВАЖНО. Единство форматов


Очень важно, чтобы форматы открываемых файлов в папке совпада-
ли – в противном случае вы можете столкнуться с серьезными про-
блемами. Power Query применяет одинаковые преобразования ко
всем файлам в папке, а решение о применяемых трансформациях
принимается на основе файла, выбранного в поле Пример (Sample
file) на этапе объединения файлов.

Редактор Power Query


Если вы в точности следовали всем приведенным выше инструкциям,
ваше окно редактора Power Query в данный момент должно выглядеть так,
как на рис. 1.4.
24    Глава 1. Подготовка данных

Рис. 1.4. Редактор Power Query после подключения к файлу Excel и папке

Как видите, по вашему требованию автоматически объединить все фай-


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Вы можете увидеть все произведенные до сих пор действия, открыв
файл 1.1.1 Connect to data sources.pbix, находящийся в папке Power BI
files в архиве с сопроводительными файлами.

Зависимости запросов
Вы можете отследить все зависимости (query dependencies) созданных
запросов, нажав на кнопку Зависимости запроса (Query dependencies)
на вкладке Просмотр (View). В открывшемся окне будет отображена диа-
грамма с двумя источниками данных и всеми созданными запросами, как
показано на рис. 1.5.

Рис. 1.5. Окно зависимостей запроса


Изменение настроек источника данных    25

Для просмотра зависимостей конкретного запроса выделите его, и Power


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

Изменение настроек источника данных


После подключения к источнику данных вам может понадобиться из-
менить некоторые его настройки. К примеру, если вы перенесете файл
WideWorldImporters.xlsx в другую папку, вам придется обновить путь к нему
в Power BI для продолжения работы с ним.
Изменить настройки источника данных можно, нажав на иконку с шесте-
ренкой справа от шага Источник (Source) в разделе Примененные шаги
(Applied steps) на панели Параметры запроса (Query Settings) в редакторе
Power Query. В открывшемся окне вы можете отредактировать путь к файлу
и его тип. Недостатком такого подхода является то, что вам необходимо бу-
дет производить изменения в каждом запросе, ссылающемся на файл, что
при большом количестве запросов может быть довольно обременительно
и рискованно с точки зрения возникновения ошибок.
Еще один способ внести изменения в источник данных – нажать на кноп-
ку Настройки источника данных (Data source settings) на вкладке Глав-
ная (Home). Это приведет к открытию одноименного диалогового окна,
показанного на рис. 1.6.

Рис. 1.6. Окно изменения настроек источника данных


26    Глава 1. Подготовка данных

В этом окне вы можете изменить настройки источника данных для


нескольких запросов одновременно, нажав на кнопку Изменить источ-
ник (Change Source). Управлять разрешениями (permissions) для каждого
источника данных можно, нажимая на кнопки Править разрешения (Edit
Permissions) и Очистить разрешения (Clear Permissions). Разрешения
включают в себя учетные данные (credentials), используемые для подклю-
чения к источнику, и настройку уровня конфиденциальности (privacy level).
Об уровне конфиденциальности стоит помнить при объединении несколь-
ких источников данных в одном запросе. Подробнее об этом мы поговорим
далее в этой главе.

Выбор между использованием общего


набора данных и созданием локального
До сих пор в этой главе мы создавали свои собственные наборы данных,
также называемые локальными (local dataset). Но, если набор данных, под-
готовленный и опубликованный в службе Power BI ранее вами или кем-то
другим, уже существует, он именуется общим (shared dataset), и вы можете
подключиться к нему. Использование общих наборов данных дает следую-
щие преимущества:
■■ данные в разных отчетах будут одинаковыми;
■■ во время подключения к общему набору данных не происходит не-
нужного копирования данных;
■■ вы можете создать копию существующего отчета и изменить ее, что
занимает меньше времени, чем создавать отчет с нуля.

НА ПРАКТИКЕ. Использование общих наборов данных


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

Чтобы иметь возможность подключаться к опубликованному набору


данных, вам необходимо обладать разрешением на сборку (Build permission)
или быть участником рабочей области, в которой располагается набор дан-
ных. Подробнее о разрешениях мы будем говорить в главе 5.
К общему набору данных вы можете подключаться как из Power BI
Desktop, так и из службы Power BI:
■■ в Power BI Desktop нажмите на вкладке Главная (Home) на кнопку
Наборы данных Power BI (Power BI datasets);
■■ в службе Power BI, находясь в рабочей области, выберите пункт От-
чет (Report) в меню Создать (New).
Выбор между использованием общего набора данных и созданием локального    27

В том и другом случае вы увидите список общих наборов данных, к кото-


рым можете подключиться, как показано на рис. 1.7. Кроме того, в службе
Power BI вы можете выбрать пункт Сохранить копию (Save a copy) напро-
тив отчета в рабочей области для создания дубликата отчета без необходи-
мости делать копию набора данных. Это похоже на обычное подключение
к набору данных в Power BI Desktop, поскольку вы создадите отчет без со-
ответствующей ему модели данных.

Рис. 1.7. Список доступных наборов данных

После выполнения подключения к общему набору данных в Power BI


Desktop некоторые кнопки интерфейса могут стать недоступными по при-
чине ограничений на режим подключения. К примеру, в этом случае вам
будет недоступен редактор Power Query и вкладка Данные (Data). А в ниж-
нем правом углу вы увидите название набора данных и рабочей области, к
которой подключены, как показано на рис. 1.8.

Рис. 1.8. Power BI Desktop подключен к набору данных Power BI

Несмотря на то что кнопка преобразования данных не активна, вы мо-


жете раскрыть ее и выбрать пункт настройки источника данных для изме-
нения набора данных, к которому вы подключены.
Обратите внимание, что вы по-прежнему можете создавать меры, и они
будут сохраняться в вашем файле PBIX, но не в самом общем наборе дан-
ных. Это не позволит другим пользователям, подключенным к этому набо-
ру данных, видеть созданные вами меры. Такие меры называются локаль-
ными (local) или мерами уровня отчета (report-level measure). О создании
мер мы подробно поговорим в главе 2.
28    Глава 1. Подготовка данных

Выбор режима хранения


Наиболее распространенным способом получения данных в Power BI явля-
ется импорт в модель данных. Импортируя данные, вы фактически создае-
те их копию, которая остается статической вплоть до момента обновления.
При этом в случае с данными из файлов и папок, к которым мы подключа-
лись ранее в этой главе, вам доступен только импорт в Power BI, тогда как
при соединении с базами данных есть два возможных варианта.
Первый из них подразумевает импорт данных в Power BI и их кеширо-
вание. Этот способ предполагает максимальную гибкость в отношении мо-
делирования данных, поскольку вам будут доступны все без исключения
средства моделирования Power BI.
Второй подход, получивший название DirectQuery, связан с подключе-
нием к данным, хранящимся непосредственно в источнике. В этом случае
данные не кешируются в Power BI. Вместо этого при каждом взаимодей-
ствии с элементом визуализации в Power BI создается и отправляется за-
прос в базу данных. Далеко не любые источники данных поддерживают
режим хранения DirectQuery.
Особый случай режима хранения DirectQuery под названием Live
Connection доступен для Analysis Services (как в табличном (Tabular), так и в
многомерном (Multidimensional) режиме) и службы Power BI. Этот тип под-
ключения гарантирует, что все вычисления будут выполняться в соответ-
ствующей модели данных.

Режим импорта данных


При импорте данных (import data) вы создаете их полную копию в Power
BI. А поскольку в основе Power BI лежит движок столбчатых баз данных,
работающий с памятью, такой способ подключения ведет к повышенно-
му расходу оперативной памяти и дискового пространства, – ведь данные
фактически хранятся в файлах. На этапе разработки проекта данные рас-
ходуют память и дисковое пространство на вашей рабочей машине, а пос-
ле публикации отчета ресурсы будут расходоваться на сервере. Вывод про-
стой – вам не удастся загрузить в Power BI данных больше, чем позволяет
ваше оборудование. Это может стать проблемой при работе с действитель-
но большими объемами данных.
У вас есть возможность выполнить преобразование данных перед их им-
портом в Power BI, и в этом случае вы будете ограничены только функци-
оналом этого инструмента. Если загрузить ограниченный набор таблиц из
базы данных и применить фильтр к некоторым таблицам, в Power BI будут
импортированы только отфильтрованные данные.
После загрузки в Power BI данные сжимаются при помощи движка и
хранятся в сжатом виде. Степень компрессии при этом зависит от множе-
ства факторов, включая типы данных столбцов, их значения и кратность
(cardinality). В большинстве случаев итоговые данные после загрузки в
Power BI будут занимать намного меньше места, чем в источнике.
Выбор режима хранения    29

Одним из преимуществ этого типа подключения является возможность


использования всего функционала Power BI без ограничений, включая об-
работку данных в редакторе Power Query и применение функций на языке
DAX при моделировании данных.
Кроме того, вы можете объединять в одной модели данные, импортиро-
ванные из разных источников. Например, ничто не мешает вам собрать в
одной таблице информацию из базы данных и файла Excel.
Еще одним преимуществом этого типа подключения можно назвать ско-
рость вычислений. Поскольку Power BI хранит данные в памяти в сжатом
виде, при доступе к данным практически не возникает задержки. Также
стоит отметить, что движок Power BI очень хорошо оптимизирован для вы-
числений, что положительно сказывается на скорости расчетов.
Импортированные данные можно увидеть в Power BI Desktop на левой
вкладке Данные (Data), а связи между загруженными таблицами –  на
вкладке Модель (Model). Кнопки Отчет (Report), Данные (Data) и Модель
(Model), расположенные на левой панели, показаны на рис. 1.9.

Рис. 1.9. Вид Power BI Desktop при импорте данных

Режим DirectQuery
При использовании режима подключения DirectQuery данные в Power
BI не кешируются. Вместо этого все они остаются в источнике, за исклю-
чением метаданных, которые попадают в кеш Power BI. Эти метаданные
включают в себя названия таблиц и столбцов, типы данных и связи между
таблицами.
При работе с большинством источников данных, поддерживающих ре-
жим DirectQuery, во время подключения вы выбираете сущности (entity),
такие как таблицы или представления. Каждая сущность в модели данных
превращается в таблицу. Все происходит примерно так же, как при работе с
окном навигатора во время импорта данных из рабочей книги Excel.
При использовании в модели данных только режима подключения
DirectQuery размер файла Power BI будет несоизмеримо меньшим по срав-
нению со сценарием с импортом данных.
Главным преимуществом этого типа подключения к данным является то,
что вы не ограничены ресурсами компьютера для разработки и сервера, на
30    Глава 1. Подготовка данных

котором будете публиковать отчеты. Все данные остаются в источнике, и


вычисления производятся там же.
При выборе режима DirectQuery таблицы не будут видны на вкладке
Данные (Data) в Power BI Desktop. Более того, если все таблицы в модели
данных будут загружены в таком режиме, кнопка Данные (Data) на левой
панели будет просто отсутствовать за ненадобностью, при этом вы сможете
продолжать пользоваться вкладкой Модель (Model). Фрагмент интерфейса
Power BI Desktop при работе с режимом DirectQuery показан на рис. 1.10.

Рис. 1.10. Интерфейс Power BI Desktop при выборе режима хранения DirectQuery

Режим Live Connection


Для наборов данных службы Power BI и моделей данных Analysis Services
доступен особый режим подключения DirectQuery, называемый Live
Connection. Он отличается от обычного DirectQuery тем, что:
■■ вы не можете применять операции преобразования к данным;
■■ вы не можете устанавливать физические связи;
■■ процесс моделирования данных ограничен созданием мер.
Вы можете рассмотреть режим Live Connection вместо импорта по при-
чине расширенных возможностей моделирования данных и улучшенной
безопасности в источнике данных. В отличие от DirectQuery при работе с
некоторыми базами данных, режим Live Connection подразумевает строгое
фиксирование имен пользователей, просматривающих отчет. Это позволя-
ет настроить систему безопасности динамически. Кроме того, SQL Server
Analysis Services может быть настроен на любую частоту обновления дан-
ных, тогда как в службе Power BI обновления регулируются расписанием,
ограниченным восемью сеансами в день без покупки дорогостоящей вер-
сии Power BI Premium.

Составные модели
Составная модель (composite model) представляет собой модель данных,
сочетающую в себе импортированные данные и информацию, доступ к
которой осуществляется в режиме DirectQuery, либо данные, полученные
в режиме DirectQuery из разных источников. Например, вы можете брать
Выбор режима хранения    31

актуальную информацию о продажах непосредственно из базы данных по-


средством DirectQuery и импортировать данные о планах продаж из Excel.
Скомбинировать оба источника данных в одной модели можно, создав со-
ставную модель.

ВАЖНО. Потенциальные проблемы с безопасностью в составных


моделях
Создание и использование составных моделей данных может быть
сопряжено с серьезными рисками в отношении безопасности. К при-
меру, данные из файла Excel могут быть посланы в запросе в базу
данных, и администратор баз данных получит к ним доступ.

В составной модели данных свойство режим хранения (storage mode) для


каждой таблицы определяет тип подключения к ней. Посмотреть значение
этого свойства можно во всплывающей подсказке при наведении мыши
на таблицу в панели Поля (Fields) на вкладке Отчет (Report) или Данные
(Data). Также вы можете посмотреть и изменить это свойство на вкладке
Модель (Model) в секции Дополнительно (Advanced) на панели Свойства
(Properties) для выбранной таблицы. Здесь режим хранения может быть
установлен в одно из трех значений:
„„Импорт (Import);
„„DirectQuery;
„„Двойной (Dual).

Двойной режим (Dual) предполагает, что таблица может как кешировать-


ся, так и извлекаться в режиме DirectQuery, когда это необходимо, – в за-
висимости от режимов хранения других таблиц, участвующих в запросе.
Этот режим может оказаться полезным, когда у вас есть таблица, связанная
одновременно с импортированными таблицами и таблицами с режимом
подключения DirectQuery. Рассмотрим для примера модель данных, пока-
занную в табл. 1.1.
Таблица 1.1. Пример модели данных
Имя таблицы Источник данных Режим хранения
Sales База данных DirectQuery
Date База данных Двойной
Targets Файл Excel Импорт

В представленной модели данных таблица Date одновременно связана


и с таблицей Sales, и с Targets. Когда вы запрашиваете данные в запросе из
таблиц Date и Sales, они извлекаются напрямую из базы данных в режиме
DirectQuery, а когда обращаетесь к таблицам Date и Targets, никакие запро-
32    Глава 1. Подготовка данных

сы в базу данных не посылаются, что позволяет повысить производитель-


ность отчетов.

ВАЖНО. Изменение режима хранения


При смене режима хранения с DirectQuery или Двойного на Импорт
важно помнить, что обратного пути нет. Если вам необходимо устано-
вить для таблицы режим Двойной, вы должны сначала создать табли-
цу в режиме DirectQuery.

Выбор подходящего типа запроса


Для достижения максимальной эффективности при работе с данными их
необходимо импортировать. Но есть сценарии, в которых режим хранения
DirectQuery будет даже более предпочтительным по сравнению с импор-
том. Вот некоторые из них:
■■ если размер модели данных превышает объем памяти для ее хране-
ния, режим DirectQuery может стать хорошим вариантом. При этом
не стоит забывать, что производительность отчетов в этом случае
будет зависеть от ресурсов сервера, на котором расположен источ-
ник данных;
■■ если оперативные данные часто подвергаются изменениям, а в от-
четах должна всегда отражаться актуальная информация, режим
DirectQuery будет незаменим. Опять же, при условии, что источник
сможет физически возвращать рассчитанные данные с относитель-
но небольшими задержками. В противном случае нет смысла пы-
таться постоянно обращаться к актуальным данным;
■■ если политика компании предполагает хранение данных в конкрет-
ном источнике, без режима DirectQuery будет не обойтись.

Последствия использования режима DirectQuery


Использование режима хранения DirectQuery может приводить к опи-
санным ниже последствиям в отношении функциональности.

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

просто проблематично использовать. Также стоит учитывать, сможет ли


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

Не все типы запросов допустимы


В режиме хранения DirectQuery можно использовать не все типы запро-
сов к источнику. Когда пользователь взаимодействует с визуальным эле-
ментом в отчете, использующем режим DirectQuery, все запросы на извле-
чение данных объединяются и посылаются на сервер. В связи с этим не
допускается применять нативные для источника запросы, включающие,
например, общие табличные выражения (common table expressions) и хра-
нимые процедуры (stored procedures).

Ограниченная функциональность в отношении


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

Рис. 1.11. Ошибка об отсутствии поддержки операции в режиме DirectQuery

Ограничения в моделировании данных


В области моделирования данных при использовании режима хранения
DirectQuery вы также будете испытывать некоторые ограничения. К моде-
лированию данных относится создание мер, вычисляемых столбцов, ие-
рархий и связей, переименование и скрытие колонок, форматирование
мер и столбцов, а также определение метода сортировки и типа агрегации
для столбцов. Применение режима DirectQuery может быть связано со сле-
дующими ограничениями.
1. В режиме DirectQuery не создаются встроенные таблицы дат для
столбцов, хранящих временные характеристики, как в случае с им-
портом. Эти таблицы используются в вычислениях, связанных с ло-
гикой операций со временем, и, если в источнике есть календарь, он
может быть применен для этих целей.
34    Глава 1. Подготовка данных

2. При работе с вычисляемыми столбцами ограничения режима


DirectQuery могут проявляться двояко. Во-первых, в них может ис-
пользоваться только текущая строка таблицы или связанная строка,
извлеченная по связи «один ко многим», что исключает возможность
применения агрегационных функций. Во-вторых, вычисляемые
столбцы в этом случае могут использовать лишь ограниченный набор
функций, возвращающих скалярные значения, а именно только те из
них, которые могут быть легко переведены на родной для источника
язык. К примеру, вы можете создать столбец Month Name в таблице
Sales с использованием функции RELATED, но при этом не сможете
подсчитать количество строк в таблице Sales для каждой строки в та-
блице Date в вычисляемом столбце, поскольку это потребовало бы
использования агрегационной функции вроде COUNTROWS. Обычно
технология автодополнения функций от Microsoft (IntelliSense) дает
на выбор только поддерживаемые функции.
3. Вычисляемые таблицы не поддерживаются в режиме DirectQuery.
4. Также в режиме DirectQuery нельзя использовать функции иерархий
типа родитель–потомок вроде PATH. Если вам нужно создать иерар-
хию по сотрудникам или план счетов, рассмотрите вариант разме-
щения ее в источнике данных.
5. Недопустимо в режиме DirectQuery строить кластеры (cluster), опи-
рающиеся на функции языка DAX.

В табл. 1.2 мы свели воедино все схожие и различающиеся характеристи-


ки трех режимов подключения к данным при работе в Power BI.
Таблица 1.2. Режимы подключения к данным
Импорт DirectQuery Live Connection
Максимальный Зависит от лицензии: Ограничен аппаратным Служба Power BI: такие
размер модели Power BI Pro: 1 Гб в рас- обеспечением сервера, же ограничения, как в
данных чете на один набор дан- на котором хранится режиме импорта.
ных; источник данных Другие источники: огра-
Power BI Premium: зави- ничен аппаратным обе-
сит от ресурсов спечением сервера, на
котором хранится источ-
ник данных
Количество Без ограничений Без ограничений Только один
источников
данных
Обновление Зависит от лицензии: В отчетах отображается В отчетах отображается
данных Power BI Pro: до 8 раз в актуальная информация актуальная информация
день с 30-мин интерва- из источника данных из источника данных
лами;
Power BI Premium: нео-
граниченно
Поиск проблем с производительностью запросов    35

Импорт DirectQuery Live Connection


Производитель- Лучший вариант Зависит от источника Лучший вариант
ность данных. Будет почти
всегда медленнее по
сравнению с импортом
и Live Connection
Преобразова- Без ограничений Ограничено инструкци- Нет
ние данных ями, которые могут быть
переведены на язык
источника
Моделирование Без ограничений Сильно ограничено Analysis Services и служ-
данных ба Power BI: меры могут
создаваться без ограни-
чений
Безопасность Безопасность на уровне Безопасность на уров- Могут быть применены
строк может быть приме- не строк, определенная правила безопасности
нена на основе инфор- в источнике данных, источника данных на
мации о пользователе доступна не для всех основе информации о
источников. В Power BI пользователе
Desktop безопасность
на уровне строк реали-
зуется

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


Вы должны уметь определять ситуации, в которых уместно применить
режим DirectQuery или Live Connection на основании бизнес-требо-
ваний клиента.

Поиск проблем с производительностью


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

Просмотр машинных запросов


При получении информации в Power BI из определенных источников,
таких как базы данных, инструмент Power Query будет стараться наиболее
эффективно переводить операции преобразования данных на родной язык
для источника – например, на SQL. Такие действия, выполняемые Power
Query, получили название свертывание запросов (query folding). В большин-
стве случаев это приводит к повышению эффективности получения данных
из внешних источников. Допустим, если вы подключаетесь к базе данных и
36    Глава 1. Подготовка данных

извлекаете набор столбцов из таблицы, Power Query может отфильтровать


нужные колонки еще в источнике данных, чтобы не переносить их все и не
выбирать нужные на месте.
В некоторых случаях мы можем посмотреть на сам запрос, который
Power Query отправляет в источник для извлечения данных. Для этого нуж-
но щелкнуть правой кнопкой мыши по запросу в редакторе Power Query
и выбрать пункт Просмотреть машинный запрос (View Native Query).
Окно, которое появится на экране, показано на рис. 1.12.

Рис. 1.12. Окно просмотра машинного запроса


В запросе, показанном на рис. 1.12, мы подключаемся к базе данных SQL
Server, применяем фильтр, выбираем нужные столбцы и заменяем значе-
ния. Поскольку эти операции можно легко перевести на язык запросов SQL,
Power Query решил произвести эти преобразования на стороне источника
данных вместо того, чтобы забирать все данные и обрабатывать их локаль-
но. Это бы негативно сказалось на производительности.
Стоит отметить, что вы не можете редактировать машинный запрос, он
открывается только на просмотр. Если хотите, чтобы Power BI отправлял
определенный запрос на сервер, вы должны представить выражение на
языке запросов SQL при подключении к источнику.
Если пункт Просмотреть машинный запрос не активен, это означает,
что этот источник данных не поддерживает операцию свертывания запро-
сов или конкретный шаг не может быть эффективно переведен на машин-
ный язык. Например, если мы запустим операцию очистки по текстовому
полю, свертывания запроса не произойдет ввиду отсутствия аналогичной
операции в языке запросов SQL.
Поиск проблем с производительностью запросов    37

ВАЖНО. Порядок шагов в Power Query


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

Диагностика запросов
Power BI содержит набор диагностических инструментов (diagnostics
toolset), призванных помочь определить узкие места в запросах. Эти ин-
струменты позволяют вам видеть выпускаемые запросы при их создании
или обновлении набора данных. Особенно полезно использовать диагно-
стические средства при работе с источниками данных, поддерживающими
свертывание запросов. Вы имеете возможность проанализировать полу-
ченные запросы пошагово.
Для рассмотрения процесса диагностики запросов давайте подключим-
ся к каналу OData (OData feed) вымышленной компании AdventureWorks.
1. Создайте новый файл в Power BI Desktop.
2. На вкладке Главная (Home) нажмите на раскрывающуюся кнопку
Получить данные (Get data) и выберите пункт Канал OData (OData
feed).
3. Введите адрес https://services.odata.org/AdventureWorksV3/Adventure-
Works.svc/ в поле «URL-адрес» и нажмите на кнопку OK.
4. Убедитесь, что выбран анонимный доступ к каналу, и нажмите на
кнопку Подключение (Connect).
5. Установите флажок на таблице CompanySales в навигаторе и на-
жмите на кнопку Преобразовать данные (Transform Data).

Теперь, когда вы подключились к каналу OData, можете выполнять пре-


образования данных и видеть, как они будут сказываться на запросе. Чтобы
запустить трассировку в Power Query, перейдите на вкладку Инструменты
(Tools) и нажмите на кнопку Начать диагностику (Start diagnostics). Для
остановки запущенного процесса нажмите на кнопку Остановить диа-
гностику (Stop diagnostics). Также вы можете проанализировать конкрет-
ный примененный шаг – для этого нажмите на кнопку Шаг диагностики
(Diagnose step) или щелкните правой кнопкой мыши по нужному шагу и
выберите в контекстном меню пункт Диагностика (Diagnose). Мы проана-
лизируем один шаг следующим образом.
1. Оставьте в столбце ProductCategory только значения Bikes, воспользо-
вавшись кнопкой фильтрации в заголовке колонки.
38    Глава 1. Подготовка данных

2. Щелкните правой кнопкой мыши по заголовку столбца ProductCategory


и выберите пункт Удалить (Remove).
3. На панели Параметры запроса (Query Settings) нажмите правой
кнопкой мыши по последнему шагу и выберите пункт Диагностика
(Diagnose).

После того как Power Query завершит трассировку, будет создана но-
вая группа запросов с именем Диагностика (Diagnostics), показанная на
рис.  1.13. Все запросы в этой группе начинаются с имени таблицы и за-
канчиваются текущей датой и временем. Запросы хранятся в виде файлов
JSON локально на вашем компьютере. Запрос с пометкой Detailed содержит
больше строк и столбцов по сравнению с запросом Aggregated, представля-
ющим собой итог операции.
Среди прочей информации в трассировке вы увидите время, которое по-
требовалось на выполнение запроса, и сведения о том, был ли машинный
запрос отправлен в источник, что поможет вам понять, было ли произве-
дено свертывание запроса. В запросах Aggregated и Detailed вы также обна-
ружите столбец Data Source Query, в котором будет написан запрос, послан-
ный в источник, если таковой был.
Иногда бывает так, что пункт меню Просмотреть машинный запрос,
о котором мы говорили ранее, не активен, но во время проведения диа-
гностики текст машинного запроса, посылаемого источнику данных, по-
казывается. Определить, было ли выполнено свертывание запроса, можно
следующим образом.
1. Отфильтруйте в запросе с именем Aggregated столбец Operation та-
ким образом, чтобы в нем остались только значения CreateResult.
2. Перейдите в столбец Data Source Query и выделите единственную
ячейку.

Вы должны увидеть результат, показанный на рис. 1.13.

Рис. 1.13. Машинный запрос, переданный каналу OData


Поиск проблем с производительностью запросов    39

Полный текст запроса приведен ниже:

https://services.odata.org/AdventureWorksV3/AdventureWorks.svc/
CompanySales?$filter=ProductCategory eq 'Bikes'&$select=ID,OrderQtr,OrderYear,
ProductSubCategory,Sales&$top=1000 HTTP/1.1

Заметьте, что свертывание запроса в данном случае было выполнено:


фильтр по столбцу ProductCategory включен в запрос, а сама эта колонка
в списке возвращаемых столбцов отсутствует. При этом, если полагаться
только на пункт меню Просмотреть машинный запрос, вы не увидите
сам запрос, поскольку пункт будет неактивен.
Некоторые операции диагностики могут потребовать от вас запуска
Power BI Desktop от имени администратора. Если вы не можете провести
какую-то трассировку (например, по полному обновлению данных) по
причине отсутствия доступа, вам все равно будет доступно диагностиро-
вание при написании или предварительном просмотре запросов в редак-
торе Power Query. Для этого откройте в меню Файл (File) пункт Парамет­
ры и настройки (Options and settings) и выберите Параметры (Options).
Далее на вкладке Глобальные (Global) перейдите в раздел Диагностика
(Diagnostics) и в разделе Диагностика запросов (Query diagnostics) уста-
новите переключатель в положение Включить в редакторе запросов
(Enable in Query Editor).

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Использование диагностики


запросов
Больше информации о диагностике, включая вывод итогов трасси-
ровки, можно найти по адресу https://docs.microsoft.com/ru-ru/power-
query/QueryDiagnostics.

Добавочное (инкрементное) обновление


Работая с большими объемами импортированных данных в Power BI,
бывает полезно выполнять так называемое добавочное или инкрементное
обновление (incremental refresh), которое позволит сохранить большую
часть неизменной информации в модели, а обновление запустить только
для последних данных, тем самым снимая нагрузку с источника во время
актуализации информации.
Настраивая добавочное обновление, важно убедиться в том, что кон-
кретный источник данных поддерживает эту возможность, – в противном
случае вы не получите никаких преимуществ от этой операции и данные
будут продолжать обновляться полностью. Если в истории обновлений на-
бора или потока данных вы обнаружили аномально большие времена об-
новлений, несмотря на включенное добавочное обновление, скорее всего,
источник данных не поддерживает эту опцию.
Более подробно тему инкрементного обновления мы затронем в главе 5.
40    Глава 1. Подготовка данных

Использование облачного хранилища


Microsoft Dataverse
Линейка продуктов Power Platform включает в себя программное обеспече-
ние с похожими возможностями в отношении получения данных с Power BI:
■■ потоки данных Power BI;
■■ облачное хранилище Microsoft Dataverse (прежде именовалось
Common Data Service);
■■ потоки данных Power Platform.
Коннектор для потоков данных Power Platform позволяет получать ин-
формацию и из потоков данных Power BI. Все три продукта хранят данные
в виде таблиц, также известных как сущности (entities). Microsoft Dataverse
также предлагает набор стандартизованных таблиц, либо вы можете со-
здать собственные.
Подключение к потокам данных Power BI или Power Platform требует ав-
торизации, после чего вы сможете обратиться ко всем сущностям, к кото-
рым у вас есть доступ.
Для подключения к Microsoft Dataverse вам потребуется адрес сервера,
который обычно записывается в следующем формате: https://environment.
crm.dynamics.com/.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Поиск адреса сервера


Если вы хотите узнать, как определить адрес сервера, смотрите по-
шаговую инструкцию по следующей ссылке: https://docs.microsoft.com/
ru-ru/powerapps/maker/common-data-service/data-platform-powerbi-connector.

Кроме того, вы должны обладать правами создателя (maker) для доступа


к порталу Power Apps и правами на чтение (read) для доступа к информа-
ции в сущностях. В остальном подключение аналогично соединению с ба-
зой данных.

Применение параметров
Использование параметров (parameter) в запросах способно упростить
определенные задачи, такие как смена адресации источника данных или
установка фильтра в запросе. Вот лишь несколько примеров, когда параме-
тры могут вам пригодиться:
■■ переключение между тестовым и рабочим окружением при получе-
нии информации из базы данных;
■■ настройка добавочного обновления, о чем мы подробнее поговорим
в главе 5;
Создание параметров    41

■■ создание пользовательских функций с использованием интерфейса;


■■ использование шаблонов отчетов.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Шаблоны в Power BI Desktop


Шаблоны отчетов могут быть использованы в Power BI в качестве
отправной точки при анализе данных, но их подробное обсуждение
выходит за рамки этой книги. Больше информации о создании и ис-
пользовании шаблонов отчетов можно найти по адресу https://docs.
microsoft.com/ru-ru/power-bi/desktop-templates.

Создание параметров
Чтобы создать новый параметр в редакторе Power Query, нужно на вклад-
ке Главная (Home) в выпадающей кнопке Управление параметрами
(Manage parameters) выбрать пункт Создать параметр (New parameter).
Откроется диалоговое окно Управление параметрами (Parameters), по-
казанное на рис. 1.14.

Рис. 1.14. Диалоговое окно для работы с параметрами


42    Глава 1. Подготовка данных

Для каждого параметра вы можете установить следующие характеристи-


ки:
■■ Имя (Name): имя параметра, по которому вы сможете к нему обра-
щаться;
■■ Описание (Description): описание параметра будет показываться во
всплывающей подсказке при наведении на него в панели Запросы
(Queries) или при открытии шаблона отчета, содержащего этот па-
раметр;
■■ Требуется (Required): эта опция определяет, может ли этот параметр
быть пустым;
■■ Тип (Type): тип данных параметра. Не все типы данных Power Query
доступны для параметров. Например, вы не можете выбрать целочис-
ленный тип (whole number). Вместо этого для числовых параметров
нужно выбирать тип данных Десятичное число (decimal number);
■■ Предполагаемые значения (Suggested values): здесь вы можете вы-
брать из трех следующих вариантов:
• Любое значение (Any value): установлен по умолчанию и пред-
полагает, что параметр может принимать любые значения, допу-
стимые в рамках выбранного для него типа данных;
• Список значений (List of values): в этом случае вы сможете сами
задать список вариантов, из которых можно будет выбрать зна-
чение параметра. При выборе этой опции вы также можете ука-
зать для параметра значение по умолчанию, которое будет вы-
брано при открытии шаблона с этим параметром;
• Запрос (Query): данная опция предполагает использование за-
проса для наполнения списка значений.
■■ Текущее значение (Current value): это значение, которое будет воз-
вращать параметр при обращении к нему.

ВАЖНО. Тип параметра


Если вы намереваетесь изменять параметр в службе Power BI, вы
должны правильно определить его тип данных. Использование типа
Любой (Any) не позволит вам менять его значение в службе Power BI.

Использование параметров
Давайте посмотрим на практике, как можно использовать параметры.
1. Создайте новый файл в Power BI Desktop.
2. Откройте редактор Power Query, нажав на кнопку Преобразование
данных (Transform data) на вкладке Главная (Home).
Использование параметров    43

3. Создайте параметр со следующими характеристиками:


■■ имя: Year;
■■ тип: Десятичное число;
■■ текущее значение: 2006.
Все остальные характеристики можете оставить по умолчанию.
Теперь, когда вы создали параметр, давайте подключимся через канал
OData к таблице CompanySales из базы данных AdventureWorks.
1. Находясь в редакторе Power Query, нажмите на кнопку Создать
источник (New source) и выберите из списка Канал OData (OData
feed).
2. Введите адрес https://services.odata.org/AdventureWorksV3/AdventureWorks.svc/ в
поле URL-адрес и нажмите на кнопку OK.
3. Установите флажок напротив таблицы CompanySales и нажмите на
кнопку OK.
В нижнем левом углу окна редактора Power Query будет пометка о том,
что запрос CompanySales, который вы только что создали, вернул 235 строк.
Теперь используем наш параметр для фильтрации запроса.
1. Нажмите на кнопку фильтрации в столбце OrderYear и в подменю
Числовые фильтры (Number filters) выберите пункт Равно (Equals).
Откроется окно фильтрации строк, показанное на рис. 1.15.

Рис. 1.15. Диалоговое окно с фильтрацией строк

2. Откройте выпадающий список с иконкой 1.2 справа от поля, в кото-


ром введено значение Равно (Equals), и выберите пункт Параметр
(Parameter). Обратите внимание, что параметр Year был выбран по
умолчанию, поскольку он единственный.
3. Нажмите на кнопку OK.
Теперь наш запрос возвращает всего 50 строк, поскольку остались только
те из них, в которых значение столбца OrderYear равно 2006, т. е. текущему
значению нашего параметра Year.
44    Глава 1. Подготовка данных

Редактирование параметров
Вы имеете возможность редактировать параметры как в Power BI Desktop,
так и в службе Power BI. Под редактированием параметра мы подразумева-
ем изменение его текущего значения, тогда как управление параметрами
относится к изменению их характеристик и атрибутов.
В продолжение работы с нашим примером мы можем отредактировать
значение нашего параметра Year, выбрав его на панели Запросы (Queries)
и изменив значение на 2007. Обратите внимание, что теперь запрос
CompanySales возвращает 96 строк вместо 50.

ПРИМЕЧАНИЕ. Сопроводительные файлы


С данным примером вы можете ознакомиться в файле 1.1.8 Parameters.
pbix из папки с сопроводительными файлами.

ПРИМЕЧАНИЕ. Изменение нескольких параметров


Если вам необходимо изменить значения сразу нескольких параме-
тров, удобнее будет воспользоваться пунктом Изменить параметры
(Edit parameters) из выпадающей кнопки Управление параметрами
(Manage parameters) на вкладке Главная (Home).

Также вы можете заметить, если выполните диагностику запроса, что в


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

https://services.odata.org/AdventureWorksV3/AdventureWorks.svc/
CompanySales?$filter=OrderYear eq 2007&$top=1000 HTTP/1.1

Можно менять значения параметров после публикации отчета в служ-


бе Power BI. Это делается в настройках набора данных, как показано на
рис. 1.16.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Служба Power BI


Более детально об особенностях работы в службе Power BI мы пого-
ворим в главе 5.

После изменения значения параметра необходимо нажать на кнопку


Применить (Apply).
Создание функций    45

Рис. 1.16. Редактирование параметров в службе Power BI

Создание функций
Power Query позволяет вам писать свои собственные пользовательские
функции, которые могут пригодиться при желании применить одну и ту же
логику многократно. Одним из способов создания функции является пре-
образование в нее запроса. Если ваш запрос уже использует параметры,
они станут параметрами новой функции.
Давайте продолжим работать с базой данных AdventureWorks и создадим
функцию, которая будет выводить продажи за конкретный год на основа-
нии пользовательского ввода.
1. Щелкните правой кнопкой мыши на запросе CompanySales и выбери-
те пункт Создать функцию (Create function).
2. В поле Имя функции (Function name) введите SalesByYear.
3. Нажмите на кнопку OK.
В результате будет создана группа запросов с именем SalesByYear, ко-
торая будет содержать параметр Year, запрос CompanySales и функцию
SalesByYear.
Теперь пришло время проверить нашу новую функцию.
46    Глава 1. Подготовка данных

1. Выберите функцию SalesByYear на панели Запросы (Queries).


2. Введите 2008 в поле Year.
3. Нажмите на кнопку Вызвать (Invoke).

В результате будет создан запрос с именем Вызванная функция (Invoked


Function), возвращающий 73 строки, относящиеся только к 2008 году, что
можно легко проверить, отфильтровав столбец OrderYear.
Обратите внимание, что между функцией SalesByYear и запросом
CompanySales существует особая связь: обновление запроса приведет к из-
менению функции, что в свою очередь повлечет изменения в вызовах функ-
ции. Например, мы можем удалить столбец ID из запроса CompanySales, и
он также исчезнет из запроса Вызванная функция.

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


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

Использование и создание файла PBIDS


Если вы уже подключены к источнику данных в Power BI Desktop, вы може-
те экспортировать файл PBIDS, в котором заключены все детали подклю-
чения. Этот файл может понадобиться вам впоследствии для облегчения
доступа создателям отчетов к конкретному источнику данных.
Экспортировать файл с разрешением PBIDS можно, нажав на вкладке
Главная (Home) на кнопку Настройки источника данных (Data source
settings) и в открывшемся окне выбрав вариант Экспорт PBIDS (Export
PBIDS).
Если в примере с базой данных Wide World Importers экспортировать
подключение к источнику данных в виде папки Targets, вы получите файл
PBIDS следующего содержания:

{
"version": "0.1",
"connections": [
{
"details": {
"protocol": "folder",
"address": {
"path": "c:\\da-100\\targets"
},
"authentication": null,
"query": null
Использование и создание потока данных    47

},
"options": {},
"mode": null
}
]
}

При открытии файла PBIDS в Power BI Desktop эффект будет таким же,
как при подключении к источнику данных вручную.

ПРИМЕЧАНИЕ. Авторизация
В файлах PBIDS не хранится информация об авторизации, так что
пользователям нужно иметь доступ к запрашиваемым источникам
данных.

Использование и создание потока данных


Как и в Power BI Desktop, в службе Power BI также можно использовать
инстру­мент Power Query для подготовки, очистки и преобразования ин-
формации в потоках данных (dataflow). Потоки данных могут оказаться
полезными, если вы хотите, чтобы ваши запросы в Power Query использо-
вались по всей организации без необходимости того, чтобы все запросы
находились в одном наборе данных. По этой причине вы не можете создать
поток данных в своей собственной рабочей области, поскольку доступ к
ней есть только у вас.
Для создания потока данных в рабочей области нажмите на кнопку Со-
здать (New) и выберите пункт Поток данных (Dataflow). После этого у вас
будет четыре возможных варианта:

■■ Определение новых таблиц (Add new entities): в этом случае новые


таблицы создаются с нуля при помощи Power Query;
■■ Связывание таблиц из других потоков данных (Add linked
entities): речь идет о таблицах из других потоков данных, которые
вы можете повторно использовать с целью снижения дублирования
информации и повышения единообразия в рамках организации;
■■ Импорт модели (Import mode): если вы прежде экспортировали
файл с моделью потока данных, вы можете импортировать его;
■■ Прикрепление папки Common Data Model (Create and attach): этот
пункт используется для подключения папки Common Data Model из
учетной записи Azure Data Lake Storage второго поколения с целью
ее использования в Power BI.
48    Глава 1. Подготовка данных

Интерфейс Power Query Online, показанный на рис. 1.17, сильно напоми-


нает обычный редактор Power Query из состава Power BI Desktop.

Рис. 1.17. Интерфейс Power Query при работе с потоком данных

После написания запросов вы можете нажать на кнопку Сохранить и


закрыть (Save & close) и ввести имя нового потока. После сохранения вам
необходимо обновить поток данных, воспользовавшись опцией Обновить
(Refresh now), доступной для потока. В противном случае он не будет со-
держать никаких данных. По окончании процесса обновления вы можете
подключиться к созданному потоку из Power BI Desktop и извлечь из него
данные.

Подключение к набору данных


с использованием конечных точек XMLA
Если вы приобрели подписку Power BI Premium, вы можете использовать
конечные точки XML for Analysis (XMLA) для доступа к своим наборам дан-
ных. Применяя конечные точки XMLA (XMLA endpoints), вы вправе исполь-
зовать другие программные пакеты, помимо Power BI, для взаимодействия
с полученными данными. К примеру, вы можете визуализировать данные
в Microsoft Excel или использовать сторонние инструменты для редактиро-
вания своих наборов данных.
Чтобы можно было воспользоваться конечными точками XMLA, в пор-
тале администрирования Power BI (Power BI admin portal) должна быть
включена опция Активация конечных точек XMLA и Анализа в Excel
для локальных наборов данных (Allow XMLA endpoints and Analyze in
Excel with on-premises datasets). В параметрах емкости (capacity settings)
в Power BI Premium настройка конечных точек XMLA также должна быть
установлена в положение Только для чтения (Read Only) или Для чтения
Подключение к набору данных с использованием конечных точек XMLA    49

и записи (Read Write). Последнее необходимо для редактирования наборов


данных.

ПРИМЕЧАНИЕ. Использование Azure B2B и конечных точек XMLA


Если вы являетесь внешним пользователем по отношению к чье-
му-либо клиенту (tenant) и хотите использовать для подключения к
его набору данных конечные точки XMLA, вам необходимо заменить
в приведенном выше адресе myorg на соответствующее доменное
имя. Строка подключения к рабочей области в этом случае примет
вид, подобный следующему: powerbi://api.powerbi.com/v1.0/contoso.com/
Your Workspace Name.

Выполняя соединение посредством конечных точек XMLA, вы подключа-


етесь к рабочей области Power BI, как если бы это был сервер, а наборы дан-
ных выступают в роли баз данных. Для получения адреса для подключения
перейдите в настройки рабочей области (кнопка Параметры), выберите
вкладку Премиум (Premium), после чего нажмите на кнопку Копировать
(Copy) под полем Подключение рабочей области (Workspace Connection),
как показано на рис. 1.18.

Рис. 1.18. Секция Премиум в настройках рабочей области

Адрес должен иметь следующий формат:

powerbi://api.powerbi.com/v1.0/myorg/Your Workspace Name


50    Глава 1. Подготовка данных

Впоследствии этот адрес можно использовать в качестве адреса серве-


ра при подключении из клиентского инструмента. Большинство инстру-
ментов позволит вам выбрать набор данных после подключения к вашей
рабочей области. Некоторые программы требуют установки каталога базы
данных (initial catalog), и в данном случае вы можете использовать назва-
ние набора данных, к которому собираетесь подключиться.

Навык 1.2. Профилирование данных


При выполнении анализа данных бывает очень полезно видеть их об-
щую структуру, что можно сделать при помощи профилирования данных
(profiling data). Профилирование данных позволяет создать представление
об их форме и содержании. Всегда желательно выполнять профилирование
данных перед работой с ними, поскольку это может помочь вам выявить
определенные закономерности и ограничения в источнике информации
и принять решение о его использовании. Анализ данных без их предва-
рительного профилирования может привести к пропуску статистических
выбросов, и ваши выводы могут оказаться недостоверными.
В арсенале Power Query присутствует инструмент для профилирования
столбцов, которым можно воспользоваться еще до загрузки данных. Он
включает в себя средство анализа качества столбца, распределения его зна-
чений и профиля.

Основные составляющие навыка:


■■ распознавание аномалий в данных;
■■ оценка структуры данных и извлечение свойств столбцов;
■■ получение статистических сведений о данных.

Распознавание аномалий в данных


Инструмент Power Query предлагает довольно богатый функционал для
распознавания аномалий в данных в зависимости от того, что вы ищете.
К примеру, вы можете проверять данные на наличие непредвиденных зна-
чений (допустим, цены товара, превышающей $10 000) при анализе продаж
розничного магазина или осуществлять поиск недостающих или ошибоч-
ных значений. В данном разделе мы сосредоточимся именно на иденти-
фикации недостающих и ошибочных значений, а далее в этой главе посмо-
трим, как выполнять поиск непредвиденных значений.
Открыв таблицу в редакторе Power Query, вы можете легко и просто про-
верить качество ее столбцов (column quality). По умолчанию под заголов-
ком каждого столбца присутствует цветная линия, показывающая, сколько
в данной колонке допустимых (valid), ошибочных (error) и пустых (empty)
значений. Чтобы вывести на экран эту информацию в процентном от-
Распознавание аномалий в данных    51

ношении, перейдите на вкладку Просмотр (View) и в группе Предвари-


тельный просмотр данных (Data preview) установите флажок Качество
столбца (Column quality).

ПРИМЕЧАНИЕ. Сопроводительные файлы


Описанные здесь действия вы можете проделать в файле с именем
1.1.1 Connect to data sources.pbix из списка сопроводительных файлов.

На рис. 1.19 показан запрос Employee из ранее рассмотренного примера Wide


World Importers со включенным флажком отображения качества столбцов.

Рис. 1.19. Качество столбцов


Как видите, столбец Parent Employee Key содержит 85 % допустимых зна-
чений и 15 % пустых. Если в ваши планы не входило увидеть в этой колонке
пустые значения, пришло время разобраться с возникшей проблемой. При
этом пустыми значениями в Power Query считаются как значения null, так
и пустые строки. Ошибочных значений в этом запросе нет, поэтому в поле
Ошибка (Error) показано 0 %.
Если открыть запрос Customer и проверить качество столбца Postal Code,
можно обнаружить <1 % ошибочных значений. Обратите внимание, что
Power Query не показывает процент допустимых или пропущенных значе-
ний, если в колонке присутствуют ошибки. Пока мы оставим эту ошибку, а
вернемся к ней позже в данной главе.
Чтобы скопировать информацию о качестве столбца, щелкните правой
кнопкой мыши по области под его заголовком и выберите пункт Копиро-
вать метрики качества (Copy quality metrics).

ВАЖНО. Образец данных


Необходимо понимать, что по умолчанию профилирование столбцов
выполняется на основании первой тысячи строк в запросе. Вы можете
переключиться на анализ всего набора данных, щелкнув по строке
состояния в нижнем левом углу окна редактора Power Query.
52    Глава 1. Подготовка данных

Оценка структуры данных и извлечение


свойств столбцов
В дополнение к качеству столбца вы можете также анализировать рас-
пределение значений (column distribution) в нем. Для этого перейдите на
вкладку Просмотр (View) и в группе Предварительный просмотр дан-
ных (Data preview) установите флажок Распределение столбцов (Column
distribution). На рис. 1.20 показан запрос Stock Item с установленным флаж-
ком распределения столбцов.

Рис. 1.20. Распределение столбцов

На этой встроенной диаграмме вы можете видеть количество отдельных


(distinct) и уникальных (unique) значений в каждом столбце, а также рас-
пределение значений в виде столбиков под заголовками. Профилирование
столбцов выполняется безотносительно их типов данных, показанных сле-
ва от заголовка.
Под отдельными значениями имеется в виду количество неповторя-
ющихся значений в столбце, тогда как к уникальным относятся только
те из них, которые встречаются в колонке лишь раз. Эти два показателя
будут совпадать только в том случае, если все значения в столбце уни-
кальны.
Столбчатая диаграмма показывает распределение значений в столб-
це. Здесь вы можете видеть, является ли содержимое колонки достаточно
равномерно распределенным или в нем присутствует перекос в сторону
тех или иных значений. Например, в большинстве строк в столбце Selling
Package с рис. 1.20 содержатся одинаковые значения, тогда как четыре дру-
гих вхождения встречаются крайне редко.
Чтобы скопировать данные о распределении значений в столбце, щел-
кните на столбчатой диаграмме правой кнопкой мыши и выберите пункт
Копировать распределение значений (Copy value distribution). Это по-
зволит вам получить список неповторяющихся значений и количество их
вхождений в столбец.
Информация о распределении значений в столбцах может быть исклю-
чительно полезной при принятии решения о том, какие данные не до-
бавляют ценности итоговому анализу. К примеру, в запросе State Province
Получение статистических сведений о данных     53

следующие колонки содержат лишь по одному неповторяющемуся зна-


чению:
■■ Country;
■■ Continent;
■■ Region;
■■ Subregion.

В зависимости от обстоятельств вы можете избавиться от этих столбцов


в запросе без ощутимых потерь.

ПРИМЕЧАНИЕ. Понимание распределения столбцов


Распределение значений в столбцах основывается только на теку-
щем запросе и ни на каких других. Например, распределение столбца
Stock Item Key будет разным в запросах Stock Item и Sale. Также стоит
помнить, что распределение значений может меняться в зависимости
от того, выполняете вы профилирование первой тысячи строк в зап­
росе или всего набора данных.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Схема таблицы


Вы можете извлечь дополнительные сведения о столбцах таблицы,
такие как точность числовых значений или допустимость присутствия
значений null, путем обращения к функции Table.Schema. Чтобы ис-
пользовать эту функцию, вам придется самостоятельно писать код в
редакторе Power Query на языке M, о чем мы будем говорить позже
в данной главе. Для получения дополнительной информации об этой
функции обратитесь к документации по адресу https://docs.microsoft.
com/ru-ru/powerquery-m/table-schema.

Получение статистических сведений


о данных
Также профилирование данных применяется для извлечения статисти-
ческой информации и лучшего понимания содержимого таблиц. Чтобы
увидеть профиль столбца (column profile), необходимо перейти на вкладку
Просмотр (View) и в группе Предварительный просмотр данных (Data
preview) установить флажок Профиль столбца (Column profile). После
включения этой опции щелкните на заголовке столбца, профиль которого
хотите посмотреть. На рис. 1.21 показан профиль столбца Unit Price из за-
проса Stock Item.
54    Глава 1. Подготовка данных

Рис. 1.21. Профиль столбца

В результате в нижней части окна редактора Power Query откроются две


новые области:
■■ Статистика по столбцам (Column statistics): в этой области собрана
разнообразная статистическая информация о столбце. В дополнение
к общему количеству значений, а также числу ошибочных, пустых,
неповторяющихся и уникальных значений вы сможете увидеть ми-
нимальное, максимальное и среднее значение по столбцу и даже ко-
личество нулевых, четных и нечетных значений. Кроме того, вывод
статистики будет меняться в зависимости от типа столбца. Напри-
мер, для текстовых столбцов в дополнение к количеству пустых зна-
чений вы увидите количество пустых строк. Вы можете скопировать
статистическую информацию, щелкнув по кнопке с тремя точками
справа от заголовка Статистика по столбцам и выбрав пункт Ко-
пировать (Copy);
■■ Распределение значений (Value distribution): это более подробная
версия столбчатой диаграммы, показанной под заголовком столбца.
Здесь вы можете видеть, к какому конкретно значению относится
каждый столбик на диаграмме, и даже навести мышь на столбец,
чтобы установить фильтрацию по значению. Скопировать распре-
деление значений в виде текста можно, нажав на кнопку с тремя точ-
ками справа от заголовка Распределение значений и выбрав пункт
Копировать (Copy). Также здесь вам доступен пункт с группиров-
кой значений в зависимости от типа данных. К примеру, вы можете
сгруппировать данные в столбце с типом Date по годам, месяцам,
дням, неделям года или дням недели. Текстовые значения могут
Навык 1.3. Очистка, преобразование и загрузка данных    55

быть сгруппированы по длине текста, целочисленные – по знаку или


четности, а десятичные – только по знаку.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Профилирование таблиц


Если вам необходимо выполнить профилирование целой таблицы,
можете воспользоваться функцией Table.Profile, применение которой
недоступно в интерфейсе пользователя – только в расширенном ре-
дакторе путем написания кода на языке M. Позже в этой главе мы кос-
немся темы, посвященной работе в расширенном редакторе Power
Query.

Навык 1.3. Очистка, преобразование


и загрузка данных
В большинстве случаев перед загрузкой данных вам необходимо очистить
и преобразовать их, если это не сделали за вас.
В Power BI присутствует очень мощный инструмент ETL под названи-
ем Power Query. Впервые он появился в качестве надстройки Получить и
преобразовать данные (Get & Transform Data) в Excel 2010, а начиная с
Excel 2016 вошел в базовую установку. Инструмент Power Query можно об-
наружить и во многих других приложениях Microsoft, включая Power Apps
и Power Automate.
Подключаясь и работая с разными источниками данных в этой книге, вы
использовали Power Query. Но этот инструмент применяется не только для
подключения к источникам, но и для выполнения полного арсенала преоб-
разований данных. В этой книге под Power Query мы будем подразумевать
движок, лежащий в основе редактора Power Query.
В Power Query используется язык программирования M, для названия ко-
торого была выбрана первая буква слова «mashup» (смесь, смешивание).
Это регистрозависимый функциональный язык. О чувствительности языка
M к регистру символов стоит сказать отдельно в связи с тем, что другой
язык, используемый в Power BI, а именно DAX, о котором мы будем гово-
рить позже в данной книге, не является регистрозависимым. Кроме того,
M – это совершенно новый язык, который, в отличие от DAX, не напомина-
ет язык формул Excel.

Основные составляющие навыка:


■■ поиск проблем с качеством информации и противоречивостью
данных и их устранение путем замены значений;
■■ определение и преобразование типов данных столбцов;
56    Глава 1. Подготовка данных

■■ определение и создание подходящих ключей для объедине-


ния;
■■ применение преобразований к структуре таблиц;
■■ комбинирование запросов;
■■ соглашение об именовании столбцов и запросов;
■■ использование расширенного редактора для написания кода
на языке M в Power Query;
■■ настройка загрузки данных;
■■ решение проблем с импортом данных.

Поиск проблем с качеством информации


и противоречивостью данных и их
устранение путем замены значений
Если вы читали предыдущий раздел, то, наверное, помните, что в столбце
Postal Code запроса Customer, относящегося к модели данных Wide World
Importers, есть ошибки. Power Query предлагает сразу несколько способов
по устранению ошибочных или непредвиденных значений:
■■ замену значений;
■■ удаление строк;
■■ поиск первопричины ошибки.

Замена значений
Вы можете выполнить замену нежелательных значений с использовани-
ем пользовательского интерфейса Power Query. Этот метод можно считать
приемлемым, если в самом источнике данных присутствуют ошибки, ко-
торые вы не можете устранить. Например, при подключении к Excel зна-
чения #Н/Д (#N/A) будут отображаться как ошибочные. Если у вас нет воз-
можности исправить эти ошибки в источнике, вы вполне можете заменить
их на приемлемые значения.
Поскольку ошибки не являются значениями как таковыми, процедура
их замены будет отличаться от замены других непредвиденных значений.
Чтобы избавиться от ошибочных значений, необходимо сделать следу-
ющее.

1. Щелкните правой кнопкой мыши по заголовку столбца и выберите


пункт Заменить ошибки (Replace Errors).
2. Введите значение, на которое вы хотите заменить ошибки, в поле
Значение (Value).
3. Нажмите на кнопку OK.
Поиск проблем с качеством информации и противоречивостью данных...     57

С помощью пользовательского интерфейса вы можете заменять ошибки


единовременно лишь в одном столбце.
Для замены значений в столбце сделайте следующее.

1. Щелкните правой кнопкой мыши по заголовку столбца и выберите


пункт Замена значений (Replace Values).
2. В поле Значение для поиска (Value To Find) введите значение, кото-
рое вы хотите заменить.
3. В поле Заменить на (Replace With) введите значение, которое вы
хотите подставить.
4. Нажмите на кнопку OK.

Также вы можете правой кнопкой мыши щелкнуть на значении в столбце


и в контекстном меню выбрать пункт Замена значений (Replace Values).
В этом случае поле Значение для поиска (Value To Find) будет предвари-
тельно заполнено выбранным значением.
Для текстовых столбцов вы можете воспользоваться расширенными па-
раметрами (advanced options), как показано на рис. 1.22.

Рис. 1.22. Диалоговое окно Замена значений

■■ Ячейка целиком (Match entire cell content): при выборе этой опции
поиск будет осуществляться по всему содержимому ячейки;
■■ Заменить с использованием специальных символов (Replace
using special character): используйте эту опцию для возможности
вставки специальных символов, таких как перенос каретки или не-
разрывный пробел, в поля Значение для поиска и Заменить на.

Для замены значений сразу в нескольких столбцах необходимо выбрать


их все. Это можно сделать выборочно при помощи клавиши Ctrl либо вы-
брать первый столбец, зажать клавишу Shift и выбрать последний для обо-
значения непрерывного диапазона столбцов.
58    Глава 1. Подготовка данных

Тип значения подстановки должен быть сопоставим с типом данных


столбца – в противном случае могут возникнуть ошибки.

ПРИМЕЧАНИЕ. Значения null в Power Query


Значения null в Power Query являются специальными. Если вам необ-
ходимо заменить значение на null или наоборот, введите зарезерви-
рованное слово null в соответствующую ячейку, и Power Query рас-
познает его как специальное значение, а не простой текст.

Удаление строк
Если в столбце присутствуют ошибки, вы можете полностью избавиться
от содержащих их строк. Для этого нужно щелкнуть правой кнопкой мыши
на заголовке столбца и выбрать пункт Удалить ошибки (Remove Errors).
Обратите внимание, что это приведет к удалению только тех строк, в вы-
бранном столбце которых присутствуют ошибочные значения. Если вам
надо удалить все строки в таблице, содержащие ошибки, вне зависимости
от столбца, вы можете щелкнуть по иконке таблицы, расположенной слева
от заголовков столбцов, и выбрать пункт Удалить ошибки (Remove Errors).

Поиск первопричины ошибки


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

ПРИМЕЧАНИЕ. Проверка содержимого ячеек


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

На рис. 1.23 показано сообщение об ошибке, обнаруженной в столбце


Postal Code запроса Customer.
Из этого сообщения следует, что Power Query не удалось сконвертировать
значение N/A, являющееся текстовым, в число. Чтобы убедиться в этом, вы
можете подняться на один шаг назад, щелкнув на пункте Повышенные
заголовки (Promoted Headers) на панели Примененные шаги (Applied
steps), после чего в ячейке будет показано значение N/A. Получается, что
вам необходимо предварительно преобразовать тип данных столбца в тек-
стовый, как будет показано далее, чтобы избежать возникновения этой
ошибки.
Определение и преобразование типов данных столбцов    59

И хотя ошибки в столбцах могут возникать по множеству причин – сов­


сем не обязательно из-за несоответствия типов данных, – чтение сообще-
ний в большинстве случаев поможет вам принять необходимые меры по
их устранению.

Рис. 1.23. Сообщение об ошибке в ячейке

ПРИМЕЧАНИЕ. Отключение автоматического определения типов


данных
Если вы не хотите, чтобы Power Query утруждал себя работой по опре-
делению типов данных, вы можете избавить его от этой обязанности.
Для этого на вкладке Файл (File) перейдите к пункту меню Параметры
и настройки (Options and settings) и выберите Параметры (Options).
В  открывшемся диалоговом окне в разделе Текущий файл (Current
file) откройте пункт Загрузка данных (Data load) и отключите флажок
в разделе Определение типов (Type detection).

Определение и преобразование типов


данных столбцов
Если источник данных не сообщает модели типы данных передаваемых
столбцов, Power Query попытается определить их автоматически. К при-
меру, при подключении к базе данных в вашем распоряжении будут типы
60    Глава 1. Подготовка данных

данных, чего нельзя сказать об импорте из файла JSON. В этом случае


Power Query попробует справиться самостоятельно. Стоит сразу отметить,
что Power Query далеко не всегда справляется с этой задачей идеально, по-
скольку анализирует не все данные. Это зачастую, как вы уже видели, при-
водит к возникновению ошибок.
Power Query поддерживает следующие типы данных:
■■ Decimal Number;
■■ Fixed Decimal Number;
■■ Whole Number;
■■ Percentage;
■■ Date/Time;
■■ Date;
■■ Time;
■■ Date/Time/Timezone;
■■ Duration;
■■ Text;
■■ True/False;
■■ Binary.

ПРИМЕЧАНИЕ. Сложные типы данных


Иногда вы будете встречаться со сложными или составными типами
данных (complex data types), такими как функция (Function), список
(List), запись (Record) и таблица (Table). Далее в этой главе мы также
будем работать с ними. Стоит отметить, что не все типы данных дос­
тупны в момент загрузки данных. К примеру, тип Percentage преобра-
зуется в Decimal Number. Мы поговорим о загрузке данных ближе к
концу главы.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Типы данных в Power BI


Не все значения могут быть сохранены в Power BI. Техническую до-
кументацию по типам данных в Power BI, включая поддерживаемые
диапазоны значений, можно найти по адресу https://docs.microsoft.com/
ru-ru/power-bi/desktop-data-types.

Работая с моделью данных компании Wide World Importers, мы обнаружи-


ли наличие ошибок в столбце Postal Code запроса Customer, обусловленных
неправильным преобразованием типов. Power Query просканировал не-
сколько первых записей в поле и, обнаружив только целочисленные значе-
ния, решил присвоить ему тип данных Whole Number, что видно по иконке
слева от заголовка колонки.
Определение и преобразование типов данных столбцов    61

В данном случае необходимо установить тип данных столбца Postal Code


в Text для поддержки числовых и текстовых значений.

НА ПРАКТИКЕ. Выбор типа данных


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

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


по его заголовку, раскройте пункт Тип изменения (Change type) и выбери-
те нужный вам тип. Также вы можете щелкнуть по иконке с типом слева от
наименования столбца и выбрать в списке требуемый тип данных.
Предприняв попытку изменить тип данных столбца Postal Code, вы уви-
дите предупреждение о том, что этот столбец уже подвергался преобразо-
ванию типа данных, показанное на рис. 1.24.

Рис. 1.24. Диалоговое окно Изменить тип столбца

Поскольку Power Query предварительно уже выполнил преобразование


типа этого столбца, вы можете либо отредактировать существующий шаг,
нажав на кнопку Заменить текущее (Replace current), либо создать новый
по кнопке Добавить шаг (Add new step).
В данном случае уместно будет выбрать первый вариант, поскольку в
противном случае Power Query попытается преобразовать ошибочное зна-
чение в текст, и на выходе, как вы понимаете, также будет ошибка. После
нажатия на кнопку Заменить текущее ошибки исчезнут, и вы сможете
увидеть данные о распределении значений в столбце и другую статисти-
ческую информацию.
62    Глава 1. Подготовка данных

ПРИМЕЧАНИЕ. Кеширование в Power Query


Если после изменения типа данных вы по-прежнему будете видеть
ошибки в столбце, откройте другой запрос, а затем вернитесь к зап­
росу Customer. Время от времени Power Query кеширует результаты
запросов и может не сразу их обновлять.

Добавление нового шага с изменением типа данных может оказаться


уместным, если не представляется возможным выполнить необходимое
преобразование за один шаг. Например, если вы импортируете данные из
файла CSV и в списке значений присутствует дата и время, вам не удастся
сразу преобразовать тип данных такого столбца в Date. Вместо этого сна-
чала вы должны установить тип данных Date/Time, после чего добавить
шаг с приведением к типу Date. В этом случае вы не получите никаких
ошибок.
Если вы хотите, чтобы Power Query автоматически определил тип дан-
ных одного или нескольких столбцов, вы можете выбрать нужные ко-
лонки и на вкладке Преобразование (Transform) в группе Любой стол-
бец (Any Column) нажать на кнопку Определить тип данных (Detect
Data Type).

Использование локали
Иногда вам может понадобиться выполнить преобразование типа дан-
ных с использованием определенной локали (locale). К примеру, если у вас
на компьютере используется тип даты в виде DMY, а вы получаете данные
из источника в формате MDY, вам придется воспользоваться механизмом
приведения типов с использованием локали. Для этого щелкните правой
кнопкой мыши по заголовку столбца и в подменю Тип изменения (Change
Type) выберите пункт Используя локаль (Using Locale). В открывшемся
диалоговом окне вам останется выбрать из соответствующих списков же-
лаемый тип данных и языковой стандарт.

НА ПРАКТИКЕ. Даты и локаль


Иногда, особенно при работе с месяцами в данных, выбор некор-
ректной локали может не привести к появлению ошибок, но дать
совершенно неправильные даты, поскольку 1-12, например, может
быть истолковано и как 1 декабря, и как 12 января. Так что в случаях,
когда данные могут быть восприняты двояко, стоит с большой осто-
рожностью и внимательностью подходить к преобразованию типов
данных.
Определение и создание подходящих ключей для объединения    63

Определение и создание подходящих ключей


для объединения
Power BI позволяет комбинировать данные из разных таблиц множеством
способов. Самые распространенные из них – это объединение таблиц и со-
здание связей между ними.
Комбинирование таблиц требует установления связей между запросами,
что в терминологии Power Query называется объединением (merge). В то же
время связи, которые вы настраиваете в модели данных, а не в Power Query,
создают неявное объединение таблиц при использовании визуальных эле-
ментов. Выбор между этими вариантами зависит от бизнес-требований, и
его должен делать ответственный за моделирование данных. В этом раз-
деле мы обсудим тему создания ключей, необходимых для установления
связей в обоих случаях.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Объединение таблиц и созда-


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

При объединении таблиц нам не обойтись без критериев, характеризую-


щих это объединение, в виде соответствующих ключей (key). К примеру, вы
можете объединить таблицы City и Sale с использованием ключевого поля
City Key, присутствующего в обеих таблицах. И хотя бывает удобно связы-
вать таблицы по столбцам с одинаковыми названиями, это вовсе не обяза-
тельное условие. Допустим, вы можете объединить таблицы Sale и Date при
помощи столбца Invoice Date Key в первой таблице и Date – во второй.
Каждая таблица в связи может быть как на стороне «один» (one), так и
на стороне «многие» (many). В первом случае ключевой столбец, именую-
щийся также первичным ключом (primary key), в таблице должен содержать
уникальные значения. Во втором случае значения в ключевом столбце не
обязательно должны быть уникальными и могут повторяться. Такой ключ
обычно именуется внешним (foreign key).
При объединении каждая из таблиц может находиться на стороне «один»,
но такие ситуации крайне редки. Чаще всего таблицы объединяются по
принципу «один ко многим». Кроме того, возможны случаи нахождения
обеих таблиц в связке на стороне «многие». Но вы должны помнить, что в
Power Query это приведет к образованию дубликатов строк.

Ключи для объединения таблиц в Power Query


Инструмент Power Query позволяет вам выполнять объединение таблиц
на основании одного или нескольких столбцов одновременно, так что вам
64    Глава 1. Подготовка данных

не придется создавать составные ключи (composite key) для выполнения


сложных объединений в Power Query.
При объединении таблиц в Power Query важным вопросом являются
типы данных соответствующих столбцов. Например, столбец с типом Date
невозможно объединить со столбцом типа Date/Time, даже если в послед-
нем отсутствует временная составляющая.

Ключи для создания связей


Power BI более щадяще относится к типам данных столбцов при уста-
новлении связей между таблицами в модели данных. А именно, если типы
столбцов, по которым выполняется объединение, обладают разными ти-
пами, Power BI сделает все возможное, чтобы привести их к общему типу
незаметно для разработчика или пользователя. И хотя связь между табли-
цами после этого может оказаться вполне жизнеспособной, всегда лучше
следить за тем, чтобы ключевые столбцы в разных таблицах были одного
типа.
Физические связи между таблицами в Power BI допустимо создавать
только по одной паре ключевых столбцов. Таким образом, если в вашей
таблице присутствует составной ключ, вам предварительно нужно объеди-
нить значения ключевых столбцов в одной колонке перед созданием фи-
зической связи. Это можно сделать как в Power Query, так и путем создания
вычисляемого столбца на языке запросов DAX.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Вычисляемые столбцы и DAX


Если вы используете режим хранения DirectQuery, некоторые вычис-
ляемые столбцы могут быть эффективно переведены на внутренний
язык источника данных. Например, функция COMBINEVALUES в DAX
прекрасно транслируется в язык SQL. Мы поговорим о языке DAX под-
робнее в главе 2.

Существует два способа объединить столбцы в Power Query:


■■ путем создания нового столбца. В этом случае исходные столбцы
остаются нетронутыми. Для создания нового объединенного столбца
выделите колонки, которые хотите совместить, перейдите на вклад-
ку Добавление столбца (Add column) и в группе Из текста (From
Text) нажмите на кнопку Объединить столбцы (Merge Columns);
■■ при помощи объединения столбцов на месте. Выбор этой опции
приведет к удалению исходных столбцов. Чтобы применить этот ме-
тод, выделите столбцы для объединения и на вкладке Преобразова-
ние (Transform) в группе Столбец «Текст» (Text Column) нажмите на
кнопку Объединить столбцы (Merge Columns).
Применение преобразований к структуре таблиц    65

ВАЖНО. Порядок выделения столбцов


Последовательность, в которой вы выделяете столбцы для их после-
дующего объединения, имеет значение, –  именно в таком порядке
значения из столбцов будут впоследствии объединены. Иными слова-
ми, если вы сначала выделите столбец A, а затем столбец B, результат
в объединенной колонке будет отличаться от варианта с обратным
порядком выделения.

После этого откроется диалоговое окно Объединить столбцы (Merge


Columns), показанное на рис. 1.25, в котором необходимо сделать нужные
установки.

Рис. 1.25. Окно объединения столбцов

Вы можете использовать один из предустановленных вариантов из выпа-


дающего списка Разделитель (Separator) или указать собственный, выбрав
пункт Пользовательский (Custom). Также вам необходимо будет ввести
имя для объединенного столбца. После этого нажмите на кнопку OK.

Применение преобразований к структуре


таблиц
Очень редко бывает, что данные, импортированные из источника, в пол-
ной мере соответствуют нашим требованиям для загрузки в модель Power
BI. Чаще всего их приходится преобразовывать в приемлемый вид, особен-
но если речь идет о загрузке из файлов. В данном разделе мы рассмотрим
наиболее популярные виды трансформации таблиц в Power Query на при-
мере запросов Targets for 2020 и Targets из базы Wide World Importers.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Если вы хотите повторять все выполняемые действия, можете исполь-
зовать для этого файл 1.1.1 Connect to data sources.pbix из папки с
сопроводительными файлами.
66    Глава 1. Подготовка данных

На рис. 1.26 приведены первые четыре столбца из запроса Targets for


2020. В сумме этот запрос насчитывает 14 колонок и семь строк, информа-
цию о чем можно увидеть в нижнем левом углу окна редактора Power Query
при работе с запросом.

ПРИМЕЧАНИЕ. Количество строк в запросе


Информация о количестве строк базируется на предварительном
просмотре запроса и может не учитывать все без исключения записи.
Более точную цифру можно будет увидеть на вкладке Данные (Data)
по окончании загрузки.

Рис. 1.26. Запрос Targets for 2020

Как видите, данные в запросе Targets for 2020 не до конца подготовлены


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

Рис. 1.27. Запрос Targets

С запросом Targets также есть некоторые проблемы:


■■ планы продаж представлены на уровне годов, а нам нужна инфор-
мация по месяцам;
■■ годы приходят непосредственно из файлов и имеют окончание .csv;
■■ планы продаж представлены в миллионах, а не в долларах.
Применение преобразований к структуре таблиц    67

После преобразования запросов нам нужно будет объединить их. В идеа-


ле мы хотели бы получить таблицу со следующими столбцами:
■■ End of Month: позже нам необходимо будет установить связь с табли-
цей Date, и для этого можно использовать столбец с типом данных
Date;
■■ Buying Group: всего три значения и никаких итогов;
■■ Target Excluding Tax: в долларах за каждый месяц.

Работа с шагами запроса


Приводя запрос Targets for 2020 в порядок, давайте для начала избавим-
ся от некоторых автоматических шагов, примененных Power Query. При
взгляде на панель примененных шагов становится понятно, что после вы-
полнения навигации к нужному листу Excel Power Query определил пер-
вую строку набора данных в разряд заголовков, несмотря на то что в ней
не было названий столбцов. Кроме того, были автоматически исправлены
типы данных на основании неправильно выбранных имен столбцов, в ре-
зультате чего и типы были выбраны неверно.
1. Щелкните правой кнопкой мыши на шаге Повышенные заголовки
(Promoted Headers) на панели Примененные шаги (Applied steps).
2. Выберите пункт Удалить до конца (Delete Until End).
3. Подтвердите свой выбор, нажав на кнопку Удалить (Delete).
В результате будет удален шаг Повышенные заголовки и все последу-
ющие. Операция Удалить до конца бывает очень полезна, когда вы хотите
избавиться от нескольких шагов в сценарии одновременно.

ВАЖНО. Редактирование шагов


Вы можете удалить любой из примененных шагов, нажав на иконку
с крестиком слева от названия шага. Для изменения порядка следо-
вания шагов можно переносить их мышью вверх и вниз. У некото-
рых шагов вы видите справа иконку с шестеренкой – нажатие на ней
позволит выполнить настройку этого шага. Стоит отметить, что весь
запрос в целом может «сломаться» после изменения промежуточных
шагов, поскольку шаги в запросе выполняются строго последователь-
но, и большинство из них ссылается на результаты предыдущего шага.
К примеру, если сначала стоял шаг использования первой строки в
качестве заголовков, а затем менялись типы данных столбцов, то, по-
меняв эти два шага местами, мы получим ошибку, поскольку шаг сме-
ны типов данных будет ссылаться на некорректные имена столбцов.

Как видно на рис. 1.28, в первых двух строках остались записи специали-
ста планового отдела, а типы данных в столбцах сброшены.
68    Глава 1. Подготовка данных

Рис. 1.28. Запрос Targets for 2020 после удаления автоматически


примененных шагов

Уменьшение количества строк и столбцов


Поскольку первые три строки запроса не несут никакой значимой ин-
формации, их можно удалить. В дополнение к фильтрации столбцов ин-
терфейс Power Query предлагает следующие опции для уменьшения коли-
чества строк в запросе:
■■ Сохранить строки (Keep Rows):
• Сохранить верхние строки (Keep Top Rows): сохраняет указан-
ное количество верхних строк в запросе. Работает только с целой
таблицей;
• Сохранить нижние строки (Keep Bottom Rows): сохраняет ука-
занное количество нижних строк в запросе. Работает только с це-
лой таблицей;
• Сохранять диапазон строк (Keep Range of Rows): пропускает
определенное количество строк сверху и оставляет указанное
количество строк. Работает только с целой таблицей;
• Сохранять дубликаты (Keep Duplicates): сохраняет строки, по-
являющиеся в таблице больше одного раза. Эта опция может ра-
ботать со всей таблицей в целом – в этом случае на дубли про-
веряются все столбцы – либо с выбранными колонками, и тогда
критерии налагаются только на указанные столбцы;
• Сохранять ошибки (Keep Errors): сохраняет строки, содержащие
ошибки. Эта опция может работать как со всей таблицей в целом,
так и с выбранными столбцами.
■■ Удалить строки (Remove Rows):
• Удаление верхних строк (Remove Top Rows): удаляет указанное
количество верхних строк в запросе. Работает только с целой та-
блицей;
• Удалить нижние строки (Remove Bottom Rows): удаляет указан-
ное количество нижних строк в запросе. Работает только с целой
таблицей;
Применение преобразований к структуре таблиц    69

• Удалить чередующиеся строки (Remove Alternate Rows): удаля-


ет строки, следуя заданному пользователем шаблону. Начинает-
ся удаление с указанной строки, после чего происходит чередо-
вание сохраненных и удаленных строк в таблице по заданному
пользователем условию. Работает только с целой таб­лицей;
• Удалить дубликаты (Remove Duplicates): удаляет повторяющи-
еся строки. Эта опция может работать как со всей таблицей в це-
лом, так и с выбранными столбцами;
• Удалить пустые строки (Remove Blank Rows): удаляет строки,
полностью состоящие из пустых строк или значений null. Рабо-
тает только с целой таблицей. Если вам необходимо избавиться
от пустых значений в конкретной колонке, вы можете нажать на
кнопку фильтрации справа от ее названия и выбрать пункт Уда-
лить пустые (Remove Empty);
• Удалить ошибки (Remove Errors): удаляет строки, содержащие
ошибки. Может работать как со всей таблицей в целом, так и
с выб­ранными столбцами.

Поскольку примечания в первых строках могут измениться, лучше не


пытаться избавляться от них путем выполнения фильтрации. Лучше бу-
дет воспользоваться инструментом Удаление верхних строк (Remove Top
Rows).

1. На вкладке Главная (Home) нажмите на раскрывающуюся кнопку


Удалить строки (Remove Rows).
2. Выберите пункт Удаление верхних строк (Remove Top Rows).
3. Введите цифру 3 в поле Количество строк (Number of rows).
4. Нажмите на кнопку OK.

Теперь, когда мы избавились от ненужных строк, можно попросить Power


Query установить значения из первой строки в качестве заголовков табли-
цы. Для этого на вкладке Главная (Home) нажмите на кнопку Использо-
вать первую строку в качестве заголовков (Use First Row as Headers). Ре-
зультат показан на рис. 1.29.

Рис. 1.29. Запрос Targets for 2020 с удаленными лишними строками


и правильными заголовками

Обратите внимание, что, повышая заголовки, Power Query предпринял


еще одну попытку автоматически определить типы столбцов, и на этот раз
70    Глава 1. Подготовка данных

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

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Динамическое удаление верх-


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

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


нас хранятся итоги по столбцам, а в самой правой колонке с именем Year
Target – по строкам. Нам необходимо избавиться от этих итогов, поскольку
их наличие приведет к неправильной агрегации данных в Power BI.
Существует несколько способов избавиться от последней строки в табли-
це, и выбор должен зависеть от следующих факторов:

■■ если вы уверены, что в последней строке всегда будут располагаться


итоги, вы можете удалить ее так же, как удаляли первые три строки;
■■ в противном случае лучше будет положиться на фильтрацию столбца
Buying Group для исключения конкретного значения – в нашем слу-
чае это строка Buying Group Total;
■■ в зависимости от бизнес-логики вы также могли бы применить к ко-
лонке текстовые фильтры, удаляющие строки, оканчивающиеся на
«Total».

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Регистрозависимость Power


Query
Поскольку Power Query является средой, чувствительной к регистру
символов, вы должны употреблять в фильтре именно строку «Total».
Фильтр по «total» в этом случае не сработает. Позже в этой главе,
когда будем обсуждать расширенный редактор, мы посмотрим, как
можно обойти это ограничение.

Допустим, вы уверены, что все строки с итогами заканчиваются на


«Total». Давайте соответствующим образом отфильтруем столбец Buying
Group.
1. Нажмите на кнопку фильтрации справа от заголовка столбца Buying
Group.
2. В выпадающем меню Текстовые фильтры (Text Filters) выберите
пункт Не заканчивается на (Does Not End With).
Применение преобразований к структуре таблиц    71

3. Введите слово «Total» в поле справа от списка, в котором выбрано


значение Не заканчивается на (does not end with).
4. Нажмите на кнопку OK.
В результате последняя строка с итогами исчезнет из таблицы. Теперь
пришла пора избавиться от итоговой колонки. Чтобы это сделать, просто
выделите столбец Year Target и нажмите на клавишу Delete.
После этого в таблице должно остаться 13 столбцов и три строки. Но пока
еще нельзя сказать, что запрос Targets for 2020 полностью отвечает нашим
требованиям, поскольку в нем нет столбца с датой или месяцем. Вместо
этого планы продаж по месяцам располагаются в отдельных колонках. Сей-
час мы решим эту проблему.

Сведение, отмена свертывания и транспонирование


Запросы, подобные Targets for 2020, иногда называют сводными (pivoted),
поскольку атрибуты в нем расположены как в строках, так и в столбцах,
и одна и та же мера может быть разбросана по разным столбцам, как в
сводной таблице в Excel.
Power Query предлагает несколько исключительно полезных инстру-
ментов для сведения (pivoting) и отмены свертывания (unpivoting) столб-
цов:

■■ Столбец сведения (Pivot column): позволяет создать новые столб-


цы для каждого значения в колонке, которую вы сводите. Эта опция
бывает полезна, когда у вас в одном столбце присутствуют разные
меры. Допустим, в одном столбце у вас размещены текстовые метки
Quantity и Price, а в другом – числовые значения количества и цены.
В этом случае сведение столбца позволит вам создать отдельные ко-
лонки Quantity и Price, в каждом из которых будут свои значения;
■■ Отменить свертывание столбцов (Unpivot columns): этот инстру-
мент позволит преобразовать выбранные колонки в два фиксиро-
ванных столбца: Атрибут (Attribute), содержащий прежние названия
столбцов, и Значение (Value) со значениями этих столбцов. Обычно
этот метод удобно использовать с данными, подготовленными для
анализа при помощи сводных таблиц или других подобных инстру-
ментов. Кроме того, отмена свертывания столбцов годится в случае,
когда список столбцов известен заранее;
■■ Отменить свертывание других столбцов (Unpivot other columns):
в этом случае будет выполнена отмена свертывания всех столбцов,
кроме выбранных. Этот вариант подойдет в ситуации, когда вы точ-
но знаете только названия столбцов, по которым не нужно отменять
свертывание. Например, если у вас есть файл с добавляемыми каж-
дый месяц колонками с данными, по которым вы хотите выполнить
отмену свертывания, – это ваш выбор;
72    Глава 1. Подготовка данных

■■ Отменить свертывание только выбранных столбцов (Unpivot


only selected columns): этот вариант позволяет вам строго указать,
по каким именно столбцам вы хотите отменить свертывание.
Также в Power Query присутствует инструмент транспонирования
(Transpose), который позволяет развернуть таблицу, чтобы ее строки вос-
принимались как столбцы, а столбцы – как строки. Эта операция бывает
полезна при наличии нескольких уровней заголовков: в этом случае вы
можете транспонировать таблицу, объединить столбцы, содержащие за-
головки, и транспонировать снова, чтобы осталась единственная строка с
заголовками.

ВАЖНО. Транспонирование таблиц и имена столбцов


Помните, что во время транспонирования имена столбцов будут уте-
ряны, так что, если вы хотите сохранить их, предварительно понизьте
их. Для этого необходимо в выпадающей кнопке Использовать пер-
вую строку в качестве заголовков (Use First Row as Headers) выбрать
пункт Использовать заголовки как первую строку (Use Headers as
First Row).

В нашем примере Wide World Importers вам необходимо щелкнуть пра-


вой кнопкой мыши по столбцу Buying Group и выбрать пункт Отменить
свертывание других столбцов (Unpivot other columns). Это позволит со-
брать все названия столбцов, кроме Buying Group, в одной колонке с именем
Атрибут (Attribute), а их значения – в соседней колонке Значение (Value).
Результат должен выглядеть так, как показано на рис. 1.30.

Рис. 1.30. Отмена свертывания по месяцам


Применение преобразований к структуре таблиц    73

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

Добавление столбцов
В Power Query вы можете добавлять столбцы в запросы, воспользовав-
шись одной из следующих опций на вкладке Добавление столбца (Add
column):
■■ Столбец из примеров (Column From Examples): выбрав этот вари-
ант, вы сможете ввести несколько значений в новом столбце вруч-
ную, и Power Query постарается распознать в вашем вводе шаблоны
и продолжить заполнение столбца самостоятельно;
■■ Настраиваемый столбец (Custom Column): здесь можно просто
ввести формулу на языке M для вычисления значений в новом столб-
це;
■■ Вызвать настраиваемую функцию (Invoke Custom Function): эта
опция позволит вам настроить вызов функции для каждой строки в
таблице;
■■ Условный столбец (Conditional Column): позволит выстроить услов-
ную логику при создании нового столбца;
■■ Столбец индекса (Index Column): создает новый столбец с после-
довательно заполненными числовыми значениями, по умолчанию
начиная с нуля;
■■ Создать дубликат столбца (Duplicate Column): позволит создать
полную копию выбранной колонки.
Кроме того, в вашем распоряжении есть множество опций, связанных
со специфичными для конкретных типов данных преобразованиями при
добавлении столбцов, большинство из которых доступно и на вкладке Пре-
образование (Transform). Разница между операциями на вкладках Добав-
ление столбца и Преобразование заключается в том, что в первом случае
к запросу будет добавляться новая колонка, а во втором – трансформиро-
ваться существующая.

Targets for 2020


Как мы уже говорили, в запросе Targets for 2020 нам необходимо преоб-
разовать названия месяцев в даты, и для этого мы воспользуемся созда-
нием настраиваемого столбца.
1. На вкладке Добавление столбца (Add Column) нажмите на кнопку
Настраиваемый столбец (Custom Column).
2. Введите текст Start of Month в поле Имя нового столбца (New column
name). В поле Настраиваемая формула столбца (Custom column
74    Глава 1. Подготовка данных

formula) введите следующий текст: Date.From([Атрибут] & « 2020»).


В результате диалоговое окно Настраиваемый столбец должно вы-
глядеть так, как показано на рис. 1.31.

Рис. 1.31. Диалоговое окно Настраиваемый столбец

3. Нажмите на кнопку OK.


4. Щелкните правой кнопкой мыши по столбцу Атрибут и выберите
пункт Удалить.

При вводе настраиваемой функции вы можете обращаться к другим


столбцам таблицы, выбирая их из списка Доступные столбцы (Available
columns) двойным щелчком мыши, – это позволит вставить ссылку на нуж-
ный столбец в формулу.
После выполнения всех шагов ваш запрос должен выглядеть так, как по-
казано на рис. 1.32.

Рис. 1.32. Запрос Targets for 2020 с новым столбцом Start of Month

Как видите, созданный нами столбец Start of Month остался без типа дан-
ных. К тому же хотелось бы перенести его из конца в начало списка. Попут-
но необходимо переименовать столбец Значение (Value).
Применение преобразований к структуре таблиц    75

1. Щелкните по иконке типа данных ABC123 слева от заголовка столб-


ца Start of Month и выберите из списка тип Date.
2. Щелкните правой кнопкой мыши по столбцу Start of Month и в вы-
падающем меню Переместить (Move) выберите пункт В начало (To
Beginning).
3. Дважды щелкните по заголовку столбца Значение (Value).
4. Введите новое имя столбца Target Excluding Tax и нажмите на клави-
шу Enter.

Теперь запрос Targets for 2020 полностью готов к загрузке. Давайте пора-
ботаем с запросом Targets.

ВАЖНО. Типы настраиваемых столбцов


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

Targets
В запросе Targets хранятся планы продаж по годам, а мы хотим видеть
их по месяцам. Давайте условимся, что в нашем случае будет приемлемо
разделить годовые планы на равные части для получения ежемесячных.
Существует несколько способов решения этой задачи, один из кото-
рых состоит в создании нового столбца с месяцами и его разворачивании
(expanding).

1. На вкладке Добавление столбца (Add Column) нажмите на кнопку


Настраиваемый столбец (Custom Column).
2. Введите текст Months в поле Имя нового столбца (New column name).
3. В поле Настраиваемая формула столбца (Custom column formula)
введите следующий текст: {1..12}.
4. Нажмите на кнопку OK.
В результате запрос должен выглядеть так, как показано на рис. 1.33.

Рис. 1.33. Новый столбец Months в запросе Targets


76    Глава 1. Подготовка данных

В языке M фигурные скобки означают список значений (list), а две точ-


ки указывают на диапазон (range). Таким образом, запись {1..12} в строке
формул приведет к созданию списка целочисленных значений от 1 до 12 в
каждой строке добавляемого столбца. В результате в каждой ячейке столб-
ца Months вы увидите гиперссылку List. Поскольку настраиваемые столбцы
по умолчанию не имеют определенного типа данных, вы увидите слева от
названия колонки иконку ABC123, хотя на самом деле мы имеем дело со
списком.
Щелчок по любой гиперссылке List приведет к созданию шага преобра-
зования, содержащего целый список. Также можно посмотреть содержимое
ячейки без перехода к списку – для этого необходимо щелкнуть мышью на
свободном месте ячейки.
Развернуть новую колонку вы можете, нажав на кнопку с двумя стрел-
ками справа от названия столбца. После этого вам будет предложено два
варианта:
■■ Развернуть в новые строки (Expand to New Rows): это приведет к
дублированию строк в таблице в количестве, равном числу элемен-
тов в списке;
■■ Извлечь значения (Extract Values): в этом случае количество строк в
таблице останется неизменным, а значения из списка будут собраны
в строку с указанным вами разделителем.
В нашем примере мы используем первый вариант, в результате чего за-
прос приобретет вид, показанный на рис. 1.34.

Рис. 1.34. Развернутый столбец Months

Перед созданием столбца с типом Date нам необходимо преобразовать


первую колонку в таблице, содержащую имена файлов. Как видите, ко всем
годам в значениях этого столбца добавлено расширение .csv. Существует
множество способов извлечь значение года в этом случае, и выбор подхо-
дящего стоит делать на основании ваших бизнес-требований. Мы просто
извлечем первые четыре символа.
Применение преобразований к структуре таблиц    77

1. Выделите столбец Source.Name.


2. На вкладке Преобразование (Transform) в группе Столбец «Текст»
(Text Column) раскройте выпадающую кнопку Извлечь (Extract) и
выберите пункт Первые символы (First Characters).
3. Введите в поле Количество (Count) цифру 4.
4. Нажмите на кнопку OK.
5. Правой кнопкой мыши щелкните на столбце Source.Name и в выпа-
дающем меню Тип изменения (Change Type) выберите пункт Целое
число (Whole Number).
6. Теперь, когда мы извлекли номер года, можно составлять дату.
7. На вкладке Добавление столбца (Add Column) нажмите на кнопку
Настраиваемый столбец (Custom Column).
8. Введите текст Start of Month в поле Имя нового столбца (New
column name).
9. В поле Настраиваемая формула столбца (Custom column formula)
введите следующий текст: #date([Source.Name], [Months], 1).
10. Нажмите на кнопку OK.
11. Правой кнопкой мыши щелкните на столбце Start of Month и в выпа-
дающем меню Тип изменения (Change Type) выберите пункт Дата
(Date).

В созданной колонке Start of Month мы получим даты, как и хотели. Те-


перь осталось подчистить запрос.
1. Зажмите клавишу Ctrl и выделите следующие столбцы в указанной
последовательности:
■■ Start of Month;
■■ Buying Group;
■■ Target Excluding Tax (Millions).

2. Щелкните правой кнопкой мыши по заголовку любого из выделен-


ных столбцов и выберите пункт Удалить другие столбцы (Remove
Other Columns).

ВАЖНО. Порядок выделения столбцов


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

Теперь в запросе Target всего три столбца. Что осталось сделать, так это
скорректировать значения в столбце Target Excluding Tax (Millions).
78    Глава 1. Подготовка данных

1. Выделите столбец Target Excluding Tax (Millions).


2. На вкладке Преобразование (Transform) в группе Столбец «Коли-
чество» (Number Column) нажмите на выпадающую кнопку Стан-
дартный (Standard) и выберите пункт Умножить (Multiply).
3. Введите в поле Значение (Value) число 1000000 и нажмите на кнопку
OK.
4. Теперь в той же выпадающей кнопке выберите пункт Разделить
(Divide), введите в поле Значение (Value) число 12 и нажмите на
кнопку OK.
5. Дважды щелкните по заголовку столбца Target Excluding Tax (Millions),
введите новое имя –  Target Excluding Tax – и нажмите на клавишу
Enter.

Результат показан на рис. 1.35.

Рис. 1.35. Преобразованный запрос Target

Обратите внимание, что столбцы в запросах Targets и Targets for 2020 те-
перь называются одинаково. Это и была наша цель. Теперь можно объеди-
нить полученные запросы.

Комбинирование запросов
В Power Query комбинировать запросы можно двумя способами:
■■ добавлением (Append): представляет собой вертикальное комбини-
рование запросов по принципу инструкции UNION ALL в SQL;
■■ объединением (Merge): отвечает за горизонтальное комбинирование
запросов на основе ключей по принципу инструкции JOIN в SQL.

Добавление
Операция добавления запросов (append queries) позволяет объединить их
вертикально. В результате мы получим таблицу с большим количеством за-
писей. Обычно в объединяемых таким способом таблицах находится оди-
наковое количество столбцов, хотя это не является обязательным услови-
ем. Результирующая таблица будет включать в себя все колонки из обеих
Комбинирование запросов    79

таблиц, и, если в одной из них не было определенных столбцов, в строки


будут вставлены значения null.
Скомбинировать запросы по вертикали можно двумя способами:
■■ Добавить запросы (Append Queries): при выборе этого варианта
один или несколько запросов будут добавлены к выбранному, при
этом общее количество запросов не изменится. Этот вариант выби-
рается по умолчанию при нажатии на кнопку Добавить запросы
(Append Queries);
■■ Добавить запросы в новый (Append Queries as New): эта опция
предполагает объединение выбранных запросов с созданием ново-
го запроса. Данный выбор доступен при нажатии на выпадающую
кнопку Добавить запросы (Append Queries).

ПРИМЕЧАНИЕ. Сопроводительные файлы


Описанные здесь действия вы можете проделать в файле с именем
1.3.4 Apply data shape transformations.pbix из списка сопроводительных
файлов.

Давайте добавим друг к другу запросы Targets for 2020 и Targets в нашем
примере Wide World Importers.
1. Выберите запрос Targets на панели Запросы (Queries).
2. Нажмите на вкладке Главная (Home) на кнопку Добавить запросы
(Append Queries). Появится диалоговое окно, показанное на рис. 1.36.

Рис. 1.36. Опции добавления таблиц

3. Выберите запрос Targets for 2020 в выпадающем списке Добавляе-


мая таблица (Table to append).
4. Нажмите на кнопку OK.
В результате вы увидите новый шаг с именем Добавленный запрос
(Appended Query) на панели примененных шагов. Если не прокручивать
80    Глава 1. Подготовка данных

ползунок вниз, можно и не заметить никаких изменений. Эти изменения


становятся очевидными, если обратить внимание на то, что в нижнем ле-
вом углу окна количество строк в запросе изменилось со 108 на 144.
Чтобы в запросе Targets, как мы и планировали, присутствовали даты,
соответствующие концу месяца, преобразуем колонку Start of Month.

1. Щелкните по столбцу Start of Month правой кнопкой мыши и в выпа-


дающем меню Преобразование (Transform) откройте пункт Месяц
(Month) и выберите вариант Конец месяца (End of Month).
2. Переименуйте столбец Start of Month в End of Month.
Обратите внимание, что все преобразования вам требуется выполнять
всего один раз, несмотря на то что вы работаете фактически с двумя объе-
диненными запросами Targets и Targets for 2020.
На данный момент мы можем оставить запрос Targets for 2020 как есть,
хотя загружать в модель данных его нежелательно из-за присутствия в нем
дублирующихся строк с запросом Targets. С этой проблемой мы разберемся
в разделе, посвященном настройке загрузки данных.

Объединение
Как мы уже говорили ранее, под объединением запросов в терминологии
Power Query подразумевается их комбинирование по горизонтали, в ре-
зультате чего итоговый запрос становится шире. Объединение запросов
выполняется в соответствии с ключевыми полями, диктующими Power
Query, какие именно строки из одного запроса объединять со строками
другого.
Как и в случае с добавлением запросов, объединение может выполняться
как с созданием нового результирующего запроса, так и путем изменения
выбранного запроса.
Power Query предлагает шесть разных видов объединения запросов:

■■ Внешнее соединение слева (Left Outer): все строки из левой табли-


цы и совпадающие из правой;
■■ Внешнее соединение справа (Right Outer): все строки из правой
таблицы и совпадающие из левой;
■■ Полное внешнее соединение (Full Outer): все строки из обеих та-
блиц;
■■ Внутреннее соединение (Inner): только совпадающие строки;
■■ Антисоединение слева (Left Anti): строки, присутствующие только
в левой таблице;
■■ Антисоединение справа (Right Anti): строки, присутствующие
только в правой таблице.
На рис. 1.37 представлено визуальное сравнение разных видов соедине-
ний.
Комбинирование запросов    81

Рис. 1.37. Типы соединений, доступные в Power Query

Если ваши данные не идеальны, вы можете выполнить объединение за-


просов с использованием нечеткого соответствия (fuzzy matching). Для
этого в нижней части диалогового окна Слияние предусмотрены следую-
щие опции:

■■ Порог подобия (Similarity threshold): это значение может быть в ди-


апазоне от 0 до 1, где 0 предполагает соответствие любого значения
любому, а 1 допускает только полное равенство сравниваемых зна-
чений. Значение порога подобия по умолчанию – 0,8;
■■ Игнорировать регистр (Ignore case): отменяет чувствительность
поиска к регистру символов;
■■ Сопоставление путем объединения текстовых фрагментов
(Match by combining text parts): Power Query будет пытаться объеди-
нять слова для поиска соответствий между ключами;
■■ Максимальное число совпадений (Maximum number of matches): с
помощью этой опции можно ограничить количество строк во второй
таблице, соответствующих строке в первой. Это может быть полезно,
если в ваших таблицах есть множественные совпадения;
■■ Таблица преобразования (Transformation table): вы можете ис-
пользовать таблицу с двумя столбцами – From и To – для установле-
ния соответствий между ключевыми полями. К примеру, вы могли
бы поставить в соответствие строки NZ и New Zealand, и при сопо-
ставлении данных в таблицах эти вхождения будут считаться экви-
валентными.

Давайте рассмотрим принципы объединения таблиц на примере запро-


сов City и State Province из базы Wide World Importers.

1. На панели Запросы (Queries) выберите запрос City.


2. На вкладке Главная (Home) нажмите на кнопку Объединить запро-
сы (Merge Queries).
3. Выберите в выпадающем списке под предварительным просмотром
запроса City запрос State Province.
4. Выделите в обеих таблицах столбец State Province Key. Они должны
быть подсвечены, как показано на рис. 1.38.
5. Убедитесь, что в выпадающем списке Тип соединения (Join Kind)
выбран вариант Внешнее соединение слева (Left Outer).
6. Нажмите на кнопку OK.
82    Глава 1. Подготовка данных

Рис. 1.38. Опции при объединении запросов


После выполнения этих действий вы увидите, что к запросу City добавится
новый столбец State Province. Обратите внимание, что тип данных у
столбца State Province –  Table, также в каждой ячейке стоит одноименная
гиперссылка, а справа от заголовка колонки вместо кнопки фильтрации
располагается знакомая уже нам кнопка с двумя стрелками.
Если щелкнуть по любой ячейке, не задевая гиперссылку, в нижней части
окна откроется предварительный просмотр ее содержимого – в нашем слу-
чае это будет строка из таблицы.
Развернуть новый столбец можно путем нажатия на кнопку с двумя
стрелками. При этом вы можете сделать это двумя способами:
■■ развернуть (Expand): в этом варианте вы можете выбрать столб-
цы из присоединенной таблицы для добавления их в текущую. Если
строк соответствия окажется больше одной, в исходной таблице бу-
дут продублированы строки;
■■ агрегировать (Aggregate): эта опция позволяет выполнить агреги-
рование исходных строк при объединении, чтобы количество строк
на выходе не менялось. Вы можете применить арифметические
и статистические функции к колонкам присоединенной таблицы.
Соглашение об именовании столбцов и запросов    83

К  примеру, если это не противоречит вашим бизнес-требованиям,


вы могли бы вычислить среднее значение по полю State Province Key
из таблицы State Province.
При разворачивании столбца вы можете использовать исходное имя ко-
лонки в качестве префикса, для чего есть соответствующий флажок. Это
может быть полезно, если в объединяемых столбцах присутствуют столбцы
с одинаковыми именами, но их содержимое при этом отличается. К при-
меру, если вы выполняете объединение запросов Product и Product Category,
и в обоих есть поле с именем Name, логично будет использовать префикс.
Что ж, давайте развернем добавленный столбец в нашем запросе.
1. Нажмите на кнопку с двумя стрелками в заголовке столбца State
Province в запросе City.
2. Снимите флажок Выбрать все столбцы (Select All Columns).
3. Установите флажки State Province и Sales Territory.
4. Снимите галку Использовать исходное имя столбца как префикс
(Use original column name as prefix).
5. Нажмите на кнопку OK.
6. Переименуйте добавленный столбец State Province.1 в State Province.
7. Удалите столбец State Province Key.
Результат этих действий показан на рис. 1.39.

Рис. 1.39. Запрос City с новыми столбцами из запроса State Province

Итак, мы объединили запросы City и State Province, получив в результате


набор данных из пяти нужных нам столбцов. Колонку State Province Key мы
удалили за ненадобностью, а в столбцах из запроса State Province, которые
мы не включили в результирующую выборку, было всего по одному непо-
вторяющемуся значению.
Как и в случае с запросом Targets for 2020, информация из запроса State
Province теперь присутствует в двух разных запросах, что приводит к дубли-
рованию записей. Мы разберемся с этой проблемой позже в данной главе.

Соглашение об именовании столбцов


и запросов
При создании модели данных в Power BI вам совсем не обязательно сле-
довать каким-то общепринятым соглашениям об именовании таблиц и
84    Глава 1. Подготовка данных

столбцов. И все же соблюдение определенных правил поможет сделать


вашу модель более легкой для понимания и снизит количество возможных
ошибок в будущем.
В целом желательно стараться называть свои таблицы, столбцы и меры
так, чтобы человек без специальной подготовки мог без труда разобраться
в их предназначении. В отличие от принципов именования объектов в ба-
зах данных, в моделях данных допустимо использовать в названиях про-
белы, что исключает необходимость повсеместного использования сим-
волов подчеркивания и «верблюжьего» стиля написания составных слов
(CamelCase), когда каждое составляющее их слово начинается с прописной
буквы, тем самым напоминая верблюжий горб.

НА ПРАКТИКЕ. Чистота модели данных


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

При извлечении информации из представлений (views) базы данных за-


частую можно обнаружить, что объекты именуются при помощи префик-
сов, от которых желательно избавляться на этапе загрузки данных в мо-
дель. К примеру, если вы подключитесь к представлению vw_Sales в схеме
с именем pbi, по умолчанию оно будет импортировано в модель Power BI
под именем pbi vw_Sales. Для ясности всегда будет лучше назвать запрос
просто Sales, поскольку префиксы pbi и vw_ не несут в себе никакой полез-
ной информации для разработчиков и пользователей отчетов.
В модели данных Wide World Importers все таблицы и столбцы названы
с соблюдением этих профессионально-этических норм.

Использование расширенного редактора


для написания кода на языке M в Power Query
Несмотря на все богатство выбора инструментов, доступное вам в пользо-
вательском интерфейсе редактора Power Query, язык программирования M
всегда позволит добиться чуть большего. M представляет собой чувстви-
тельный к регистру язык, лежащий в основе движка Power Query.
Запросы, написанные на языке M, вы можете просматривать и изменять,
нажав на кнопку Расширенный редактор (Advanced editor) на вкладке
Использование расширенного редактора для написания кода на языке M в Power Query    85

Главная (Home). Также вы можете щелкнуть правой кнопкой мыши по


зап­росу на панели Запросы (Queries) и выбрать пункт Расширенный ре-
дактор (Advanced editor). Ниже показан код на языке M, соответствующий
запросу Date:

let
Source = Excel.Workbook(File.Contents("C:\DA-100\WideWorldImporters.xlsx"), null, true),
Date_Sheet = Source{[Item="Date",Kind="Sheet"]}[Data],
#"Promoted Headers" = Table.PromoteHeaders(Date_Sheet, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",
{{"Date”, type date},
{"Month", type text},
{"Month Number", Int64.Type},
{"Quarter", type text},
{"Year", Int64.Type},
{"ISO Week Number", Int64.Type}}
) in
#”Changed Type”

Обратите внимание, что запрос начинается с ключевого слова let и за-


канчивается конструкцией in. И хотя это не является обязательным услови-
ем для совсем небольших запросов, в запросах с несколькими применен-
ными шагами вы всегда будете видеть эти ключевые слова.
После слова let следует блок объявления переменных, соответствующих
примененным шагам, а после in – ссылка на итоговую переменную, кото-
рую запрос возвращает.
Обычно, как и в случае с запросом Date, каждый шаг основывается на
предыдущем, напрямую ссылаясь на него.
Если взглянуть на панель Параметры запроса (Query Settings), можно
обнаружить, что соответствующие переменным шаги называются несколь-
ко иначе, а именно:
1) Source;
2) Navigation;
3) Promoted Headers;
4) Changed Type.

Единственное имя переменной, которое в точности совпадает с приме-


ненным шагом, – это Source. Имя второго шага – Navigation – отличается,
поскольку Power Query группирует все навигационные действия и объеди-
няет их в один шаг с именем Navigation. Последние две шага отличаются,
поскольку их имена содержат пробелы. И когда в именах шагов присут-
ствуют специальные символы, их необходимо заключать в кавычки и пред-
варять символом решетки.
86    Глава 1. Подготовка данных

Строка формул
Альтернативой расширенному редактору в Power Query является стро-
ка формул (formula bar). Вместо просмотра кода всего запроса в целом вы
можете просматривать формулу выделенного шага. Для этого необходимо
на вкладке Просмотр (View) установить флажок Строка формул (Formula
Bar). На рис. 1.40 показана формула заключительного шага запроса Date.

Рис. 1.40. Последний шаг запроса Date в строке формул

Обратите внимание, что формула полностью совпадает с определением


переменной Changed Type в показанном выше листинге.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Описанные здесь действия вы можете проделать в файле с именем
1.3.5 Combine queries.pbix из списка сопроводительных файлов.

Ранее в этой главе вы видели, как можно при помощи пользовательского


интерфейса удалить первые три строки из запроса Targets for 2020. Там же
мы говорили, что в будущем количество строк с примечаниями в начале
таблицы может измениться, и мы должны предусмотреть это. Смотрите,
что произойдет, если одну верхнюю строку попытаться удалить следую-
щим образом.

1. Выберите запрос Targets for 2020.


2. Выберите примененный шаг с именем Navigation.
3. На вкладке Главная (Home) откройте выпадающую кнопку Уда-
лить строки (Remove Rows) и выберите вариант Удаление верхних
строк (Remove Top Rows).
4. В появившемся диалоговом окне нажмите на кнопку Вставить
(Insert).
5. В поле Количество строк (Number of rows) введите цифру 1.
6. Нажмите на кнопку OK.
Обратите внимание, что на панели Запросы (Queries) рядом с нашим за-
просом появилась иконка с предупреждением. И если открыть последний
шаг запроса, можно будет увидеть ошибку, показанную на рис. 1.41.
Использование расширенного редактора для написания кода на языке M в Power Query    87

Рис. 1.41. Ошибка, говорящая о том, что столбец Buying Group не найден

Если нажать на кнопку Перейти к ошибке (Go To Error), вы увидите,


что ошибка возникла на шаге Changed Type, а причина ее возникновения
заключается в том, что вы использовали неправильную строку в качестве
заголовков. Чтобы решить эту проблему, необходимо отредактировать код
запроса в шаге удаления верхних строк. Формула, сгенерированная при по-
мощи интерфейса пользователя, показана ниже:

= Table.Skip(#"Removed Top Rows1", 3)

Количество удаляемых строк у нас здесь фиксированное, а поскольку до


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

each [Column1] <> "Buying Group"

Таким образом, мы проинструктируем Power Query удалить все верхние


строки, не включающие значение Buying Group в столбце Column1. Целиком
обновленная формула будет выглядеть следующим образом:

= Table.Skip(#"Removed Top Rows1", each [Column1] <> "Buying Group")

И хотя результат не изменился, теперь наш запрос будет защищен от до-


бавления кем-то лишних примечаний в начало таблицы.
Также мы избавились от строки с итогами в запросе Targets for 2020 на
шаге Filtered Rows, исключив окончание строки на Total в столбце Buying
Group. Формула для этого шага показана ниже:

= Table.SelectRows(#"Changed Type", each not Text.EndsWith([Buying Group],


"Total"))

Поскольку Power Query является регистрозависимой средой, наш запрос


может перестать работать, если кто-то напишет в итогах total вместо Total –
со строчной буквы. Чтобы обезопаситься и от этого, давайте внесем незна-
чительные изменения в формулу:

= Table.SelectRows(#"Changed Type", each not Text.EndsWith([Buying Group],


"Total", Comparer.OrdinalIgnoreCase))
88    Глава 1. Подготовка данных

Использование конструкции Comparer.OrdinalIgnoreCase указывает Power


Query на то, что при выполнении инструкции необходимо игнорировать
регистр символов, чтобы слова total и Total воспринимались одинаково.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Справочник по языку M


Расширенный редактор и строка формул помогут вам понять, какие
функции языка M использует Power Query для выполнения тех или
иных операций. Официальную инструкцию по языку M можно найти
на сайте https://docs.microsoft.com/ru-ru/powerquery-m.

Настройка загрузки данных


При разработке модели данных Power BI вы можете использовать вспомо-
гательные запросы, которые не будут впоследствии загружаться в модель.
К примеру, при объединении файлов из папки Power Query автоматически
создает вспомогательные запросы, которые, как вы видели на рис. 1.4, на
панели запросов помечаются курсивом.
Если в вашем списке есть запросы, которые вы не планируете загружать
в модель данных, вы можете щелкнуть на них правой кнопкой мыши на па-
нели Запросы (Queries) и снять флажок Включить загрузку (Enable load).
Если запрос уже был загружен, вы получите предупреждение о возможной
потере данных.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Если вы хотите повторять все выполняемые действия, можете исполь-
зовать для этого файл 1.3.6 Leverage Advanced Editor.pbix из папки с
сопроводительными файлами.

Возможно, вы не захотите загружать в модель запросы, которые были


добавлены к другим запросам или объединены с ними. В нашем примере
Wide World Importers мы добавили запрос Targets for 2020 к запросу Targets,
а запросы State Province и City были объединены. В результате запросы ста-
ли содержать дублирующуюся информацию, в связи с чем желательно бу-
дет исключить из загрузки ставшие вспомогательными запросы Targets for
2020 и State Province.
1. Щелкните правой кнопкой мыши по запросу Targets for 2020 и сни-
мите флажок Включить загрузку (Enable load).
2. Повторите это с запросом State Province.
После этого указанные запросы должны изменить стиль написания на
курсив, как показано на рис. 1.42.
Решение проблем с импортом данных    89

Рис. 1.42. Панель Запросы с отключенными элементами

Теперь вы готовы к загрузке, которую можно выполнить, нажав на кноп-


ку Закрыть и применить (Close & apply) на вкладке Главная (Home). В ре-
зультате импорта данных в модель отключенные запросы не будут загру-
жены и не станут таблицами.

Решение проблем с импортом данных


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Если вы хотите повторять все выполняемые действия, можете исполь-
зовать для этого файл 1.3.7 Configure data loading.pbix из папки с со-
проводительными файлами.

В данном случае проблема связана с наличием ошибок в значениях.


Сами по себе ошибочные значения не мешают загрузке данных, и преду-
преждение носит лишь уведомительных характер. Ошибки загружаются в
модель в виде пустых значений.
90    Глава 1. Подготовка данных

Рис. 1.43. Информация об ошибке во время загрузки

Чтобы ознакомиться с характером ошибок в Power Query, можно нажать


на гиперссылку Просмотреть ошибки (View errors). В результате будет от-
крыт редактор Power Query и создан запрос с именем Ошибки в Customers
(Errors in Customers), в котором будет находиться одна строка. Если вы по-
смотрите на последнюю колонку Postal Code, то увидите ошибку, о которой
мы уже говорили раньше. Описание ошибки показано на рис. 1.44.

Рис. 1.44. Ошибка в столбце Postal Code

Ошибка возникла вследствие того, что Power Query попытался преобра-


зовать значение «Н/Д» («N/A»), являющееся текстовым, в число. Проблему
можно решить, изменив тип данных столбца Postal Code.
Заключение    91

1. Выберите запрос Customer.


2. Щелкните правой кнопкой мыши по столбцу Postal Code.
3. В выпадающем меню Тип изменения (Change Type) выберите пункт
Текст (Text).
4. Нажмите на кнопку Заменить текущее (Replace current).
Если теперь вернуться в запрос Ошибки в Customers, вы увидите, что он
стал пустым. Решив все проблемы, вы можете удалить группу вспомога-
тельных запросов, имя которой начинается с Ошибки в запросах (Query
Errors).
Теперь нажатие на кнопку Закрыть и применить (Close & apply) не
должно приводить к появлению ошибок.

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

■■ в Power BI Desktop встроено более ста родных коннекторов к различ-


ным источникам данных, и команда разработчиков регулярно по-
полняет этот список. Также вы можете разрабатывать собственные
коннекторы для подключения к источникам;
■■ вы можете менять настройки источника данных, включая его рас-
положение и ассоциированные с ним права доступа. Произведен-
ные изменения будут действовать на все запросы, обращающиеся к
источнику данных;
■■ Power BI Desktop отличается наибольшей эффективностью и позво-
ляет использовать все доступные средства в режиме импорта дан-
ных. Но этот режим подходит не всегда. К примеру, он может быть
неприемлем, если в источнике находится слишком много данных
или информация обновляется очень часто, а требования к системе
таковы, что в отчетах требуется выводить только актуальные данные.
В этом случае можно применить режим хранения DirectQuery, если
он поддерживается в источнике данных. Это позволит не загружать
данные в Power BI, а хранить их в источнике. И каждый раз, когда
требуется выполнить вычисления, Power BI будет отправлять запрос
в источник, предварительно переведя его на родной для него язык
запросов. Также вы можете производить определенные преобразо-
вания данных, которые могут быть выражены на языке источника.
Есть еще особый случай режима хранения DirectQuery, именуемый
92    Глава 1. Подготовка данных

Live Connection. Он доступен для Analysis Services и моделей данных


в службе Power BI;
■■ вы можете строить составные модели данных, одновременно под-
ключаясь более чем к одному источнику в режиме DirectQuery или
сочетая режимы импорта с DirectQuery;
■■ Power Query позволяет выполнять диагностику запросов при помо-
щи встроенных средств, что способствует выявлению узких мест в
запросах. Также вы можете видеть, выполняет ли Power BI попытку
перевода запроса на родной для источника данных язык;
■■ вы можете подключаться к облачному хранилищу Microsoft Dataverse
и потокам данных с использованием инструмента Power Query
в  облаке. Также допустимо создавать собственные потоки данных
в службе Power BI;
■■ в запросах допустимо использовать параметры, что позволит не
производить одни и те же ручные изменения в нескольких местах.
Параметры могут также пригодиться при создании собственных
пользовательских функций;
■■ для облегчения доступа к источникам данных другим сотрудникам
компании вы можете сохранить настройки подключения в файле
PBIDS, который можно использовать повторно;
■■ при наличии подписки Power BI Premium вы можете подключаться к
наборам данных в службе Power BI с использованием конечных точек
XMLA, что открывает доступ к использованию сторонних инстру-
ментов для доступа к моделям данных. Также при помощи конеч-
ных точек XMLA допустимо редактировать наборы данных в службе
Power BI посредством сторонних инструментов;
■■ Power Query предлагает богатый набор инструментов для профили-
рования данных, включающий в себя просмотр статистики и распре-
деления значений по столбцам, а также выявление ошибок в данных;
■■ список наиболее часто используемых операций в Power Query:
• замена значений;
• удаление строк;
• добавление, удаление и разделение столбцов;
• изменение типов данных столбцов;
• комбинирование запросов;
• сведение и отмена свертывания столбцов.
■■ редактор Power Query использует в своей основе строго типизиро-
ванный функциональный язык программирования M, помогающий
разработчикам выполнять как базовые, так и продвинутые преоб-
разования данных. Все преобразования фиксируются в применен-
ных шагах, которые позже могут быть отредактированы или удале-
ны. Код на языке M можно писать в расширенном редакторе Power
Мысленный эксперимент    93

Query. Зависимости между запросами можно видеть по вызову соот-


ветствующего инструмента;
■■ для тех запросов, которые вам не нужно загружать в модель данных,
можно снять соответствующий флажок в настройках;
■■ если после загрузки данных в модель вы обнаружили ошибки, Power
Query поможет вам определить проблемные строки и исправить не-
достатки.

Мысленный эксперимент
В данном мысленном эксперименте мы проверим ваши знания, приобре-
тенные в процессе чтения этой главы. Ответы вы сможете найти ниже.
Итак, вы аналитик данных в компании Contoso, ответственный за созда-
ние отчетов в Power BI. В компании настроены две среды: тестовая и ра-
бочая, обе на на базе Azure SQL. В рабочей среде содержится информация
начиная с 1990 года, а синхронизация с базой OLTP выполняется каждый
пять минут. Тестовая среда, предназначенная для разработки, обновляется
по требованию. Также данные в систему попадают из файлов CSV и Excel.
Поскольку в компании только присматриваются к Power BI, лицензию
Premium пока не приобретали.
Ответьте на следующие вопросы на основании предложенной информа-
ции и бизнес-требований.
1. С целью снижения нагрузки на рабочую среду вы подключаетесь к
тестовой среде разработки и в ней проектируете свои отчеты. По-
сле публикации отчета вам необходимо использовать рабочую среду.
Поскольку вы разрабатываете свою модель данных итеративно, вам
приходится то и дело переключаться с одной среды на другую. Как
можно минимизировать время на смену источника данных? Реше-
ние должно позволять переключаться между источниками в службе
Power BI.
a) Создать параметр для расположения базы данных и использо-
вать его в запросах.
b) Менять источник данных в настройках.
c) Менять источник данных в шаге Source (Источник) в каждом
запросе.
2. Вы получаете данные из таблицы в Azure SQL, насчитывающей сот-
ни миллионов записей. Загрузка таблицы целиком занимает около
получаса. Вы бы хотели загрузить порцию данных, состоящую из
1000  строк. Как вам это сделать? Ваше решение должно позволить
минимизировать время, требующееся для загрузки данных.
a) Использовать фильтр уровня отчета.
b) Сохранить верхние строки.
94    Глава 1. Подготовка данных

c) Написать собственное выражение на языке SQL с использова-


нием ключевого слова TOP.
3. Вы загружаете данные из файла CSV, содержащего более 10 000 строк.
При этом вам необходимо убедиться, что в одном из столбцов нет
пропущенных значений. Каким инструментом из арсенала Power
Query вам стоит воспользоваться?
a) Распределением столбцов.
b) Качеством столбца.
c) Профилированием столбца на основании 1000 верхних строк.
d) Профилированием столбца на основании всего набора данных.
4. Вы единственный разработчик отчетов Power BI в компании Contoso
и в данный момент проектируете свой первый отчет о продажах.
В вашем отчете данные должны появляться не позднее 10 мин с мо-
мента их записи в рабочую среду. Какой режим подключения вам
выбрать? Ваше решение должно быть ориентировано на экономию
ресурсов.
a) Режим импорта.
b) Режим Live Connection.
c) Режим DirectQuery.
5. Вам необходимо скомбинировать данные из таблиц Customer и City, в
обеих из которых присутствует ключевой столбец CityKey. Каждая стро-
ка в итоговом наборе данных должна содержать имя покупателя и его
город. Каким инструментом Power Query вам стоит воспользоваться?
a) Группировкой (Group by).
b) Объединением (Merge).
c) Транспонированием (Transpose).
d) Добавлением (Append).
6. После загрузки данных из рабочей книги Excel вы столкнулись с ошиб-
кой, показанной на рис. 1.45. Какой инструмент Power Query можно
использовать для устранения проблемы? Ваше решение должно под-
разумевать сохранение всех загруженных из Excel данных.
a) Заменить ошибки (Replace errors).
b) Удалить строки (Remove rows).
c) Изменить тип данных (Change type) с добавлением нового шага.
d) Изменить тип данных с заменой текущего шага.

Рис. 1.45. Сообщение об ошибке


Ответы    95

Ответы
1. Правильный ответ – a. Использование параметра позволит менять
источник данных во всех запросах одновременно, и этот способ впол-
не применим к службе Power BI. Вариант b также подходит для изме-
нения источника во всех запросах, но его нельзя использовать при-
менительно к службе Power BI. Третий вариант предполагает, что вы
должны менять источник в каждом запросе отдельно, и к службе Power
BI это решение также неприменимо.
2. Правильные ответы: b и c. Сохранение верхних строк на ранних стади-
ях запроса позволит эффективно перевести наше требование на язык
SQL, что приведет к ограничению количества загружаемых записей на
стороне базы данных. Написание собственного выражения на языке
SQL с использованием ключевого слова TOP также позволит отфиль-
тровать данные в источнике, что полностью отвечает нашим требова-
ниям. Вариант a предполагает загрузку всего набора данных, на что
может потребоваться много времени.
3. Правильные ответы: b и d. Распределение столбцов не дает информа-
ции о пропущенных значениях, тогда как качество столбца  дает. По
умолчанию профилирование столбца выполняется на основании 1000
первых строк в наборе данных, но, поскольку в нашем файле CSV со-
держится больше записей, нам необходимо проанализировать весь
набор. В противном случае пропущенные значения могут остаться в
конце файла.
4. Правильный ответ – c. Режим DirectQuery позволит выводить в отчете
наиболее актуальную информацию. Вариант с импортом предпола-
гает необходимость обновления набора данных, а для столь частого
обновления нам понадобится лицензия Power BI Premium. Использо-
вание режима Live Connection потребовало бы модели Analysis Services
или набора данных Power BI, чего в компании Contoso нет.
5. Правильный ответ – b. Операция объединения (Merge) позволяет ском-
бинировать таблицы на основании ключевого поля. Группировка
предназначена для агрегирования данных в одной таблице, транспо-
нирование меняет местами строки и столбцы, а добавление объединя-
ет таблицы с похожим набором столбцов по вертикали.
6. Правильный ответ – d. Ошибка возникла вследствие попытки приве-
дения текстовых значений к числовому формату, так что изменение
типа данных на текстовый должно решить проблему. Замена ошибок
приведет к появлению в таблице значений null, что будет означать
потерю исходной информации. Удаление строк также подразумевает
потерю данных. А изменение типа данных с добавлением нового шага
не решит проблему, поскольку новый тип будет применяться к оши-
бочным значениям.
Глава 2
Моделирование данных

В первой главе книги мы обсуждали навыки, необходимые для получения


и преобразования данных с использованием редактора Power Query. Этот
процесс также называется формированием данных (data shaping). В этой гла-
ве мы коснемся вопросов моделирования данных (data modeling).
Power BI позволяет выполнять определенный анализ данных сразу после
их загрузки в модель, но хорошее понимание принципов моделирования
данных может открыть вам дорогу к действительно сложному и полноцен-
ному анализу с использованием всех составляющих моделей, таких как
связи между таблицами, иерархии и пользовательские вычисления любого
уровня сложности. Так вы сможете использовать безграничный потенциал
Power BI. В первой главе книги мы уже показывали, как использовать код на
языке M в расширенном редакторе Power Query, а также писали несложные
выражения на DAX – родном для Power BI языке запросов.
Сейчас же мы подробно обсудим навыки, необходимые для проектиро-
вания, разработки и оптимизации моделей данных. Также мы подробно
поговорим о языке DAX и способах его применения для обогащения ваших
моделей.
Навыки, описываемые в данной главе.
■■ 2.1. Проектирование модели данных.
■■ 2.2. Разработка модели данных.
■■ 2.3. Создание мер с использованием языка DAX.
■■ 2.4. Оптимизация производительности модели данных.

Навык 2.1. Проектирование модели


данных
Эффективная модель данных строится на базе всестороннего анализа. Мо-
дель данных (data model) Power BI представляет собой одну или несколько
таблиц, которые могут быть объединены при помощи связей (relationship).
Хорошо спроектированная модель позволяет пользователям без труда по-
Определение таблиц    97

нять назначение тех или иных объектов и строить на их основании анали-


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

Основные составляющие навыка:


■■ определение таблиц;
■■ настройка свойств таблиц и столбцов;
■■ определение быстрых мер;
■■ выравнивание иерархий типа родитель–потомок;
■■ определение ролевых измерений;
■■ определение кратности связей и настройка двунаправленной
перекрестной фильтрации;
■■ оптимизация модели данных;
■■ установка связей типа «многие ко многим»;
■■ создание общей таблицы дат;
■■ определение приемлемого уровня гранулярности данных.

Определение таблиц
После загрузки в Power BI запросы становятся таблицами. После этого та-
блицы могут быть организованы в модель данных определенного типа,
именующегося также схемой (schema). Ниже приведены три наиболее рас-
пространенные схемы модели данных в Power BI:
■■ плоская, полностью денормализованная схема;
■■ схема «звезда»;
■■ схема «снежинка».
Существуют и другие схемы моделей данных, но эти три являются наи-
более распространенными.

Плоская схема
В плоской (flat) схеме все атрибуты модели денормализованы (denormalized)
в единую таблицу. Поскольку таблица в модели такого типа одна, никаких
связей в ней не присутствует, и в ключевых столбцах в большинстве случа-
ев нет никакой необходимости.
В примере Wide World Importers у нас есть единая таблица, содержащая
столбцы из всех таблиц, а значит, и колонки из таблиц Sale и Targets бу-
98    Глава 2. Моделирование данных

дут объединены. А поскольку исходные таблицы характеризуются разной


гранулярностью (granularity), впоследствии у вас возникнут проблемы со
сравнением запланированных данных с фактическими.

ПРИМЕЧАНИЕ. Гранулярность данных


Подробнее концепцию гранулярности данных мы обсудим далее в
этом разделе.

С точки зрения производительности плоская схема является достаточно


эффективной, но у нее есть свои явные недостатки:
■■ объединенная таблица может оказаться очень большой по размеру и
весьма сложной для навигации;
■■ столбцы и данные часто оказываются дублированы, что приводит к
увеличению размера файла;
■■ сочетание фактов различной гранулярности приводит к необходи-
мости написания сложных формул на языке DAX.
Плоские схемы зачастую используются при подключении к единому
простому источнику данных. Однако для более или менее сложных моде-
лей данных в Power BI такого способа размещения объектов стоит избегать.

Схема «звезда»
При использовании схемы «звезда» все таблицы концептуально делятся
на следующие типы:
■■ таблицы фактов (fact tables). В таблицах фактов содержатся метрики,
которые вам необходимо агрегировать. В этих таблицах, как прави-
ло, присутствуют внешние ключи (foreign keys), являющиеся основой
для создания связей с измерениями, и столбцы, значения из кото-
рых вы будете агрегировать. В нашем примере Wide World Importers
таблицы Sale и Targets представляют собой таблицы фактов. Иногда
такие таблицы называют таблицами данных (data tables);
■■ измерения (dimension tables). Измерения содержат описательные
атрибуты, помогающие выполнять анализ данных из таблиц фактов.
Как правило, такие таблицы состоят из уникального идентификато-
ра, называемого ключевым столбцом (key column), и описательных
колонок. В примере Wide World Importers таблицы City, Customer, Date,
Employee и Stock Item представляют собой измерения. Также такие
таблицы иногда называют таблицами поиска (lookup tables).
Обычно на схеме «звезда» измерения окружают таблицы фактов, что
видно по рис. 2.1.
Определение таблиц    99

Рис. 2.1. Схема «звезда» с единственной таблицей фактов – Sale

Схема «звезда» получила свое название исходя из внешнего сходства со


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

ПРИМЕЧАНИЕ.
Линиями на рис. 2.1 обозначаются связи между таблицами. Подробно
о связях мы будем говорить далее в этом разделе.

В большинстве случаев схема «звезда» будет наиболее оптимальным вы-


бором для моделей данных в Power BI, поскольку позволяет решить следу-
ющие проблемы, свойственные плоской схеме:

■■ поля в схеме «звезда» логически сгруппированы, что делает модель


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

Схема «снежинка»
Схема «снежинка» внешне напоминает схему «звезда», за исключением
того, что в ней некоторые измерения соединяются с другими измерени-
100    Глава 2. Моделирование данных

ями по типу лучей снежинки. Пример такой схемы вы можете видеть на


рис. 2.2.

Рис. 2.2. Схема «снежинка», в которой таблица State Province связана


с измерением City

Применительно к Wide World Importers можно сказать, что, если вы за-


грузите в модель данных запрос State Province, то она приобретет форму
снежинки. Все дело в связи между таблицами State Province и City с учетом
того, что последняя объединена с таблицей фактов Sale.
Схема «снежинка» может пригодиться при наличии в модели таблиц
фактов с разной гранулярностью.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Примеры всех трех схем модели вы можете найти в файле 2.1.1 Define
the tables.pbix из папки с сопроводительными файлами к книге.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Моделирование измерений


В дополнение к таблицам фактов и измерениям в моделях данных
могут присутствовать и другие типы таблиц, такие как таблицы фак-
тов без метрик (factless facts), произвольные (junk dimensions) и
вырожденные измерения (degenerate dimensions). Подробнее о них
можно узнать в разделе «Общие сведения о схеме “звезда”» и ее
значении в Power BI» по адресу https://docs.microsoft.com/ru-ru/power-bi/
guidance/star-schema.
Настройка свойств таблиц и столбцов    101

Настройка свойств таблиц и столбцов


Как таблицы, так и столбцы обладают своими свойствами, которые вы
имеете возможность настраивать на вкладке Модель (Model) в левой ча-
сти окна Power BI. Чтобы увидеть список свойств таблицы или колонки,
щелкните мышью по объекту и обратитесь к панели Свойства (Properties)
справа.

Свойства таблиц
Для таблиц, в зависимости от режима их хранения, вы можете изменять
следующие свойства:
■■ Имя (Name): хранит название таблицы;
■■ Описание (Description): в этом поле вы можете ввести описание та-
блицы, которое будет сохранено в метаданных модели. Это может
быть полезно при проектировании отчетов, поскольку текст из опи-
сания будет отображаться при наведении на соответствующий объ-
ект на панели Поля (Fields);
■■ Синонимы (Synonyms): синонимы могут оказаться весьма полез-
ными при работе с инструментом Вопросы и ответы (Q&A) в Power
BI, о котором мы поговорим далее. Вы можете добавить синонимы,
чтобы этот инструмент понимал, о каком объекте идет речь, даже
если вы используете другое имя;
■■ Метка строки (Row label): это свойство может оказаться полезным
как для инструмента Вопросы и ответы, так и для рекомендуемых
таблиц (featured tables). В этом свойстве вы можете указать столбец,
значения которого будут выступать метками для каждой строки.
Например, если вы попросите Вопросы и ответы показать «суммы
продаж по товарам» и выберете поле Product Name в качестве мет-
ки строки таблицы Product, инструмент покажет суммы продаж для
каждого наименования товаров;
■■ Ключевой столбец (Key column): если в вашей таблице присутствует
поле с уникальными значениями в каждой строке, вы можете уста-
новить его в качестве ключевого столбца таблицы;
■■ Скрытый (Is hidden): вы имеете возможность скрыть таблицу, чтобы
она исчезла с панели Поля (Fields);
■■ Рекомендуемая таблица (Is featured table): эта опция, как ясно из
названия, переводит таблицу в разряд рекомендуемых (featured), что
позволит ей быть использованной в Excel в ряде сценариев;
■■ Режим хранения (Storage mode): позволяет сделать выбор между
режимами Импорт (Import), DirectQuery и Двойной (Dual), о чем мы
уже упоминали в предыдущей главе.
102    Глава 2. Моделирование данных

Свойства столбцов
Для столбцов, в зависимости от их типа данных, вы можете редактиро-
вать следующие свойства:
■■ Имя (Name): хранит название столбца;
■■ Описание (Description): означает то же, что и для таблиц;
■■ Синонимы (Synonyms): то же, что и для таблиц: вы можете добав-
лять синонимы для столбцов, чтобы инструменту Вопросы и отве-
ты было комфортнее с ними работать;
■■ Папка отображения (Display folder): вы можете группировать столб-
цы в таблицах по папкам отображения;
■■ Скрытый (Is hidden): это свойство позволяет оставить столбец в мо-
дели данных и скрыть его на панели Поля (Fields);
■■ Тип данных (Data type): типы данных в Power BI отличаются от типов
в Power Query. К примеру, типы Процент (Percentage), Дата, время и
часовой пояс (Date/Time/Timezone) и Продолжительность (Duration)
здесь недоступны;
■■ Формат (Format): в зависимости от типа данных столбца вы можете
выбрать свои настройки форматирования. Например, для числовых
колонок вы увидите дополнительные опции Процентный фор-
мат (Percentage format), Разделитель групп разрядов (Thousands
separator) и Десятичные разряды (Decimal places);
■■ Сортировать по столбцу (Sort by column): у вас есть возможность
сортировать один столбец по другому. К примеру, вы можете упоря-
дочить названия месяцев по их порядковому номеру в году, чтобы
они были отсортированы в привычном виде;
■■ Категория данных (Data category): это свойство может оказать-
ся полезным для некоторых типов визуализации, а значением по
умолчанию для него является Без категорий (Uncategorized). В за-
висимости от типа данных вы также можете присвоить полю одну из
следующих категорий:
• адрес (Address);
• город (City);
• континент (Continent);
• страну или регион (Country/Region);
• округ (County);
• широту (Latitude);
• долготу (Longitude);
• местоположение (Place);
• почтовый индекс (Postal Code).
■■ Суммировать по (Summarize by): это свойство будет определять тип
агрегации для поля при вынесении в визуальный элемент. Предла-
гаемый выбор будет напрямую зависеть от типа данных столбца.
Определение быстрых мер    103

Для большинства типов данных в дополнение к опциям Не сумми-


ровать/Нет (Don’t Summarize/None) вы можете выбрать варианты
Количество (Count) и Число разных элементов (Count (Distinct)/
Distinct Count), а для числовых полей также агрегации Сумма (Sum),
Среднее (Average), Мин (Minimum/Min) и Макс (Maximum/Max).
Power BI всегда пытается сам определить наиболее подходящую для
столбца агрегацию, но это у него не всегда получается;
■■ Допускает значения NULL (Is nullable): вы можете запретить хра-
нить в столбце пустые значения. Если во время загрузки данных в
такой столбец будут обнаружены значения NULL, появится сообще-
ние об ошибке.

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


Вы должны понимать различия между форматированием столбца и
использованием функции FORMAT языка DAX. Функция FORMAT может
быть использована для создания нового столбца и всегда выводит
текст, тогда как форматирование столбца сохраняет исходный тип
данных.

ПРИМЕЧАНИЕ. Свойства мер


Вы также имеете возможность подобным способом менять свойства
мер, многие из которых будут схожи со свойствами столбцов. Замет-
ные исключения составляют свойства Суммировать по (Summarize
by), Сортировать по столбцу (Sort by column) и Допускает значения
NULL (Is nullable) – эти свойства недоступны для мер. Подробно о
мерах мы будем говорить далее в этой главе.

Определение быстрых мер


Мерой (measure) в Power BI называется динамическое вычисление запроса
на языке DAX, результат которого меняется в ответ на взаимодействие с ви-
зуальными элементами. Меры позволяют быстро и эффективно получать
ответы на вопросы о ваших данных. Создание эффективных мер – одна из
наиболее важных составляющих при проектировании отчетов. Если вы но-
вичок в DAX, но вынуждены писать меры, или если вам необходимо здесь
и сейчас провести быстрый анализ, создание быстрых мер (quick measure) –
ваш выбор. Быструю меру можно создать разными способами. Вот несколь-
ко из них:

■■ на вкладке Главная (Home) нажмите на кнопку Быстрая мера (Quick


measure);
104    Глава 2. Моделирование данных

■■ щелкните правой кнопкой мыши или нажмите кнопку с тремя точ-


ками возле таблицы или столбца на панели Поля (Fields) и выберите
пункт Новая быстрая мера (New quick measure). Этот способ позво-
лит сделать первоначальное заполнение формы, которая будет по-
казана ниже;
■■ если вы уже используете поле в своем визуальном элементе, нажми-
те на кнопку с изображением стрелки вниз рядом с соответствую-
щим полем в области Значения (Values) и выберите пункт Новая
быстрая мера (New quick measure). Этот способ также позволит вы-
полнить начальное заполнение формы расчета меры. Кроме того,
если это возможно, созданная мера будет добавлена на элемент ви-
зуализации. Также вы сможете использовать ее и в других визуаль-
ных элементах.

При создании быстрых мер вам будут доступны следующие виды вычис-
лений:

■■ агрегировать по категориям (Aggregate per category):


• в среднем на категорию (Average per category);
• дисперсия по категориям (Variance per category);
• максимум на категорию (Max per category);
• минимум на категорию (Min per category);
• взвешенное среднее по категориям (Weighted average per
category).
■■ фильтры (Filters):
• отфильтрованное значение (Filtered value);
• разность с отфильтрованным значением (Difference from
filtered value);
• процент разности с отфильтрованным значением
(Percentage difference from filtered value);
• продажи от новых клиентов (Sales from new customers).
■■ логика операций со временем (Time intelligence):
• итого с начала года (Year-to-date total);
• итого с начала квартала (Quarter-to-date total);
• итого с начала месяца (Month-to-date total);
• изменение по годам (Year-over-year change);
• изменение по кварталам (Quarter-over-quarter change);
• помесячное изменение (Month-over-month change);
• скользящее среднее (Rolling average).
■■ итоги (Totals):
• нарастающий итог (Running total);
• итог для категории (фильтры применены) (Total for category
(filters applied));
Определение быстрых мер    105

• итог для категории (фильтры не применены) Total for


category (filters not applied).
■■ математические операции (Mathematical operations):
• добавление (Addition);
• вычитание (Subtraction);
• умножение (Multiplication);
• деление (Division);
• процентная разность (Percentage difference);
• коэффициент корреляции (Correlation coefficient).
■■ текст (Text):
• оценка (Star rating);
• объединенный список значений (Concatenated list of values).

Каждое из представленных вычислений обладает собственными свой-


ствами и входными параметрами. На рис. 2.3 показан пример такого вы-
числения.

Рис. 2.3. Диалоговое окно создания быстрой меры


106    Глава 2. Моделирование данных

ПРИМЕЧАНИЕ. Скрытые поля


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

Давайте при помощи быстрой меры рассчитаем средний доход каждого


сотрудника в модели Wide World Importers.

1. На вкладке Главная (Home) нажмите на кнопку Быстрая мера


(Quick measure).
2. В выпадающем списке Вычисление (Calculation) выберите пункт В
среднем на категорию (Average per category).
3. Перетащите столбец Profit из таблицы Sale в поле Базовое значение
(Base value).
4. Перетащите столбец Employee из таблицы Employee в поле Категория
(Category).
5. Нажмите на кнопку OK.

После выполнения этих шагов вы обнаружите новую меру с именем


В среднем Profit на Employee (Profit average per Employee) на панели Поля
(Fields).

ПРИМЕЧАНИЕ. Начальная таблица


Ваша быстрая мера будет создана в последней активной таблице.
Если вы не можете ее найти, можете воспользоваться строкой поиска
на панели Поля. Для переноса меры в другую таблицу выделите ее на
панели Поля и на вкладке Средства работы с мерами (Measure tools)
выберите нужную вам таблицу в выпадающем списке Начальная таб­
лица (Home table).

Если выделить созданную меру, вы увидите ее код на языке DAX, приве-


денный ниже:

Profit average per Employee =


AVERAGEX(
KEEPFILTERS(VALUES('Employee'[Employee])),
CALCULATE(SUM('Sale'[Profit]))
)

При необходимости вы можете отредактировать эту формулу. Анализ го-


тового кода на DAX может помочь вам понять, как пишутся формулы для
мер.
Выравнивание иерархий типа родитель–потомок    107

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Быстрые меры


Для более подробной информации о быстрых мерах, включая их
ограничения и допуски, можно обратиться к разделу «Использование
быстрых мер для выполнения стандартных вычислений» по адресу
https://docs.microsoft.com/ru-ru/power-bi/transform-model/desktop-quick-
measures.

Выравнивание иерархий типа родитель–


потомок
Иерархии типа родитель–потомок (parent-child hierarchies) часто исполь-
зуются для реализации иерархической структуры в таблицах, хранящих
список сотрудников, товаров и пр. Вместо создания множества колонок эта
концепция предполагает использование всего двух столбцов для организа-
ции иерархии: ключа узла (node key) и ключа родительского узла (parent node
key). В примере Wide World Importers вы можете видеть воплощение иерар-
хии типа родитель–потомок в таблице Employee, как показано на рис. 2.4.

Рис. 2.4. Иерархическая таблица Employee

Пока вы можете игнорировать строку сотрудника с именем Unknown.


В  остальном же из анализа содержимого поля Parent Employee Key можно
сделать следующие выводы:
■■ Джей Шанд (Jai Shand) является главой компании, поскольку его ро-
дительский элемент не выбран;
■■ Изабелла Рупп (Isabella Rupp), Генри Форлонг (Henry Forlonge) и Джек
Поттер (Jack Potter) являются менеджерами компании и подотчетны
напрямую Джею Шанду;
■■ Изабелла Рупп, Генри Форлонг и Джек Поттер – непосредственные
начальники для продавцов компании;
108    Глава 2. Моделирование данных

■■ в представленной иерархии три уровня: директор, менеджеры и


продавцы.
Если бы вы пошли по пути добавления столбцов в таблицу по количе-
ству уровней иерархии, вам пришлось бы связать таблицу Employee в Power
Query саму с собой, что привело бы к увеличению исходной таблицы и ус-
ложнению будущих запросов к ней. В Power BI вы можете также решить эту
задачу с использованием вычисляемых столбцов и DAX.
Для создания вычисляемого столбца (calculated column) в таблице щел-
кните на ней правой кнопкой на панели Поля (Fields) и выберите пункт
Создать столбец (New column). В примере Wide World Importers вы можете
использовать следующую формулу для создания вычисляемого столбца в
таблице Employee:

Employee Path = PATH(Employee[Employee Key], Employee[Parent Employee Key])

В результате будет добавлен новый столбец с путем иерархии, который


вы можете видеть на рис. 2.5.

Рис. 2.5. Вычисляемый столбец Employee Path

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

Director =
LOOKUPVALUE(
Employee[Employee],
Employee[Employee Key],
PATHITEM(Employee[Employee Path], 1, INTEGER)
)
Manager =
Выравнивание иерархий типа родитель–потомок    109

LOOKUPVALUE(
Employee[Employee],
Employee[Employee Key],
PATHITEM(Employee[Employee Path], 2, INTEGER)
)
Salesperson =
LOOKUPVALUE(
Employee[Employee],
Employee[Employee Key],
PATHITEM(Employee[Employee Path], 3, INTEGER)
)

Во всех трех столбцах мы используем функцию PATHITEM для извлече-


ния ключа сотрудника на соответствующем уровне иерархии, а затем нахо-
дим его имя при помощи функции LOOKUPVALUE.
После добавления этих столбцов таблица Employee будет выглядеть так,
как показано на рис. 2.6.

Рис. 2.6. Вычисляемые столбцы Director, Manager


и Salesperson в таблице Employee

Обратите внимание, что некоторые ячейки в столбцах Manager и


Salesperson остались пустыми. Мы помним, что Джей Шанд (Jai Shand) яв-
ляется директором компании, и над ним никого нет, поэтому поля Manager
и Salesperson у него пустые. Для нашего примера Wide World Importers это
не большая проблема, поскольку в таблице Sale используются только клю-
чи продавцов. Если такая ситуация нежелательна, вы можете использовать
последний параметр функции LOOKUPVALUE, в котором можно задать зна-
чение столбца по умолчанию, как показано ниже:

Manager =
LOOKUPVALUE(
Employee[Employee],
Employee[Employee Key],
110    Глава 2. Моделирование данных

PATHITEM(Employee[Employee Path], 2, INTEGER),


Employee[Director]
)
Salesperson =
LOOKUPVALUE(
Employee[Employee],
Employee[Employee Key],
PATHITEM(Employee[Employee Path], 3, INTEGER),
Employee[Manager]
)

Эта формула гарантирует, что во всех столбцах будут находиться значе-


ния.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Окончательный набор столбцов в таблице вы можете увидеть в файле
2.1.4 Flatten PC hierarchy.pbix из папки с сопроводительными файлами.

Определение ролевых измерений


Бывают ситуации, когда таблицу фактов можно отфильтровать при помо-
щи измерения двумя или более способами. В нашем примере Wide World
Importers в таблице Sale присутствует два столбца с датами – это Invoice Date
Key, представляющий дату выставления счета, и Delivery Date Key, храня-
щий дату фактической доставки товара. Оба столбца могут быть связаны со
столбцом Date из таблицы Date. Таким образом, мы получим возможность
выполнять анализ продаж как по датам выставления счетов, так и по датам
доставки в зависимости от бизнес-требований. В данном сценарии табли-
цу Date принято называть ролевым измерением (role-playing dimension).
В Power BI допустимо создавать две и более физических связей между
двумя таблицами, но при этом в любой момент времени активной (active)
может быть лишь одна из них, остальные становятся неактивными (inactive).
По умолчанию именно по активным связям происходит распространение
фильтров. Выбор того, какую связь сделать активной по умолчанию, зави-
сит от желательного представления данных с точки зрения бизнеса.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Активные и неактивные связи


Подробнее об использовании активных и неактивных связей можно
почитать в разделе «Руководство по активным и неактивным связям»
по адресу https://docs.microsoft.com/ru-ru/power-bi/guidance/relationships-
active-inactive.
Определение ролевых измерений    111

Для создания связи между таблицами достаточно перетащить мышью


ключевой столбец из одной таблицы на предполагаемый ключ другой во
вкладке Модель (Model).

ПРИМЕЧАНИЕ. Автоматическое определение связей


По умолчанию Power BI сделает попытку автоматически определить
связи между таблицами сразу после загрузки данных. Обычно про-
грамма полагается на имена столбцов при определении связей, что
не всегда верно. Отключить автоматическое определение связей в
модели данных можно, открыв во вкладке Файл (File) выпадающее
меню Параметры и настройки (Options and settings), а там – раздел
Параметры (Options). Далее на вкладке Текущий файл (Current file)
перейдите в раздел Загрузка данных (Data load) и настройте флажки
по желанию.

В нашем примере Wide World Importers вы можете перетащить столбец


Date из одноименной таблицы на поле Invoice Date Key в таблице Sale. В
результате этого действия будет создана активная связь, обозначенная
сплошной линией. После этого вы можете перетащить то же поле Date из
таблицы Date на столбец Delivery Date Key из таблицы Sale. Это приведет к
созданию еще одной связи между этими таблицами, на этот раз неактив-
ной и обозначенной пунктиром. Итоговый вид связей показан на рис. 2.7.

Рис. 2.7. Связи между таблицами Sale и Date

ПРИМЕЧАНИЕ. Кратность и направление перекрестной фильтрации


Обратите внимание, что в обеих связях, показанных на рис. 2.7, на од-
ном конце линии располагается звездочка (*), на другом – единичка (1),
а посередине линии расположен квадратик со стрелкой. Так в модели
данных представлены кратность связи и направление перекрестной
фильтрации. Об этих понятиях мы поговорим далее в этом разделе.
112    Глава 2. Моделирование данных

Если навести мышью на связь во вкладке Модель (Model), будут подсве-


чены поля, участвующие в создании этой связи.
Создайте в модели данных Wide World Importers связи, показанные в
табл. 2.1, самостоятельно.
Таблица 2.1. Дополнительные связи в модели Wide World Importers
Откуда: таблица (столбец) Куда: таблица (столбец)

Sale (City Key) City (City Key)

Sale (Customer Key) Customer (Customer Key)

Sale (Salesperson Key) Employee (Employee Key)

Sale (Stock Item Key) Stock Item (Stock Item Key)

Неактивные связи могут быть активированы при помощи функции


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

Revenue by Delivery Date =


CALCULATE(
[Revenue],
USERELATIONSHIP(
'Date'[Date],
Sale[Delivery Date Key]
)
)

Чтобы использовать функцию USERELATIONSHIP, необходимо, чтобы


связь, которую вы планируете активировать, уже была создана в модели
данных. Такой подход удобно использовать в сценариях вроде нашего
примера Wide World Importers, где таблица фактов насчитывает несколько
столбцов с датами.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. CALCULATE и USERELATIONSHIP


Функция CALCULATE является одной из наиболее важных в DAX, и
позже в данной главе мы подробно о ней поговорим. Важно знать
и о некоторых ограничениях функции USERELATIONSHIP, с которы-
ми можно ознакомиться по адресу https://docs.microsoft.com/ru-ru/dax/
userelationship-function-dax.
Определение ролевых измерений    113

Если у вас уже есть несколько мер, которые вы собираетесь анализиро-


вать посредством разных связей, со временем похожих друг на друга мер в
вашей модели данных может стать великое множество, что сделает ее весь-
ма запутанной.
Еще одним недостатком использования функции USERELATIONSHIP яв-
ляется невозможность анализировать данные с использованием двух свя-
зей одновременно. К примеру, если у вас есть единая таблица Date, вы не
сможете посмотреть, по каким заказам счета были выставлены в прошлом
году, а доставка произошла в нынешнем.
Альтернативой функции USERELATIONSHIP, исключающей ее перечис-
ленные выше недостатки, является использование отдельных измерений
для каждой роли или связи. В примере Wide World Importers мы могли бы
создать два независимых измерения Delivery Date и Invoice Date, которые
позволили бы анализировать продажи одновременно по датам выставле-
ния счетов и датам доставки.
Можно разными способами создать измерения на основе существующей
таблицы Date. Один из них состоит в использовании вычисляемых таблиц
(calculated table). К примеру, код для создания таблицы Invoice Date на язы-
ке DAX может быть таким:

Invoice Date = 'Date'

Преимущество использования вычисляемых таблиц в сравнении со


ссылками или дублированием запросов в Power Query состоит в том, что,
если в вашей исходной таблице Date есть вычисляемые столбцы, они пе-
ренесутся и в копию, тогда как в случае использования Power Query вам
придется воспроизводить эти столбцы заново.
Кроме того, при создании копий измерений желательно переимено-
вывать столбцы, чтобы впоследствии было понятно, откуда они берутся.
К примеру, исходный столбец Date можно переименовать в Invoice Date. Это
можно сделать, щелкнув правой кнопкой мыши по нужному столбцу на па-
нели Поля (Fields) и выбрав пункт Переименовать (Rename) либо просто
дважды щелкнув по наименованию столбца. Также вы можете переимено-
вать поля, воспользовавшись более сложными выражениями вычисляемых
таблиц. К примеру, для создания новых имен столбцов можно применить
функцию SELECTCOLUMNS языка DAX.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример с созданными вычисляемыми таблицами содержится в файле
2.1.5 Define role-playing dimensions.pbix из папки с сопроводительны-
ми файлами.
114    Глава 2. Моделирование данных

ПРИМЕЧАНИЕ. Вычисляемые таблицы


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

Определение кратности связей и настройка


двунаправленной перекрестной фильтрации
В предыдущем разделе вы узнали, как создавать связи между таблицами в
модели данных. Здесь мы затронем концепции кратности и направления
кросс-фильтрации связей.
Редактировать свойства связи можно, дважды щелкнув по ней мышью на
вкладке Модель (Model). На рис. 2.8 показано диалоговое окно Изменение
связи (Edit relationship) для связи между таблицами Sale и Date.

Рис. 2.8. Свойства связи


Определение кратности связей и настройка двунаправленной перекрестной...     115

В этом окне вы можете выбрать из выпадающих списков таблицы, между


которыми будет создана связь. Для каждой таблицы вам доступна область
предварительного просмотра с возможностью выделить столбцы, на осно-
ве которых будут объединены таблицы. В отличие от инструмента объеди-
нения столбцов в Power Query, здесь может быть выделено только по одно-
му столбцу из каждой таблицы.
Флажок Активировать связь (Make this relationship active) определяет,
будет ли созданная связь активной. Между двумя таблицами в любой мо-
мент времени может быть только одна активная связь.
При использовании режима хранения DirectQuery вам также будет до-
ступна опция Предполагать целостность данных (Assume referential
integrity). В определенных ситуациях она может повысить эффективность
выполнения запросов.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Предположение о целостности


данных
Для корректной работы опции Предполагать целостность данных
необходимо, чтобы данные отвечали определенным требованиям.
Подробнее об этой опции, а также о требованиях к данным и послед-
ствиях их несоблюдения можно почитать в разделе «Применение
параметра Предполагать целостность данных в Power BI Desktop»
по адресу https://docs.microsoft.com/ru-ru/power-bi/connect-data/desktop-
assume-referential-integrity.

Здесь же мы более детально остановимся на описании двух других


концепций, а именно кратности и направления перекрестной фильтрации
связей.

Кратность связей
В зависимости от выбранных таблиц и столбцов вы можете выбрать один
из четырех типов кратности (cardinality) связи в соответствующем выпа-
дающем списке:
■■ «многие к одному» (Many-to-one);
■■ «один к одному» (One-to-one);
■■ «один ко многим» (One-to-many);
■■ «многие ко многим» (Many-to-many).
Связи «многие к одному» и «один ко многим», по сути, представляют один
и тот же тип – разница лишь в том, в каком порядке указаны таблицы при
их объединении. Слово «многие» в определении кратности связи говорит о
возможности дублирования значений в ключевом поле таблицы, тогда как
«один» предполагает уникальность значений ключевого столбца. В приме-
ре из модели Wide World Importers, показанном выше, таблица Sale распо-
116    Глава 2. Моделирование данных

лагается в связи на стороне «многие», а Date – на стороне «один». Каждая


дата встречается в таблице Date лишь раз, тогда как в таблице Sale даты
могут и будут дублироваться, поскольку в один день может быть обслужено
множество покупателей.
Связь типа «один к одному» представляет собой особый вид кратности,
в которой ключевое поле должно быть уникальным в обеих таблицах. Она
может оказаться полезной при необходимости разделить одно измерение
со множеством столбцов на несколько таблиц. Использовать кратность
связи «один к одному» допустимо только в случае полной уверенности в
отсутст­вии дубликатов в ключевых столбцах – в противном случае у вас тут
же посыпятся ошибки.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Связи типа «один к одному»


На практике связи типа «один к одному» встречаются крайне ред-
ко. Подробнее о применении таких связей в моделях данных Power
BI можно почитать в разделе «Руководство по связям типа «один к
одному»» по адресу https://docs.microsoft.com/ru-ru/power-bi/guidance/
relationships-one-to-one.

Связь типа «многие ко многим» в данном контексте относится к непо-


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

Направление кросс-фильтрации
Эта опция определяет направление распространения фильтра между та-
блицами. Для связей типа «многие к одному» и «один ко многим» вы може-
те выбрать между вариантами Однонаправленная (Single) и Двунаправ-
ленная (Both):
■■ при выборе однонаправленной связи фильтры из таблицы на сторо-
не «один» будут распространяться на таблицу на стороне «многие».
Графически этот тип кросс-фильтрации изображается в виде одно-
направленной стрелки на линии связи на вкладке Модель (Model);
■■ двунаправленная фильтрация предполагает, что фильтры в обеих та-
блицах, участвующих в связи, будут распространять свое действие
на другую таблицу. Такие связи также называются двунаправленными
(bidirectional). Графически этот тип связи изображается посредством
двух стрелок в разных направлениях, расположенных на линии свя-
зи на вкладке Модель. При выборе этой опции вы также можете
установить флажок Применить фильтр безопасности в обоих на-
правлениях (Apply security filter in both directions), чтобы обеспе-
чить безопасность фильтрации на уровне строк в обе стороны.
Определение кратности связей и настройка двунаправленной перекрестной...     117

Для иллюстрации этой концепции посмотрите на модель данных, изо-


браженную на рис. 2.9.

Рис. 2.9. Тестовая модель данных

На основании представленной модели вы можете, к примеру, создать два


табличных визуальных элемента:

■■ таблица 1: количество уникальных номенклатурных позиций (Stock


Item), проданных по годам;
■■ таблица 2: количество лет, в которые продавалась конкретная но-
менклатурная позиция.
Оба визуальных элемента представлены на рис. 2.10. Во второй таблице
выведены для примера только первые четыре позиции.
Как видите, в левой таблице количество уникальных продаваемых за год
позиций отличается от итогового значения, а в правой для каждой пози-
ции указано шесть уникальных лет, и это же значение мы видим в итого-
вом показателе.

Рис. 2.10. Табличные визуальные элементы

В левой таблице значения отличаются друг от друга, поскольку филь-


тры из таблицы Date распространяются на таблицу Stock Item через про-
межуточную таблицу Sale. Сначала таблица Date фильтрует таблицу Sale,
поскольку между ними установлена связь типа «один ко многим». После
этого фильтр из таблицы Sale распространяется на таблицу Stock Item по
118    Глава 2. Моделирование данных

установленной между ними двунаправленной связи. В 2017, 2018 и 2019


годах компания Wide World Importers по стечению обстоятельств продава-
ла одинаковое количество уникальных номенклатурных единиц, а имен-
но 219, тогда как в 2020-м продавались 227 позиций. В строке итогов вы
видите число 228, не являющееся арифметической суммой всех значений
по каждому году.
В правой таблице значения во всех строках одинаковые, поскольку
фильтр из таблицы Stock Item никак не может достигнуть таблицы Date в
отсутствие двунаправленной связи между таблицами Sale и Date. Несмо-
тря на то что представленные номенклатурные позиции продавались на
протяжении четырех лет, мы видим в каждой строке значение 6, равное
общему количеству лет в таблице Date.
Можно установить двунаправленную связь между таблицами и с по-
мощью функции CROSSFILTER языка DAX, как показано на примере
ниже:

Stock Items Sold =


CALCULATE(
DISTINCTCOUNT('Stock Item'[Stock Item]),
CROSSFILTER(
Sale[Stock Item Key],
'Stock Item'[Stock Item Key],
BOTH
)
)

Синтаксис функции CROSSFILTER в целом схож с функцией


USERELATIONSHIP – в первых двух параметрах указываются связан-
ные столбцы. Третьим параметром необходимо передать направление
кросс-фильтрации, и оно может быть следующим:

■■ BOTH: этот вариант соотносится с выбором опции Двунаправлен-


ная (Both) при указании направления перекрестной фильтрации во
время создания связи;
■■ NONE: при указании опции NONE связь будет деактивирована. Этого
эффекта можно добиться, сняв флажок Активировать связь (Make
this relationship active) в диалоговом окне редактирования связи;
■■ ONEWAY: этот вариант совпадает с выбором опции Однонаправ-
ленная (Single) при указании направления перекрестной фильтра-
ции во время создания связи.

Двунаправленная фильтрация иногда используется при наличии таблиц,


объединенных связью типа «многие ко многим» посредством таблицы-мо-
ста, когда напрямую их объединять нежелательно.
Оптимизация модели данных    119

ПРИМЕЧАНИЕ. Сопроводительные файлы


Все созданные связи в модели данных вы можете видеть в файле
2.1.6 Define a relationship’s cardinality and cross-filter direction.pbix из
папки с сопроводительным файлами.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Двунаправленные связи


Подробнее и с примерами можно почитать о двунаправленных свя-
зях в разделе «Руководство по двунаправленным связям» по адресу
https://docs.microsoft.com/ru-ru/power-bi/guidance/relationships-bidirectional-
filtering.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Решение проблем со связями


При работе со связями ошибки могут возникать по множеству причин.
С наиболее подробным руководством по устранению этих неприят-
ностей можно ознакомиться в разделе «Руководство по устранению
неполадок со связями» по адресу https://docs.microsoft.com/ru-ru/power-
bi/guidance/relationships-troubleshoot.

Оптимизация модели данных


Методы и подходы к проектированию и разработке модели данных в Power
BI в конечном счете влияют на производительность итоговых отчетов. Гра-
мотно спроектированная модель одновременно учитывает и требования
бизнеса, и ограничения, характерные для источников данных. Оптимиза-
ция моделей данных – это весьма и весьма обширная тема. Мы же приве-
дем лишь базовые концепции, которых следует придерживаться при раз-
работке моделей. И эти концепции касаются:
■■ режима хранения данных;
■■ организации связей;
■■ создания агрегаций;
■■ настройки кратности связей.

Пройдемся по каждому пункту отдельно.

Режим хранения данных


Как вы уже знаете, Power BI поддерживает несколько режимов хранения
данных, среди которых:
■■ импорт;
■■ DirectQuery;
■■ Live Connection.
120    Глава 2. Моделирование данных

Чтобы не повторяться, советуем вам обратиться к главе 1, где мы подроб-


но описали преимущества и недостатки каждого из этих режимов.

Организация связей
При использовании составных моделей данных очень важно помнить,
что связи ведут себя по-разному в зависимости от режима хранения свя-
зываемых таблиц.
Для лучшего понимания того, как работает модель, можно использовать
аналогию с островами (islands) в отношении размещения запрашиваемых
данных. К примеру, если вы используете два источника данных с режимом
хранения DirectQuery, каждый из них будет располагаться на отдельном
острове. И наоборот, импортированные данные относятся к одному остро-
ву вне зависимости от того, где находятся их исходные источники данных,
поскольку они размещаются в памяти. При подключении к данным, распо-
лагающимся на одном острове, эффективность запросов будет максималь-
ной, поскольку вам не нужно будет «переплывать» с острова на остров.
Ниже приведены типы связей с указанием относительного размещения
данных от самого быстрого к самому медленному варианту:
■■ «один ко многим» внутри одного острова;
■■ непосредственные связи «многие ко многим»;
■■ связи «многие ко многим» с использованием таблиц-мостов;
■■ межостровные связи.
Более подробно о связях типа «многие ко многим» мы будем говорить в
следующем разделе.

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

Настройка кратности связей


Термин кратность (cardinality), помимо описания типов связей, также
относится к количеству неповторяющихся значений в столбце. Power BI
хранит импортированные данные в виде столбцов, а не строк. Именно по-
этому кратность столбцов играет важную роль в плане эффективности за-
просов. В общем случае чем меньше в столбце неповторяющихся значений,
тем выше производительность. Позже в этой главе мы рассмотрим способы
уменьшения кратности столбцов.
Установка связей типа «многие ко многим»    121

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Оптимизация модели данных


Подробное руководство по оптимизации моделей данных можно
найти в разделе «Оптимизация схемы модели» по адресу https://docs.
microsoft.com/ru-ru/power-bi/guidance/composite-model-guidance#optimize-
model-design.

Установка связей типа «многие ко многим»


Связи типа «многие ко многим» достаточно часто встречаются в моделях
данных. В основном они применяются в следующих видах:

■■ связи «многие ко многим» между измерениями: к примеру, у


одного клиента может быть несколько банковских счетов, и в то же
время у одного счета может быть несколько владельцев;
■■ связи между таблицами с разными уровнями гранулярности:
допустим, в таблице продаж данные могут храниться на уровне дат,
а в таблице плана – на уровне месяцев. Обе таблицы могут быть свя-
заны с единой таблицей дат. В этом случае связь между таблицей с
планами продаж и датами будет «многие ко многим» из-за разницы
в уровнях гранулярности.

ПРИМЕЧАНИЕ. Гранулярность данных


Подробно о понятии гранулярности данных мы поговорим далее в
этой главе.

В примере Wide World Importers связь типа «многие ко многим» установ-


лена между таблицами Date и Stock Item: в один день может быть продано
несколько номенклатурных позиций, и каждая позиция может продаваться
в разные даты. В данном случае связь организуется через таблицу Sale. Так-
же связь типа «многие ко многим» присутствует между измерением Date
и таблицей фактов Targets по причине разницы в уровнях гранулярности.
В Power BI поддерживается два вида связей «многие ко многим»:
■■ прямая связь;
■■ связь с использованием таблицы-моста.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Если вы хотите проделать все действия вместе с нами, откройте файл
2.1.8 Resolve many-to-many relationships.pbix из папки с сопроводи-
тельными файлами.
122    Глава 2. Моделирование данных

Прямые связи типа «многие ко многим»


Как мы уже сказали, Power BI поддерживает кратность «многие ко мно-
гим», что позволяет создавать связи такого типа между таблицами в моде-
ли данных.
Давайте создадим связь между таблицами Targets и Customer на основе
столбца Buying Group так же, как вы создавали другие связи.
1. Перейдите на вкладку Модель (Model).
2. Перетащите столбец Buying Group из таблицы Customer на столбец
Buying Group в таблице Targets.
3. Убедитесь, что флажок Активировать связь (Make this relationship
active) установлен.
4. В выпадающем списке Направление кросс-фильтрации (Cross filter
direction) выберите вариант Один (Customer фильтрует Targets)
(Single (Customer filters Targets)). На рис. 2.11 показано, как должно
выглядеть диалоговое окно создаваемой связи.
5. Нажмите на кнопку OK.

Рис. 2.11. Диалоговое окно создания связи


Установка связей типа «многие ко многим»    123

Вы увидите, что на обоих концах линии созданной связи будут находить-


ся звездочки (*), а это говорит о том, что тип связи – «многие ко многим».
Этот способ создания связи «многие ко многим» подходит в ситуациях,
когда количество уникальных значений в столбцах в каждой из таблиц не
превышает одной тысячи. В противном случае этот метод может оказаться
неэффективным, и необходимо будет посмотреть в сторону организации
связи посредством промежуточной таблицы-моста. Технические подроб-
ности этой разницы в эффективности двух подходов выходят за рамки
данного экзамена.
Еще одним недостатком такого типа связи является невозможность вос-
пользоваться функцией RELATED языка DAX, поскольку ни одна из таблиц
не располагается в связи на стороне «один».
Созданная связь показана на рис. 2.12.

Рис. 2.12. Связь между таблицами Customer и Targets

Связи типа «многие ко многим» с использованием


таблиц-мостов
Другой способ создания в Power BI связи типа «многие ко многим» меж-
ду таблицами состоит в использовании вспомогательной таблицы-моста.
Таблица-мост (bridge table) служит посредником для создания промежу-
точных связей типа «один ко многим» с каждой из таблиц, участвующих в
связи «многие ко многим». Таблицы-мосты могут быть двух видов:
■■ таблица с одним столбцом с уникальными значениями. Табли-
ца-мост находится на стороне «один» в связях с обеими таблицами,
составляющими объединение. Этот подход часто используется при
создании связей с таблицами фактов в случае разных уровней гра-
нулярности;
■■ таблица с двумя столбцами с уникальными парами значений.
Таблица-мост находится на стороне «многие» в каждой из связей с
объединяемыми таблицами. Такой метод используется для органи-
зации связей типа «многие ко многим» между измерениями.
В нашем примере Wide World Importers таблицы Date и Targets обладают
разной гранулярностью:
124    Глава 2. Моделирование данных

■■ в таблице Targets располагается по одной строке для каждой покупа-


тельской группы (Buying Group) на дату конца месяца;
■■ в таблице Date присутствуют строки для каждой даты.
Обратите внимание, что в таблице Date нет столбца с датами окончания
месяцев. Даты представляют собой особый случай, поскольку вы можете
создать связь «один ко многим» между таблицами Date и Targets и избежать
необходимости создавать связь типа «многие ко многим».

ПРИМЕЧАНИЕ. Несовпадение гранулярности дат


При создании связи между таблицами Targets и Date по месяцам
необходимо обращать внимание на то, какие значения будут выво-
диться при фильтрации таблицы Date по датам. Мы рассмотрим эту
проблему подробнее в разделе «Определение приемлемого уровня
гранулярности данных» далее в этой главе.

Для иллюстрации описанных принципов на практике давайте создадим


связь типа «многие ко многим» между таблицами Date и Targets на основа-
нии поля End of Month. Для начала нам необходимо создать столбец End of
Month в таблице Date.
1. Запустите редактор Power Query, нажав на кнопку Преобразование
данных (Transform Data) на вкладке Главная (Home).
2. Выделите столбец Date в запросе Date.
3. На вкладке Добавление столбца (Add column) нажмите в группе Из
даты и времени (From date & time) на выпадающую кнопку Дата
(Date) и в подменю Месяц (Month) выберите пункт Конец месяца
(End of month).
Таблицу-мост можно создать разными способами, включая Power Query,
вычисляемые таблицы в DAX и импорт новой таблицы. Все эти способы
равноценны. В нашем случае давайте создадим мост между таблицами
Date и Targets при помощи Power Query.
1. В редакторе Power Query щелкните правой кнопкой мыши по запро-
су Date и выберите пункт Ссылка (Reference).
2. Переименуйте созданный запрос из Date (2) в End of Month.
3. Щелкните правой кнопкой мыши на заголовке столбца Конец месяца
(End of Month) и выберите пункт Удалить другие столбцы (Remove
other columns).
4. Снова нажмите правой кнопкой мыши на заголовке столбца Конец
месяца (End of Month) и на этот раз выберите пункт Удалить дубли-
каты (Remove duplicates).
5. На вкладке Главная (Home) нажмите на кнопку Закрыть и приме-
нить (Close & apply).
Создание общей таблицы дат    125

Теперь вы можете связать таблицы Date и Targets с учетом требований,


перечисленных в табл. 2.2.
Таблица 2.2. Связи между таблицами Date, End of Month и Targets
Откуда: Таблица Куда: Таблица Направление
Активная
(столбец) (столбец) кросс-фильтрации

Date (End of Month) End of Month (End of Month) Да Двунаправленная

Targets (End of Month) End of Month (End of Month) Да Однонаправленная

Образованные связи показаны на рис. 2.13.

Рис. 2.13. Связи между таблицами Date, End of Month и Targets

ПРИМЕЧАНИЕ. Сопроводительные файлы


Итоговый результат можно посмотреть в файле 2.1.8 Resolve many-to-
many relationships.pbix из папки с сопроводительными файлами.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Связи типа «многие ко многим»


Больше примеров по теме связей типа «многие ко многим» можно
посмотреть в разделе «Руководство по связи “многие ко многим”»
по адресу https://docs.microsoft.com/ru-ru/power-bi/guidance/relationships-
many-to-many и в разделе «Применение связей “многие ко многим”
в Power BI Desktop» по адресу https://docs.microsoft.com/ru-ru/power-bi/
transform-model/desktop-many-to-many-relationships.

Создание общей таблицы дат


По умолчанию Power BI создает календарную иерархию для каждого столб-
ца с датой или датой и временем, присутствующего в ваших источниках
данных.
И хотя иногда автоматического календаря бывает вполне достаточно,
чаще всего лучше будет создать свою собственную таблицу дат. У такого
подхода есть несколько преимуществ:
126    Глава 2. Моделирование данных

■■ вы можете использовать любой календарь, помимо григорианского;


■■ вы можете вести учет недель в календаре;
■■ вы можете фильтровать несколько таблиц фактов при помощи еди-
ного измерения с датами.
Если у вас нет своей таблицы дат, вы можете импортировать ее из источ-
ника данных или создать ее самостоятельно. Сделать это можно при помо-
щи Power Query или DAX, и по эффективности эти методы не отличаются.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Автоматические календарные


иерархии
Подробную информацию и сведения об ограничениях автоматиче-
ских календарных иерархий можно почитать в разделе «Автоматиче-
ские дата и время в Power BI Desktop» по адресу https://docs.microsoft.
com/ru-ru/power-bi/guidance/auto-date-time.

Создание календаря в Power Query


В расширенном редакторе Power Query вы можете воспользоваться
функцией List.Dates языка M, возвращающей список дат, после чего преоб-
разовать список в таблицу и добавить к ней необходимые столбцы. Приве-
денный ниже запрос позволит создать простой календарь, начинающийся
с 1 января 2016 года:

let
Source = #date(2016, 1, 1),
Dates = List.Dates(Source, Duration.TotalDays(Date.AddYears(Source, 6) - Source),
#duration(1,0,0,0)),
#"Converted to Table" = Table.FromList(Dates, Splitter.SplitByNothing(),
type table [Date = date]),
#"Inserted Year" = Table.AddColumn(#"Converted to Table", "Year",
each Date.Year([Date]), Int64.Type),
#"Inserted Month Name" = Table.AddColumn(#"Inserted Year", "Month Name",
each Date.MonthName([Date]), type text),
#"Inserted Month" = Table.AddColumn(#"Inserted Month Name", "Month",
each Date.Month([Date]), Int64.Type),
#"Inserted Week of Year" = Table.AddColumn(#"Inserted Month", "Week of Year",
each Date.WeekOfYear([Date]), Int64.Type)
in
#"Inserted Week of Year"

Если вам необходимо добавить календарь в модель данных, начните с


создания пустого запроса.
Создание общей таблицы дат    127

1. На вкладке Главная (Home) в редакторе Power Query нажмите на вы-


падающую кнопку Создать источник (New Source).
2. Выберите пункт Пустой запрос (Blank Query).
3. После этого в группе Запрос (Query) нажмите на кнопку Расширен-
ный редактор (Advanced Editor).
4. Замените существующий код в окне на представленный выше и на-
жмите на кнопку Готово (Done).
5. Дайте вашему запросу осмысленное имя вроде Календарь, Calendar
или Date.
Результирующий запрос должен выглядеть так, как показано на рис. 2.14,
где представлены только первые строки таблицы.

Рис. 2.14. Простой календарь, созданный в Power Query

Вам может пригодиться таблица с календарем в Power Query, если вы на-


мереваетесь использовать ее в каких-то других запросах, поскольку в Power
Query вы не можете ссылаться на вычисляемые таблицы.

Создание календаря при помощи DAX


В языке DAX вы можете воспользоваться специальными функциями
CALENDAR и CALENDARAUTO для создания таблицы дат. Обе эти функции
возвращают таблицу с единственным столбцом Date. После создания та-
блицы вы можете добавить к ней необходимые вам вычисляемые столбцы,
а можете создать вычисляемую таблицу со всеми нужными вам столбцами.

ПРИМЕЧАНИЕ. Вычисляемые таблицы


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

Функция CALENDAR требует передачи начальной и конечной даты в соз-


даваемом календаре, которые вы можете задать статически или динамиче-
ски в зависимости от ваших бизнес-требований:
128    Глава 2. Моделирование данных

Calendar Dynamic =
CALENDAR(
MIN(Sale[Invoice Date Key]),
MAX(Sale[Invoice Date Key])
)

Функция CALENDARAUTO сканирует модель данных на предмет наличия


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

Calendar =
ADDCOLUMNS(
CALENDARAUTO(),
"Year", YEAR([Date]),
"Month Name", FORMAT([Date], "MMMM"),
"Month", MONTH([Date]),
"Week of Year", WEEKNUM([Date])
)

ПРИМЕЧАНИЕ. Сопроводительные файлы


Вы можете увидеть разные таблицы дат в файле 2.1.9 Create a common
date table.pbix из папки с сопроводительными файлами.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Создание таблиц дат


Больше примеров по созданию календарей можно увидеть в разде-
ле «Создание таблиц дат в Power BI Desktop» по адресу https://docs.
microsoft.com/ru-ru/power-bi/guidance/model-date-tables.

Определение приемлемого уровня


гранулярности данных
Термин гранулярность данных (data granularity) относится к уровню дета-
лизации информации, предоставляемому таблицей. Допустим, в таблице
Targets из нашего примера Wide World Importers хранятся планы продаж
с детализацией до месяца и покупательской группы, а значит, грануляр-
ность этой таблицы соответствует месяцу и группе. Если вы фильтруете
таблицу Targets по полю с более низким уровнем гранулярности, такому
как Customer или Date, вы не получите значимых результатов. На рис. 2.15
показан пример фильтрации планов продаж по дням.
Определение приемлемого уровня гранулярности данных    129

Рис. 2.15. Таблица Targets с детализацией по дням


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

Total Target (filters) =


IF(
NOT(
ISFILTERED('Date'[Date])
|| ISFILTERED('Date'[ISO Week Number])
|| ISFILTERED(Customer[Customer Key])
|| ISFILTERED(Customer[Customer])
|| ISFILTERED(Customer[Primary Contact])
|| ISFILTERED(Customer[Postal Code])
|| ISFILTERED('Stock Item')
|| ISFILTERED(Employee)
|| ISFILTERED(City)
),
SUM(Targets[Target Excluding Tax])
)

Результат вычисления этой меры показан в новом столбце на рис. 2.16.

Рис. 2.16. Вывод мер Total Target в таблице


130    Глава 2. Моделирование данных

И хотя такой подход часто будет рабочим, он обладает и своими недо-


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

Total Target (rows) =


VAR DateRows = COUNTROWS('Date')
VAR DateRowsAtMonthLevel =
CALCULATE(
COUNTROWS('Date'),
REMOVEFILTERS('Date'),
VALUES('Date'[End of Month])
)
VAR CustomerRows = COUNTROWS(Customer)
VAR CustomerRowsAtBuyingGroupLevel =
CALCULATE(
COUNTROWS(Customer),
REMOVEFILTERS(Customer),
VALUES(Customer[Buying Group])
)
VAR UnsupportedFilters =
(DateRows <> DateRowsAtMonthLevel)
|| (CustomerRows <> CustomerRowsAtBuyingGroupLevel)
|| ISFILTERED('Stock Item')
|| ISFILTERED(Employee)
|| ISFILTERED(City)
VAR Result =
IF(
NOT(UnsupportedFilters),
SUM(Targets[Target Excluding Tax])
)
RETURN
Result

Вам по-прежнему может понадобиться проверка фильтрации неподдер-


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Все созданные меры вы можете увидеть в файле 2.1.10 Define the
appropriate level of data granularity.pbix из папки с сопроводительными
файлами.
Установка направления кросс-фильтрации и применение фильтра безопасности    131

Рис. 2.17. Альтернативная мера

ПРИМЕЧАНИЕ. Сопроводительные файлы


Подробно о создании мер мы будем говорить при обсуждении на-
выка 2.3.

Навык 2.2. Разработка модели данных


Навык разработки модели данных включает в себя действия, производи-
мые с моделью после загрузки данных из источников и создания связей
между таблицами. В данном разделе мы поговорим об умениях, необхо-
димых для создания вычисляемых таблиц и столбцов, а также иерархий.
Кроме того, будет показано, как настраивать безопасность на уровне строк
для отчетов и работать с инструментом Вопросы и ответы (Q&A).

Основные составляющие навыка:


■■ установка направления кросс-фильтрации и применение филь-
тра безопасности;
■■ создание вычисляемых таблиц;
■■ создание иерархий;
■■ создание вычисляемых столбцов;
■■ применение ролей безопасности на уровне строк;
■■ настройка инструмента Вопросы и ответы (Q&A)..

Установка направления кросс-фильтрации


и применение фильтра безопасности
При редактировании связей между таблицами, даже если вы установите
двунаправленную кросс-фильтрацию, по умолчанию фильтры безопасности
(security filters) будут применяться только в одном направлении. Ранее мы
уже упоминали, что вы можете контролировать этот аспект при помощи на-
стройки Применить фильтр безопасности в обоих направлениях (Apply
security filter in both directions). Это означает, что фильтрация роли, приме-
132    Глава 2. Моделирование данных

ненная к таблице, будет также распространяться на фильтруемую таблицу.


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

ПРИМЕЧАНИЕ. Фильтры безопасности


Применение фильтров безопасности относится к безопасности на
уровне строк (row-level security – RLS) – механизму в Power BI, по-
зволяющему ограничивать доступ к данным на основании набора
фильтров. Подробнее об этом мы поговорим далее в этой главе.

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


Ранее в этой главе мы обсуждали один из способов создания календаря в
модели данных при помощи вычисляемой таблицы. Вычисляемые таблицы
(calculated tables) определяются при помощи языка DAX и основываются на
данных, уже загруженных в модель или генерируемых при помощи выра-
жений DAX. В редакторе Power Query вычисляемых таблиц нет.
Вычисляемые таблицы бывают особенно полезны, когда вы:
■■ клонируете таблицы;
■■ создаете таблицы на основе данных из разных источников;
■■ используете предварительно рассчитанные меры для повышения
эффективности отчетов.
Это далеко не полный список, и применение вычисляемых таблиц им не
ограничивается.

Клонирование таблиц
Ранее мы уже показывали, что для того, чтобы создать полную копию та-
блицы в DAX, необходимо сослаться на оригинальную таблицу по ее имени.
Если вы хотите создать таблицу Invoice Date, которая будет клоном таблицы
Date, выполните следующие действия.
1. Перейдите на вкладку Данные (Data) в левой части окна.
2. На вкладке Главная (Home) нажмите на кнопку Создать таблицу
(New table).
3. Введите выражение для создания вычисляемой таблицы. К примеру,
следующее выражение позволит создать таблицу Invoice Date путем
копирования таблицы Date:

Invoice Date = 'Date'

4. Нажмите на кнопку Enter.


Создание вычисляемых таблиц    133

Создание таблицы на основе данных из разных


источников
В предыдущем разделе мы уже создавали таблицу-мост при помощи
Power Query. Мы брали неповторяющиеся значения из столбца одной таб­
лицы и использовали таблицу-мост для создания связи между двумя таб­
лицами фактов.
Иногда бывает необходимо объединить неповторяющиеся значения
более чем из одной таблицы, поскольку они могут дополнять друг друга.
В этом случае вы должны извлечь данные из всех таблиц, а если они рас-
полагаются в разных источниках или на разных «островах», может постра-
дать производительность. На помощь в этой ситуации может прийти вы-
числяемая таблица.
Давайте посмотрим, как можно извлечь неповторяющиеся значения
поля Buying Group из таблиц Customer и Targets при помощи следующей
формулы создания вычисляемой таблицы:

Buying Group =
DISTINCT(
UNION(
DISTINCT(Customer[Buying Group]),
DISTINCT(Targets[Buying Group])
)
)

Внешняя функция DISTINCT необходима для того, чтобы в итоговом на-


боре пользовательских групп не было дубликатов, а функция UNION объе-
диняет значения из таблиц, находящихся в разных источниках. В данном
случае функция UNION действует похоже на операцию добавления данных
в Power Query, но объединение таблиц происходит по-разному:

■■ функция UNION игнорирует названия столбцов и объединяет колон-


ки в таблицах на основании их позиций. При этом количество столб-
цов в таблицах должно совпадать;
■■ операция добавления данных в Power Query основывается именно
на названиях столбцов и может быть успешно применена в случае
разного количества столбцов в исходных таблицах.
В дополнение к функции UNION в языке DAX присутствуют и другие
функции для работы с наборами данных, такие как EXCEPT и INTERSECT,
которые также требуют, чтобы в таблицах было одинаковое количество ко-
лонок.
Поскольку в случае с использованием DAX данные уже располагаются в
памяти, этот процесс обычно протекает намного быстрее по сравнению с
применением инструмента Power Query.
134    Глава 2. Моделирование данных

Предварительный расчет мер для повышения


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Вы можете увидеть созданные вычисляемые таблицы в файле 2.2.2
Create calculated tables.pbix из папки с сопроводительными файлами.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Использование вычисляемых


таблиц
Больше примеров по созданию вычисляемых таблиц можно увидеть
в разделе «Создание вычисляемых таблиц в Power BI Desktop» по
адресу https://docs.microsoft.com/ru-ru/power-bi/transform-model/desktop-
calculated-tables.

Создание иерархий
Power BI позволяет объединять столбцы в иерархии, которые впоследствии
можно использовать в визуальных элементах.
Давайте на примере модели данных Wide World Importers создадим ие-
рархию сотрудников.
1. Перейдите на вкладку Модель (Model).
2. Щелкните правой кнопкой мыши по столбцу Director таблицы
Employee.
3. Выберите пункт Создать иерархию (Create hierarchy).
4. Дважды щелкните по созданной иерархии и переименуйте ее в
Employee Hierarchy.
5. На панели Поля (Fields) перетащите столбец Manager на иерархию
Employee Hierarchy.
6. Повторите предыдущий шаг со столбцом Salesperson.
Создание вычисляемых столбцов    135

После создания иерархии она должна выглядеть так, как показано на


рис. 2.18.

Рис. 2.18. Иерархия Employee Hierarchy

Один столбец может входить сразу в несколько иерархий, и вы имеете


право переименовывать элементы иерархий без затрагивания исходных
столбцов. В то же время вам нет необходимости сортировать элементы ие-
рархии по другим столбцам, поскольку это свойство наследуется элемента-
ми от исходных столбцов, которые могут быть скрыты, если это необходимо.
Иерархия может быть создана только на основании существующих
столбцов, которые должны располагаться в той же таблице. Если вы хоти-
те объединить колонки из разных таблиц в одной иерархии, вам придется
сначала перенести их в одну таблицу. Для этого можно использовать Power
Query или функцию RELATED языка DAX.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Функция RELATED в DAX


За подробной информацией о функции RELATED, включая приме-
ры и требования к ее использованию, можно обратиться к разделу
«RELATED» по адресу https://docs.microsoft.com/ru-ru/dax/related-function-
dax.

Помимо удобства при переносе нескольких полей в визуальный элемент


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Иерархию Employee Hierarchy вы можете увидеть в файле 2.2.3 Create
hierarchies.pbix из папки с сопроводительными файлами.

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


Вычисляемые столбцы (calculated columns) представляют собой столбцы в
модели данных, созданные при помощи языка DAX. Так же как и вычис-
136    Глава 2. Моделирование данных

ляемые таблицы, вычисляемые столбцы могут создаваться на основании


данных, существующих в модели или генерируемых при помощи DAX. В
редакторе Power Query вы их также не встретите, поскольку эти столбцы
создаются после загрузки данных в модель. Вычисляемые столбцы расши-
ряют существующие таблицы и вычисляются на этапе загрузки данных в
модель, так что присутствие в модели большого количества вычисляемых
столбцов может негативно сказаться на ее производительности.
Если у вас есть опыт работы в Excel, создание вычисляемых столбцов в
DAX может вам напомнить создание колонок в Excel. Сам язык запросов
DAX отдаленно напоминает язык формул Excel, и многие функции в этих
языках называются одинаково. Но есть между ними и существенные отли-
чия, в том числе следующие:

■■ в DAX не используется концепция ячеек. Если вам необходимо полу-


чить конкретное значение из таблицы, вам придется отфильтровать
содержащий его столбец до одного значения;
■■ язык DAX является строго типизированным в отношении того, что
вы не можете соединять в одном столбце значения разных типов.
В нашем примере с иерархией из директора, менеджеров и продавцов
мы создавали вычисляемые столбцы, когда выравнивали иерархию типа
родитель–потомок. Обычно вычисляемые столбцы оправдывают себя,
если вы:

■■ создаете столбцы, которые будут использоваться в качестве фильт­


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

1. Перейдите на вкладку Данные (Data).


2. На панели Поля (Fields) щелкните правой кнопкой мыши там, где
хотите создать вычисляемый столбец.
3. Выберите пункт Создать столбец (New column).
4. Введите в строке формул выражение на DAX для создания столбца.
5. Нажмите на клавишу Enter.
После этого столбец сразу появится и заполнится вычисленными зна-
чениями. Формула, которую вы написали на четвертом шаге, будет авто­
матически выполнена для каждой строки в новом столбце. На другие
столбцы из этой же таблицы вы можете ссылаться в формуле следующим
образом:

'Table name'[Column name]


Создание вычисляемых столбцов    137

Хотя на столбцы из этой же таблицы можно ссылаться и по одному име-


ни, без указания названия таблицы, такая практика считается не лучшей,
и желательно ее не использовать.
Например, в нашей модели данных Wide World Importers вы можете рас-
считать суммарные издержки в вычисляемом столбце таблицы Sale следую­
щим образом:

Total Cost = Sale[Total Excluding Tax] - Sale[Profit]

Если вам необходимо сослаться на поле в связанной таблице, распола-


гающейся в связи на стороне «один», вы можете использовать функцию
RELATED. В нашей модели данных Wide World Importers можно добавить
вычисляемый столбец в таблицу Sale для расчета разницы между норма-
тивной ценой за единицу товара и ценой, по которой товар был продан:

Unit Price Difference = RELATED(‘Stock Item’[Unit Price]) - Sale[Unit Price]

ПРИМЕЧАНИЕ. Функция RELATED и неактивные связи


По умолчанию функция RELATED использует для обращения к столбцу
активную связь. И хотя существует способ заставить эту функцию из-
влекать значения посредством неактивной связи, лучше с этой целью
будет воспользоваться функцией LOOKUPVALUE. За подробной инфор-
мацией по этой функции можно обратиться к разделу «LOOKUPVALUE»
по адресу https://docs.microsoft.com/ru-ru/dax/lookupvalue-function-dax.

Функция RELATED работает в связи на стороне «многие». Если вы хотите


создать вычисляемый столбец на стороне связи «один» и при этом ссы-
латься на строки из связанной таблицы, можете воспользоваться функцией
RELATEDTABLE. Например, вы можете добавить столбец в таблицу Customer
для количества связанных строк с текущим покупателем в таблице Sale:

Sales Rows = COUNTROWS(RELATEDTABLE(Sale))

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Созданные вычисляемые столбцы вы можете увидеть в файле 2.2.4
Create calculated columns.pbix из папки с сопроводительными файлами.
138    Глава 2. Моделирование данных

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Создание вычисляемых столбцов


За подробной информацией с примерами о создании вычисляемых
столбцов можно обратиться к разделу «Учебник. Создание вычисляе-
мых столбцов в Power BI Desktop» по адресу https://docs.microsoft.com/
ru-ru/power-bi/transform-model/desktop-tutorial-create-calculated-columns.

Применение ролей безопасности на уровне


строк
Весьма распространенным требованием компаний к системе бизнес-
аналитики является обеспечение безопасности данных, включая доступ
пользователям к разным наборам данных при формировании одних и тех
же отчетов. В Power BI это достигается при помощи механизма, получившего
название «безопасность на уровне строк».
Безопасность на уровне строк (row-level security – RLS) реализует огра-
ничение доступа к данным путем фильтрации строк в зависимости от пра-
вил, настроенных для конкретного пользователя. Для настройки безопас-
ности необходимо сначала создать роли (role) в Power BI Desktop, после чего
назначить их отдельным пользователям или группам безопасности Active
Directory (Active Directory security groups) в службе Power BI.

ПРИМЕЧАНИЕ. Безопасность на уровне строк и Live Connection


Определение ролей в Power BI работает только для импортирован-
ных данных и режима хранения DirectQuery. Когда вы подключаетесь
к набору данных Power BI или модели данных Analysis Services в ре-
жиме Live Connection, Power BI будет полагаться на безопасность на
уровне строк, настроенную в источнике, и вы не сможете отменить ее
при помощи создания ролей в Power BI Desktop.

В данном разделе мы поговорим о навыках, необходимых для примене-


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

Создание ролей в Power BI Desktop


Для просмотра ролей, настроенных для набора данных в Power BI
Desktop, перейдите на вкладку Отчет (Report) в левой части окна и на верх-
ней вкладке Моделирование (Modeling) нажмите на кнопку Управление
ролями (Manage roles). Чтобы создать новую роль, нажмите на кнопку Со-
здать (Create) в разделе Роли (Roles). После этого вам необходимо выбрать
табличные фильтры, как показано на рис. 2.19.
Применение ролей безопасности на уровне строк    139

Рис. 2.19. Список ролей


При создании новой роли вы можете изменить имя роли по умолчанию
по своему желанию. Очень важно давать ролям осмысленные имена, по-
скольку вы будете видеть их в службе Power BI, и это поможет вам легче
ориентироваться в созданных вами ролях. Все роли отображаются в секции
Роли (Roles) диалогового окна Управление ролями (Manage roles).
Если щелкнуть правой кнопкой мыши по роли или нажать на кнопку с
тремя точками справа от нее, появится контекстное меню со следующими
опциями:
■■ Создать (Create): этот пункт меню, дублирующий уже упомянутую
нами одноименную кнопку, позволяет создать новую роль;
■■ Создать дубликат (Duplicate): новая роль будет создана на базе вы-
бранной вами в данный момент;
■■ Переименовать (Rename): используйте этот пункт для задания
нового имени выбранной роли. Также переименовать роль можно,
дважды щелкнув по ней мышью;
■■ Удалить (Delete): этот пункт меню служит для удаления выбранной
роли. Альтернативой ему является кнопка Удалить (Delete), распо-
ложенная под списком ролей.
Для каждой роли вы можете определить свое выражение на языке за-
просов DAX для фильтра таблиц. После настройки безопасности на уровне
строк эти выражения будут вычисляться для каждой строки соответствую-
щей таблицы, и только те строки, для которых результирующим значением
выражения окажется true, будут видимы пользователю.
Вы можете ввести табличное выражение DAX самостоятельно или вос-
пользоваться кнопкой с тремя точками справа от нужной таблицы, чтобы
140    Глава 2. Моделирование данных

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

■■ Добавить фильтр (Add filter): после выбора этого пункта вам будет
показано контекстное меню со всеми столбцами в таблице, а также
вариант скрытия всех строк;
■■ Копировать фильтр таблиц из (Copy table filter from): с помощью
этого пункта вы можете скопировать фильтрующее выражение на
DAX из другой роли, в которой уже определено выражение для таб­
лицы;
■■ Очистить фильтр таблиц (Clear table filter): этот пункт поможет
вам удалить выражение из таблицы. Можно также очистить поле
Выражение DAX фильтра таблицы (Table filter DAX expression)
вручную.
Давайте для примера в нашей модели данных Wide World Importers на-
жмем на кнопку с тремя точками справа от таблицы City и в выпадающем
меню Добавить фильтр (Add filter) выберем поле [Sales Territory]. После это-
го в поле Выражение DAX фильтра таблицы (Table filter DAX expression),
расположенном справа, появится следующее выражение:

[Sales Territory] = "Значение"

Выражение, создаваемое автоматически, будет зависеть от типа данных


поля, и это поможет вам написать корректный фильтр таблицы.
После изменения выражения вы можете проверить его синтаксис, нажав
на кнопку с галочкой, при наведении на которую появляется всплывающая
подсказка Проверьте выражение DAX (Verify DAX expression). Если вы-
ражение написано некорректно, вы увидите предупреждение под полем
ввода формулы. Справа от кнопки проверки синтаксиса есть кнопка с кре-
стиком и подсказкой Отмена изменений (Revert changes) для отката всех
модификаций выражения, которые не были применены.
Если вам необходимо скрыть все строки в таблице, щелкните правой
кнопкой по таблице и в выпадающем меню Добавить фильтр (Add filter)
выберите пункт Скрыть все строки (Hide all rows). Это приведет к написа-
нию следующего простого выражения в поле с выражением DAX:

false

Поскольку выражение false не сможет дать true ни для одной строки в та-
блице, все строки окажутся скрытыми. Давайте настроим безопасность на
уровне строк в модели данных Wide World Importers. Для начала создадим
две роли, как показано ниже.
1. Создайте роль и назовите ее Southeast.
Применение ролей безопасности на уровне строк    141

2. Для созданной роли в таблице City напишите следующее выражение


DAX:
[Sales Territory] = "Southeast"

3. Нажмите на кнопку Проверьте выражение DAX (Verify DAX


expression) над полем Выражение DAX фильтра таблицы (Table
filter DAX expression).
4. Щелкните правой кнопкой мыши по созданной роли и выберите
пункт Создать дубликат (Duplicate).
5. Назовите новую роль Plains.
6. Для роли Plains обновите выражение DAX следующим образом:
[Sales Territory] = "Plains"

7. Нажмите на кнопку Сохранить (Save).

ВАЖНО. Дублирование ролей


Если дубликат роли создать до проверки последнего добавленного
фильтра таблицы, он не будет скопирован в новую роль.

Теперь давайте проверим наши роли в Power BI Desktop.

Выбор роли в Power BI Desktop


В Power BI Desktop вы имеете возможность проверить, что и как будут
видеть роли еще до публикации отчетов в службе Power BI и назначения их
пользователям. Для этого при условии, что у вас создана хотя бы одна роль,
нажмите на вкладке Моделирование (Modeling) на кнопку Просмотреть
как (View as). Откроется диалоговое окно Просмотреть как роли (View as
roles), показанное на рис. 2.20.
Вы можете просмотривать модель данных одновременно под несколь-
кими ролями. Это сделано по причине того, что в службе Power BI вы може-
те присвоить пользователю или группе безопасности не одну, а сразу не-
сколько ролей. В этом случае права доступа разных ролей будут дополнять
друг друга. К примеру, если вы отметите флажки Plains и Southeast, вы
сможете видеть данные по этим двум территориям. Именно поэтому мы
говорили о том, что ролям необходимо давать осмысленные имена.

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


Вы должны понимать, как работает процедура назначения несколь-
ких ролей одному пользователю, основываясь на описании фильтров
таблиц для каждой из ролей.
142    Глава 2. Моделирование данных

Рис. 2.20. Проверка ролей

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

Рис. 2.21. Напоминание о просмотре модели данных под ролью

ВАЖНО. Применение безопасности на уровне строк


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

Еще одним вариантом выбора роли вам будет предоставлен Другой


пользователь (Other user). Эта опция позволит протестировать динамиче-
скую безопасность на уровне строк, о которой мы поговорим далее.

Динамическая безопасность на уровне строк


Роли, которые мы создавали до этого момента, были статическими, а это
означает, что все пользователи с одной и той же ролью видят модель дан-
ных одинаково. Но если у вас есть множество правил по защите данных,
вам придется создавать большое количество ролей, да еще и обновлять мо-
дель данных каждый раз, когда создается новая роль или удаляется одна из
существующих.
Применение ролей безопасности на уровне строк    143

На этот случай есть другая концепция под названием динамическая без-


опасность на уровне строк (dynamic row-level security), позволяющая пока-
зывать разные данные пользователям в рамках одной роли.

НА ПРАКТИКЕ. Динамическая безопасность на уровне строк


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

Для реализации этого метода ваша модель данных должна содержать


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

■■ USERNAME: эта функция возвращает домен и логин в формате до-


мен/логин;
■■ USERPRINCIPALNAME: в зависимости от настроек Active Directory эта
функция обычно возвращает адрес электронной почты пользовате-
ля.

ПРИМЕЧАНИЕ. Использование функций USERNAME


и USERPRINCIPALNAME
Если ваш компьютер не является частью домена Active Directory, обе
функции будут возвращать один и тот же результат – домен/логин.
После публикации вашего набора данных в службе Power BI обе
функции будут возвращать адрес электронной почты пользователя.
Эти функции могут быть использованы только в мерах или выраже-
ниях DAX фильтров таблиц. Попытка использовать их в вычисляемых
столбцах или вычисляемых таблицах приведет к возникновению
ошибки.

Чтобы увидеть, как работает механизм динамической безопасности на


уровне строк на практике, давайте создадим в модели Wide World Importers
новую роль.

1. Перейдите на вкладку Отчет (Report) в левой части окна и на верх-


ней вкладке Моделирование (Modeling) нажмите на кнопку Управ-
ление ролями (Manage roles).
2. Создайте новую роль и назовите ее Dynamic RLS.
144    Глава 2. Моделирование данных

3. Напишите для роли Dynamic RLS следующее выражение фильтра


DAX для таблицы Employee:
[Email] = USERPRINCIPALNAME()

4. Нажмите на кнопку Сохранить (Save).


5. Теперь вы можете протестировать новую роль.
6. Нажмите на вкладке Моделирование (Modeling) на кнопку Просмот­
реть как (View as).
7. Установите одновременно два флажка: Другой пользователь (Other
user) и Dynamic RLS.
8. Введите адрес jack.potter@wideworldimporters.com в поле Другой
пользователь (Other user).
9. Нажмите на кнопку OK.
10. Перейдите на вкладку Данные (Data).
11. Откройте таблицу Employee.
Обратите внимание, что таблица Employee отфильтрована по значению
Jack Potter, что видно на рис. 2.22.

Рис. 2.22. Таблица Employee отфильтрована по сотруднику Jack Potter

Такой подход может сгодиться в определенных ситуациях, но, как пра-


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

PATHCONTAINS(
[Employee Path],
LOOKUPVALUE(
Employee[Employee Key],
Employee[Email],
USERPRINCIPALNAME()
)
)

В результате будут сохранены строки, в которых Джек является частью


строки иерархии. Мы воспользовались тем вычисляемым столбцом, кото-
рый создали ранее, когда выравнивали иерархию сотрудников.
После этого изменения таблица Employee будет включать четыре строки:
с Джеком и тремя продавцами, находящимися у него в подчинении, как
показано на рис. 2.23.
Настройка инструмента Вопросы и ответы (Q&A)     145

Рис. 2.23. Таблица Employee отфильтрована по сотруднику Jack Potter


и его продавцам

Итак, вы научились создавать роли безопасности в Power BI Desktop. По-


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Созданные роли вы можете увидеть в файле 2.2.5 Implement row-level
security roles.pbix из папки с сопроводительными файлами.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Безопасность на уровне строк


За подробной информацией о механизме безопасности на уровне
строк в Power BI можно обратиться к разделу «Руководство по обе-
спечению безопасности на уровне строк (RLS) в Power BI Desktop» по
адресу https://docs.microsoft.com/ru-ru/power-bi/guidance/rls-guidance.

Настройка инструмента
Вопросы и ответы (Q&A)
И Power BI Desktop, и служба Power BI позволяют создавать визуализации,
дающие ответы на вопросы. Такая возможность позволяет обеспечить пол-
ный контроль над форматированием элементов, но все это не сработает,
если у вас настроен механизм безопасности на уровне строк и у пользова-
телей есть права только на чтение.
Еще одной возможностью исследовать данные в Power BI является ис-
пользование инструмента Вопросы и ответы (Q&A), также известного как
запросы на естественном языке (natural language queries). Этот инструмент
позволяет получать ответы на вопросы, которые вы задаете обычным язы-
ком, и даже пользователи с доступом к данным только на чтение смогут им
воспользоваться.
Чтобы создать элемент визуализации Вопросы и ответы (Q&A) в Power
BI Desktop, переключитесь на вкладку Отчет (Report) в левой части окна и
дважды щелкните мышкой по свободному месту на рабочей области. Также
вы можете вставить этот элемент, выбрав его на вкладке Вставка (Insert).
В результате в рабочую область будет добавлен визуальный элемент, пока-
занный на рис. 2.24.
146    Глава 2. Моделирование данных

Рис. 2.24. Визуальный элемент Вопросы и ответы

И хотя не на все ваши вопросы модель данных сумеет ответить адекватно,


попытаться стоит. Например, вы можете написать следующий запрос на
естественном языке: profit by sales territory as column chart – и получите ре-
зультат, показанный на рис. 2.25.
Обратите внимание, что визуальный элемент Вопросы и ответы обнов-
ляет вывод по мере ввода вопроса, и пока вы не ввели окончание as column
chart, диаграмма выводилась в виде горизонтальных столбиков, а не вер-
тикальных.

Рис. 2.25. Прибыль по территориям продажи


Настройка инструмента Вопросы и ответы (Q&A)     147

Если хотите, можете преобразовать элемент Вопросы и ответы в стан-


дартный элемент визуализации, нажав на кнопку, расположенную между
полем вопроса и кнопкой с шестеренкой в верхнем правом углу диаграм-
мы.
Визуальный элемент Вопросы и ответы напрямую зависит от имен по-
лей в том виде, как они определены в модели данных. Например, запрос
revenue by sales territory не выдаст вам никакого значимого результата, что
видно по рис. 2.26.

Рис. 2.26. Ответ на вопрос revenue by sales territory

Эта проблема может быть решена путем обучения элемента визуализа-


ции, о чем мы поговорим далее.

Обучение визуального элемента Вопросы и ответы


Наш визуальный элемент не понял в запросе слово revenue, поскольку
оно нигде не упоминается в модели данных Wide World Importers. В резуль-
тате это слово оказалось подчеркнуто красным. Если выбрать слово revenue
в поле вопроса, вам будут предложены варианты для его замены (в нашем
случае это profit). Кроме того, вы можете определить термин revenue само-
стоятельно, нажав на соответствующую ссылку, как показано на рис. 2.27.
В разделе Дайте определения терминов, не распознанных модулем
Вопросы и ответы (Define the terms Q&A didn’t understand) вы можете
указать, что слово revenue относится к одному из полей – например к полю
Total Including Tax.
1. Введите Тotal including tax в поле справа от Revenue refers to.
2. Нажмите на кнопку Сохранить (Save).
3. Закройте окно Настроить Вопросы и ответы (Q&A setup).
148    Глава 2. Моделирование данных

Рис. 2.27. Обучение визуального элемента Вопросы и ответы

Теперь ваш элемент будет успешно распознавать ранее неизвестное ему


слово revenue, как видно на рис. 2.28.

Рис. 2.28. Прибыль по территориям продаж

Поскольку обучение инструмента Вопросы и ответы может занимать


немало времени, вы можете ограничиться созданием синонимов в вашей
модели данных, если они известны заранее. При создании синонимов вы
лишний раз поймете, как важно подбирать столбцам в редакторе Power
Query осмысленные имена.
Настройка инструмента Вопросы и ответы (Q&A)     149

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

1. Находясь на вкладке Отчет (Report) в левой части окна, нажмите на


кнопку Настроить Вопросы и ответы (Q&A setup), расположенную
на верхней вкладке Моделирование (Modeling).
2. Выберите слева раздел Синонимы для полей (Field synonyms).
3. Раскройте секцию Sale. Вы увидите список полей из таблицы Sale,
как показано на рис. 2.29.

Рис. 2.29. Синонимы для полей из таблицы Sale

4. Справа от поля Quantity нажмите на кнопку Добавить (Add).


5. Введите слово units и нажмите на клавишу Enter. Обратите внима-
ние, что Power BI сам изменил множественное число в слове units на
unit, поскольку он хранит синонимы в единственном числе и воспри-
нимает их так же, как во множественном, при работе с инструмен-
том Вопросы и ответы.
6. Закройте диалоговое окно Настроить Вопросы и ответы (Q&A
setup).

Если теперь вы введете в поле вопроса фразу units by color, вы увидите столб-
чатую диаграмму с отображением количества проданных товаров по цветам,
несмотря на то что наименование поля Quantity вы явно не упоминали.
150    Глава 2. Моделирование данных

Также в разделе Синонимы для полей (Field synonyms) вы имеете воз-


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Созданные синонимы для полей вы можете увидеть в файле 2.2.6 Set
up the Q&A feature.pbix из папки с сопроводительными файлами.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Оптимальное использование


инструмента Вопросы и ответы
При правильном обращении инструмент Вопросы и ответы может
продемонстрировать всю заложенную в нем мощь. За дополнитель-
ными сведениями по работе с этим элементом визуализации можно
обратиться к разделу «Рекомендации по оптимизации функции “Во-
просы и ответы” в Power BI» по адресу https://docs.microsoft.com/ru-ru/
power-bi/natural-language/q-and-a-best-practices.

Навык 2.3. Создание мер


с использованием языка DAX
Вы уже использовали язык запросов DAX ранее в этой главе для создания
быстрых мер, вычисляемых таблиц и столбцов, а также для настройки
безопас­ности на уровне строк. На практике DAX чаще всего применяется
для создания мер в Power BI.
Умение писать свои собственные формулы для мер является очень важ-
ным навыком, открывающим дорогу к углубленному анализу данных, не-
доступному без использования языка DAX.
В данном разделе мы познакомимся с основами DAX, после чего перей­
дем к детальному рассмотрению функции CALCULATE – одной из важней-
ших функций языка, с которой мы поработаем в том числе и в аспекте ло-
гики операций со временем.
Хорошее владение языком DAX позволит вам заменить некоторые столб-
цы в своих таблицах на меры и тем самым уменьшить размер модели дан-
ных. Но не думайте, что все формулы DAX будут сложными – в этом разделе
мы рассмотрим и некоторые базовые статистические функции, применять
которые достаточно просто.
Использование языка DAX для написания сложных мер    151

Основные составляющие навыка:


■■ использование языка DAX для написания сложных мер;
■■ использование функции CALCULATE для манипулирования
фильтрами;
■■ логика операций со временем с применением DAX;
■■ замена числовых столбцов на меры;
■■ использование базовых статистических функций для обогаще-
ния данных;
■■ создание полуаддитивных мер.

Использование языка DAX для написания


сложных мер
Многие расчеты могут быть произведены при помощи вычисляемых столб-
цов, но в подавляющем большинстве случаев вместо них лучше создавать
меры, не увеличивающие размер модели данных. Кроме того, некоторые
расчеты просто невозможно провести в рамках вычисляемого столбца. На-
пример, для динамического расчета соотношений вам необходимо будет
применять меры.
Как вы видели ранее, быстрые меры можно создавать и без помощи DAX.
Но в данной главе мы поговорим о создании более сложных мер, в которых
без ручного труда не обойтись.
Очень важно понимать, что Power BI позволяет агрегировать столбцы
в визуальных элементах и без использования мер. Такая практика часто
именуется созданием неявных мер (implicit measures). Неявные меры мо-
гут оказаться полезными, когда вы хотите посмотреть, как будет выглядеть
визуализация, или произвести быстрый анализ в столбце. В то же время
всегда лучше будет создать явную меру при помощи языка DAX – даже если
вам необходимо выполнить простое вычисление вроде подсчета суммы.
Ниже мы приведем несколько причин, почему предпочтительным вариан-
том почти всегда будет создание полноценной меры:
■■ неявные меры могут выдавать неожиданные результаты из-за свой-
ства суммирования по столбцам. Например, если у вас есть столбец
с ценами на товары и Power BI установит для него агрегацию сумми-
рования, при переносе колонки на визуальный элемент результаты
могут вас удивить. Да, тип агрегации всегда можно изменить, но при
использовании неявных мер вам необходимо все время держать это
в голове;
■■ явные меры могут быть повторно использованы в других мерах. Это
очень существенное преимущество, поскольку позволяет значитель-
но сократить объем кода и улучшить поддержку и сопровождение
модели данных;
152    Глава 2. Моделирование данных

■■ при подключении к набору данных Power BI из Excel вы не сможете


использовать неявные меры;
■■ в неявных мерах нельзя использовать неактивные связи;
■■ неявные меры не поддерживаются в группах вычислений.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Группы вычислений


Хотя темы, посвященные группам вычислений (calculation groups), и
не входят в экзамен DA-100, этот инструмент бывает очень полезен на
практике. Больше информации о нем можно узнать в разделе «Группы
вычисления» по адресу https://docs.microsoft.com/ru-ru/analysis-services/
tabular-models/calculation-groups?view=asallproducts-allversions.

ПРИМЕЧАНИЕ. Изучение DAX


Полное описание языка DAX не входило в наши планы при написании
этой книги. Досконально этот язык запросов разобран в книге «Под-
робное руководство по DAX» от Марко Руссо и Альберто Феррари
(https://dmkpress.com/catalog/computer/data/978-5-97060-859-3/).

Меры существенно отличаются от вычисляемых столбцов. Главное отли-


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

1. Перейдите на вкладку Отчет (Report).


2. На панели Поля (Fields) щелкните правой кнопкой мыши по табли-
це, в которой хотите разместить меру.
3. Выберите пункт Создать меру (New measure).
4. Введите формулу меры и нажмите на клавишу Enter.
Вы также можете нажать на кнопку Создать меру (New measure) на
вкладке Главная (Home) для создания меры, но убедитесь, что на пане-
ли Поля выбрана таблица, в которую вы хотите поместить меру. Если вы
по ошибке создали меру не в той таблице, вы можете переместить ее туда,
Использование языка DAX для написания сложных мер    153

куда нужно, вместо того, чтобы создавать заново. Для этого нужно сделать
следующее.

1. Перейдите на вкладку Отчет (Report).


2. На панели Поля (Fields) выберите меру, которую хотите переместить.
3. На вкладке Средства работы с мерами (Measure tools) в выпадаю-
щем списке Начальная таблица (Home table) выберите таблицу, в
которую хотите переместить меру.

Например, для расчета общей прибыли в модели данных Wide World


Importers можно создать меру со следующей формулой:

Total Profit = SUM(Sale[Profit])

Итог по продажам за вычетом налогов можно посчитать при помощи


показанной ниже меры:

Total Sales Excluding Tax = SUM(Sale[Total Excluding Tax])

Процент чистой прибыли можно вычислить двумя способами. Первый


из них следующий:

Profit % =
DIVIDE(
SUM(Sale[Profit]),
SUM(Sale[Total Excluding Tax])
)

ПРИМЕЧАНИЕ. Использование функции DIVIDE


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

В предыдущей формуле мы повторили уже написанный ранее код, что


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

Profit % =
DIVIDE(
[Total Profit],
[Total Sales Excluding Tax]
)
154    Глава 2. Моделирование данных

ПРИМЕЧАНИЕ. Форматирование мер


Несмотря на наличие в названии меры Profit % символа процента,
Power BI по умолчанию будет форматировать ее в виде десятично-
го числа. Вы можете изменить формат представления меры в группе
Форматирование (Formatting) на вкладке Средства работы с мерами
(Measure tools). Заведите себе привычку настраивать формат меры
сразу после ее создания.

При обращении к мерам в формулах не принято указывать перед их име-


нами название таблицы. В отличие от имен столбцов, имена мер являются
уникальными в рамках модели. Таким образом, в разных таблицах не мо-
гут присутствовать меры с одинаковыми именами.
Еще одним способом избежать повторения ранее написанного кода в
DAX является использование переменных (variables). Вы можете рассмат­
ривать переменную как вычисление внутри меры. Например, если вы не
хотите, чтобы в вашем визуальном элементе отображались нулевые значе-
ния, можете написать следующую меру:

Total Dry Items Units Sold =


IF(
SUM(Sale[Total Dry Items]) <> 0,
SUM(Sale[Total Dry Items])
)

С использованием вспомогательных переменных вам может не потребо-


ваться вызывать функцию SUM дважды:

Total Dry Items Units Sold =


VAR TotalDryItems = SUM(Sale[Total Dry Items])
VAR Result =
IF(
TotalDryItems <> 0,
TotalDryItems
)
RETURN
Result

Переменные особенно полезны, когда вам необходимо сохранить и по-


вторно использовать в вычислении довольно сложные расчеты, поскольку
в этом случае они будут выполнены лишь раз. Как вы увидите далее в этой
главе, при написании формулы можно использовать множество перемен-
ных.
Использование функции CALCULATE для манипулирования фильтрами    155

ПРИМЕЧАНИЕ. Сопроводительные файлы


Перечисленные выше меры вы можете увидеть в файле 2.3.1 Use DAX
to build complex measures.pbix из папки с сопроводительными файла-
ми.

Использование функции CALCULATE


для манипулирования фильтрами
Ранее в этой главе мы показывали, как можно использовать функцию
CALCULATE для использования альтернативной связи при проведении
расчетов: функция USERELATIONSHIP совместно с CALCULATE способ-
на активировать для вычисления неактивную связь, а связка функций
CROSSFILTER и CALCULATE поможет при изменении направления пере-
крестной фильтрации.
Также функция CALCULATE может быть использована для изменения
контекста фильтра (filter context), в котором производится вычисление.
Вы можете добавлять, удалять и изменять фильтры, а также инициировать
преобразование контекста (context transition). Более подробно о контексте
строки, контексте фильтра и преобразовании контекста мы будем говорить
далее в этой главе.
Функция CALCULATE принимает в качестве первого аргумента скаляр-
ное выражение, а все последующие аргументы представляют собой аргу-
менты фильтра (filter arguments). Использование функции CALCULATE без
аргументов фильтра может быть полезно только для выполнения преобра-
зования контекста.

Добавление фильтров
Функция CALCULATE может быть использована для добавления фильтров
несколькими способами. Для расчета эффективности продаж на террито-
рии New England можно написать меру следующего вида, которую можно
прочитать так: «Рассчитай общую прибыль (Total Profit) для территории
(Sales Territory) New England»:

New England Profit =


CALCULATE(
[Total Profit],
City[Sales Territory] = "New England"
)

Важно помнить, что вы не обязаны ограничиваться одним значением в


рамках фильтра. Например, предыдущую меры вы можете переписать для
охвата сразу трех территорий: New England, Far West и Plains:
156    Глава 2. Моделирование данных

New England, Far West, and Plains Profit =


CALCULATE(
[Total Profit],
City[Sales Territory] IN {"New England", "Far West", "Plains"}
)

Кроме того, вы можете одновременно задавать фильтры по нескольким


столбцам при помощи языка DAX. К примеру, вы можете рассчитать при-
быль на территории New England за 2020 год следующим образом:

New England Profit 2020 =


CALCULATE(
[Total Profit],
City[Sales Territory] = "New England",
'Date'[Year] = 2020
)

В переводе на человеческий язык это будет звучать так: «Рассчитай об-


щую прибыль (Total Profit) для территории (Sales Territory) New England за
2020 год (Year)».

Удаление фильтров
В языке DAX есть несколько функций, которые могут быть использованы
в качестве модификаторов (modifier) функции CALCULATE для игнориро-
вания фильтров, и одна из них – функция ALL. Функция ALL может удалять
фильтры из:

■■ одного или нескольких столбцов из одной и той же таблицы;


■■ целой таблицы;
■■ всей модели данных, когда функция ALL используется без парамет­
ров.

ВАЖНО. Сортировка по столбцу и функция ALL


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

Например, вы можете рассчитать прибыль по всем территориям про-


дажи независимо от того, какой фильтр установлен по столбцу City[Sales
Territory]:

Profit All Sales Territories =


CALCULATE(
Использование функции CALCULATE для манипулирования фильтрами    157

[Total Profit],
ALL(City[Sales Territory])
)

Если вывести новую меру вместе с мерой Total Profit в таблице по Sales
Territory, вы получите результат, показанный на рис. 2.30.

Рис. 2.30. Меры Total Profit и Profit All Sales Territories по столбцу Sales Territory

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

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Функции фильтров в DAX


В дополнение к функции ALL в языке DAX есть еще несколько функ-
ций для удаления фильтров, таких как ALLEXCEPT и ALLSELECTED.
Подробное описание подобных функций выходит за рамки данной
книги, и ознакомиться с ним можно в разделе «Функции фильтров» по
адресу https://docs.microsoft.com/ru-ru/dax/filter-functions-dax.

Изменение фильтров
Указывая в функции CALCULATED аргумент фильтра вида City[Sales
Territory] = "New England", вы, по сути, используете сокращенную версию
следующей записи:

FILTER(
ALL(City[Sales Territory]),
City[Sales Territory] = "New England"
)

Таким образом, добавляя этот фильтр, вы сначала удаляете фильтр по


столбцу, используя функцию ALL, а затем добавляете новый фильтр по
определенному значению. Это позволит вам отфильтровать столбец по
158    Глава 2. Моделирование данных

значению New England вне зависимости от того, какой фильтр на этот стол-
бец был установлен ранее.
Если вывести меру New England Profit вместе с мерой Total Profit в таблице
по Sales Territory, вы получите результат, показанный на рис. 2.31.

Рис. 2.31. Меры Total Profit и New England Profit по столбцу Sales Territory

В таблице, в которой поле Sales Territory вынесено на строки, каждое зна-


чение меры Total Profit будет отфильтровано по конкретной территории,
а итоговое значение будет показывать суммарную прибыль по всем регио­
нам. В то же время мера New England Profit показывает прибыль только по
одной фиксированной территории New England вне зависимости от теку-
щего региона в строках.

Преобразование контекста
Еще одним важным предназначением функции CALCULATE является
выполнение преобразования контекста (context transition), т. е. перехода
от контекста строки к контексту фильтра.
В DAX существует два контекста вычисления (evaluation contexts):
■■ контекст строки (row context): этот контекст можно представить
как текущую строку. Контекст строки присутствует в вычисляемых
столбцах и итерационных функциях. Итерационной функцией или
итератором (iterator) называется функция, берущая таблицу и про-
ходящая по ней построчно, выполняя вычисление для каждой оче-
редной строки. Например, функция FILTER представляет собой ите-
ратор –  она проходит по таблице и для каждой строки выполняет
фильтрующее условие. Строки, удовлетворяющие этому условию,
будут включены в результирующий набор;
■■ контекст фильтра (filter context): этот тип фильтра можно предста-
вить как все примененные фильтры. При этом фильтры могут исхо-
дить от срезов, с панели Фильтр (Filter) или из выбранного визуаль-
ного элемента. Фильтры также могут быть применены программно
при помощи языка DAX.
Использование функции CALCULATE для манипулирования фильтрами    159

Для лучшего понимания концепции преобразования контекста давайте


создадим простую таблицу в модели данных.
1. На вкладке Главная (Home) нажмите на кнопку Введите данные
(Enter data).
2. Введите строку Sample в поле Имя (Name).
3. Введите в таблицу данные, показанные на рис. 2.32.
4. Нажмите на кнопку Загрузить (Load).

Рис. 2.32. Вручную введенная таблица

Теперь давайте добавим к созданной таблице два вычисляемых столбца


для демонстрации концепции преобразования контекста.

1. Перейдите на вкладку Данные (Data) в левой части окна.


2. Выберите таблицу Sample на панели Поля (Fields).
3. Создайте вычисляемый столбец со следующей формулой:

Sum Number = SUM('Sample'[Number])

4. Создайте еще один вычисляемый столбец с формулой:


Calculate Sum Number = CALCULATE(SUM('Sample'[Number]))

Результат должен выглядеть так, как показано на рис. 2.33.

Рис. 2.33. Вычисляемые столбцы в таблице Sample

Функция SUM, будучи агрегирующей, использует контекст фильтра.


А поскольку в модели данных контекст фильтра в этот момент пустой – нет
160    Глава 2. Моделирование данных

ни визуальных элементов, ни фильтрующих выражений на языке DAX, –


функция SUM агрегирует весь числовой столбец, в результате чего в столб-
це Sum Number содержится сумма значений (6) во всех строках.
В вычисляемом столбце Calculate Sum Number агрегирующая функция
SUM обернута в функцию CALCULATE. Это немедленно приводит к выпол-
нению преобразования контекста, в результате чего цифры получаются
другие. В процессе преобразования контекста все значения из всех столб-
цов в текущей строке начинают использоваться в качестве фильтра. Таким
образом, в первой строке вы агрегируете столбец Number с учетом следую-
щего множественного фильтра:

■■ Sample[Letter] = A;
■■ Sample[Number] = 1;
■■ Sample[Sum Number] = 6.

Этому фильтру удовлетворяет только одна первая строка в таблице, и


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

1. На вкладке Главная (Home) нажмите на кнопку Преобразование


данных (Transform Data).
2. Выберите запрос Sample.
3. Нажмите на кнопку с шестеренкой справа от примененного шага
Источник (Source).
4. Измените значения в третьей строке так, как показано на рис. 2.34.

Рис. 2.34. Измененная таблица Sample

5. Нажмите на кнопку OK.


6. На вкладке Главная (Home) редактора Power Query нажмите на кноп-
ку Закрыть и применить (Close & Apply).
Логика операций со временем с применением DAX    161

Теперь таблица Sample на вкладке Данные (Data) должна выглядеть так,


как показано на рис. 2.35.

Рис. 2.35. Таблица Sample после обновления

В первой строке результат вычисления столбца Calculate Sum Number со-


хранился, а во второй и третьей появилась цифра 4. Можно было бы пред-
положить, что в каждой строке должна стоять двойка, но нет. Дело в том,
что вследствие выполнения преобразования контекста, инициированного
функцией CALCULATE, агрегирование столбца Number для обеих строк вы-
полняется с учетом следующего фильтра:
■■ Sample[Letter] = B;
■■ Sample[Number] = 2;
■■ Sample[Sum Number] = 5.

Поскольку этому фильтру удовлетворяет сразу две строки в наборе дан-


ных (вторая и третья), в результате мы получаем для каждой из них 2 + 2 = 4.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Перечисленные выше меры вы можете увидеть в файле 2.3.2 Use
CALCULATE to manipulate filters.pbix из папки с сопроводительными
файлами.

Логика операций со временем


с применением DAX
Зачастую нам требуется агрегировать показатели – ту же прибыль – в раз-
резе времени. К примеру, нам может понадобиться рассчитать показатель
дохода на конкретную дату накопительным итогом с начала года или за
аналогичный заданный период в прошлом году. К счастью, в DAX для этих
целей предусмотрено целое семейство функций, называемых функциями
логики операций со временем (Time Intelligence).
Все функции из этого семейства требуют для корректной работы нали-
чия календаря со столбцом с уникальными датами. Если столбец с датами
не является частью связи, таблица должна быть помечена как таблица дат
(date table). Сделать это можно следующим образом.
1. Перейдите на вкладку Отчет (Report) или Данные (Data).
2. Выберите таблицу с датами на панели Поля (Fields).
162    Глава 2. Моделирование данных

3. На вкладке Средства работы с таблицами (Table tools) нажмите на


кнопку Отметить как таблицу дат (Mark as date table).
4. Выберите столбец с датами в выпадающем списке Столбец дат
(Date column).
5. Нажмите на кнопку OK.

ПРИМЕЧАНИЕ. Различные календари


Функции логики операций со временем в DAX поддерживают только
григорианский календарь. Если вы используете другой вид календа-
ря – например, календарь 4-4-5, популярный в рознице, или недель-
ный календарь, – вам придется производить все вычисления самосто-
ятельно. Описание таких типов календарей выходит за рамки данной
книги.

Большинство функций логики операций со временем возвращают та-


блицу, которую можно использовать в качестве аргумента фильтра в функ-
ции CALCULATE. Например, результат функции DATESYTD может быть ис-
пользован для расчета показателя накопительным итогом с начала года,
как показано ниже:

Profit YTD =
CALCULATE(
[Total Profit],
DATESYTD('Date'[Date])
)

Функции логики операций со временем можно комбинировать друг с


другом. К примеру, рассчитать прошлогодний показатель прибыли нако-
пительным итогом с начала года можно так:

Profit PYTD =
CALCULATE(
[Profit YTD],
DATEADD('Date'[Date], -1, YEAR)
)

Некоторые функции логики операций со временем, такие как DATESYTD,


могут быть использованы при работе с финансовыми годами. Допустим,
если ваш финансовый год заканчивается 30 июня, вы можете рассчитать
прибыль накопительным итогом с начала своего финансового года следую­
щим образом:
Логика операций со временем с применением DAX    163

Profit FYTD =
CALCULATE(
[Total Profit],
DATESYTD('Date'[Date], "30–6")
)

Вывод мер Total Profit, Profit YTD, Profit PYTD и Profit FYTD можно видеть
на рис. 2.36.

Рис. 2.36. Вычисление функций логики операций со временем

Обратите внимание, что мера Profit YTD показывает накопительный итог


прибыли с начала года в рамках каждого отдельного года. Мера Profit PYTD
показывает те же значения, что и мера Profit YTD, но за предыдущий год.
Мера Profit FYTD учитывает финансовый год, поэтому обнуление этого по-
казателя происходит каждый год в конце июня.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Созданные меры вы можете увидеть в файле 2.3.3 Implement Time
Intelligence using DAX.pbix из папки с сопроводительными файлами.
164    Глава 2. Моделирование данных

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Логика операций со временем


в DAX
Язык DAX включает в себя более 30 функций логики операций со
временем. Полный обзор всех этих функций выходит за рамки дан-
ной книги, а подробнее почитать про них можно в разделе «Функции
операций со временем» по адресу https://docs.microsoft.com/ru-ru/dax/
time-intelligence-functions-dax.

Замена числовых столбцов на меры


Иногда можно заменить некоторые числовые столбцы в таблице мерами,
что позволяет уменьшить размер модели данных. Давайте посмотрим, как
это можно сделать, на примере нашей модели Wide World Importers.
В столбцах Total Chiller Items и Total Dry Items в таблице Sale хранится
информация о количестве охлажденных и сухих упаковок в составе заказа.
По сути, это поле может быть рассчитано исходя из характеристик товаров.
Перед там как заменить обе колонки на меры, создадим вспомогатель-
ную меру для подсчета общего количества, которой воспользуемся в даль-
нейшем:

Total Quantity = SUM(Sale[Quantity])

Теперь мы можем создать две меры, которые могут заменить указанные


столбцы в таблице Sale:

Total Chiller Items (Measure) =


CALCULATE(
[Total Quantity],
'Stock Item'[Is Chiller Stock] = TRUE
)

Total Dry Items (Measure) =


CALCULATE(
[Total Quantity],
'Stock Item'[Is Chiller Stock] = FALSE
)

Удаление колонок Total Chiller Items и Total Dry Items из модели данных
позволит существенно уменьшить ее размер и повысить эффективность.
Еще один пример столбца, который можно без труда заменить на меру, –
это Total Including Tax из той же таблицы Sale. Поскольку сумма значений в
столбцах Total Excluding Tax и Tax Amount дает нам Total Including Tax, можно
заменить последний следующей мерой:
Использование базовых статистических функций для обогащения данных    165

Total Including Tax (Measure) =


SUMX(
Sale,
Sale[Total Excluding Tax] + Sale[Tax Amount]
)

Теперь вы можете избавиться от столбца Total Including Tax, что позволит


еще больше уменьшить размер модели данных.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Созданные меры вы можете увидеть в файле 2.3.4 Replace numeric
columns with measures.pbix из папки с сопроводительными файлами.

Использование базовых статистических


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

■■ SUM;
■■ AVERAGE;
■■ MEDIAN;
■■ COUNT;
■■ DISTINCTCOUNT;
■■ MIN;
■■ MAX.

Мы уже не раз пользовались функцией SUM в предыдущих примерах. Эта


функция, как и остальные перечисленные здесь, принимает на вход стол-
бец и возвращает скалярное значение. Кроме того, все эти функции, за ис-
ключением DISTINCTCOUNT, имеют эквивалентный итератор с окончани-
ем X – например, соответствующий итератор для функции SUM – это SUMX.
Итераторы или итерационные функции принимают на вход два параме-
тра: таблицу для итераций и выражение, которое должно быть вычислено
для каждой строки в этой таблице. Впоследствии вычисленные значения
агрегируются при помощи базовой функции, лежащей в основе итератора.
К примеру, если речь идет об итераторе SUMX, итоговые значения будут
просуммированы. При изучении различий бывает полезно создавать про-
стые таблицы, как мы делали в предыдущем примере, и сравнивать резуль-
таты работы разных функций.
166    Глава 2. Моделирование данных

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Статистические функции в DAX


В языке DAX присутствует более 60 статистических функций, и под-
робное их описание выходит за рамки данной книги. С детальным
разбором этих функций вы можете ознакомиться в разделе «Ста-
тистические функции» по адресу https://docs.microsoft.com/ru-ru/dax/
statistical-functions-dax.

Создание полуаддитивных мер


Существует три типа мер:

■■ аддитивные (additive): такие меры могут быть агрегированы при


помо­щи функции SUM по любому из измерений. Типичный при-
мер такой меры – прибыль, которая может быть просуммирована по
кате­гориям товаров, городам, датам и всем остальным измерениям.
Суммарная прибыль по всем месяцам в рамках одного года будет
соот­ветствовать годовой прибыли;
■■ полуаддитивные (semi-additive): такие меры могут быть агрегиро-
ваны при помощи функции SUM по некоторым, но не по всем из-
мерениям. Например, складские остатки могут быть просуммиро-
ваны по различных категориям товаров и городам, но не по датам:
если на вчерашний день у вас было на остатке пять единиц товара,
а на сегодняшний – две, это не значит, что складской остаток этого
товара на завтра составит семь единиц. С другой стороны, если на
складе в Сиднее у вас есть пять единиц товаров, а на складе в Мель-
бурне – еще две, вы можете смело говорить о том, что суммарно
по двум городам ваш складской запас по этому товару равен семи
единицам;
■■ неаддитивные (non-additive): эти меры не могут быть агрегированы
при помощи функции SUM ни по одному из измерений. К примеру,
вы не можете суммировать среднюю цену на товары ни по одному
из измерений, поскольку результат такой агрегации не будет иметь
никакого практического смысла. Допустим, если средняя цена на то-
вар в Сиднее составляет 4,50 долл., а в Мельбурне – 3,50 долл., вы не
можете говорить о том, что средняя цена в двух городах составляет
8,00 или даже 4,00 долл., поскольку количество проданных товаров
может отличаться.
В данном разделе мы сосредоточим внимание на полуаддитивных ме-
рах. Есть сразу несколько способов написать полуаддитивную меру, и пра-
вильный из них выбирается на основе бизнес-требований. Скажем, вам
необходимо посчитать складские запасы в модели данных, изображенной
на рис. 2.37.
Создание полуаддитивных мер    167

Рис. 2.37. Модель данных складских запасов

Если у вас есть цифры по остаткам на каждую дату в календаре, вы може-


те написать следующую меру:

Inventory Balance =
CALCULATE(
SUM(Inventory[Balance]),
LASTDATE('Date'[Date])
)

В дополнение к функциям LASTDATE и FIRSTDATE в языке DAX присут-


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

■■ OPENINGBALANCEMONTH;
■■ OPENINGBALANCEQUARTER;
■■ OPENINGBALANCEYEAR;
■■ CLOSINGBALANCEMONTH;
■■ CLOSINGBALANCEQUARTER;
■■ CLOSINGBALANCEYEAR.

Функции, начинающиеся со слова CLOSING, вычисляют значение на по-


следнюю дату указанного периода, а функции, начинающиеся с OPENING,
производят расчет на дату, предшествующую первой дате в периоде. Таким
образом, открывающий баланс на 1 февраля будет таким же, как и закры-
вающий на 31 января.
Например, вы можете вычислить остаток товаров на начало месяца при
помощи следующей формулы:

Inventory Opening Balance Month =


OPENINGBALANCEMONTH(
SUM(Inventory[Balance]),
'Date'[Date]
)

Функции для работы с датами, перечисленные здесь, будут вычислять


правильные результаты только в случае, если информация заполнена на
168    Глава 2. Моделирование данных

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


функцией CLOSINGBALANCEMONTH в условиях, когда данные в вашей таб­
лице заполнены по 23 мая 2020 года, вам вернется пустое значение за май.
Для таких случаев в DAX предусмотрены функции LASTNONBLANKVALUE
и FIRSTNONBLANKVALUE. Пример использования одной из них показан
ниже:

Inventory Last Nonblank =


LASTNONBLANKVALUE(
'Date'[Date],
SUM(Inventory[Balance])
)

Эта мера покажет последний доступный остаток в рамках текущего кон-


текста.
Результат вычисления мер Inventory Balance, Inventory Opening Balance
Month и Inventory Last Nonblank можно увидеть на рис. 2.38.

Рис. 2.38. Меры для расчета остатков товаров

Решение о том, какой вид вычисления использовать в конкретной си-


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Складскую модель данных и созданные меры вы можете увидеть в
файле 2.3.6 Semi-additive.pbix из папки с сопроводительными файла-
ми.
Удаление ненужных строк и столбцов    169

Навык 2.4. Оптимизация


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

Основные составляющие навыка:


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

Удаление ненужных строк и столбцов


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

Удаление ненужных строк


Исключение лишних строк из загрузки производится путем фильтра-
ции на основании на основе дат и других атрибутов. К примеру, вместо
170    Глава 2. Моделирование данных

загрузки всего набора данных в модель Wide World Importers вы могли бы


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

Удаление ненужных столбцов


Столбцы в модели данных обычно служат одной из двух следующих це-
лей: они могут использоваться для поддержки визуальных элементов, вы-
числений или и того, и другого. В связи с этим желательно не загружать в
модель столбцы, не отвечающие этим целям, особенно если в них содер-
жится большое количество неповторяющихся значений.
В некоторых хранилищах данных таблицы фактов содержат первичные
ключи. И хотя их наличие может быть полезным с точки зрения проверки
данных, в моделях Power BI от первичных ключей принято избавляться, по-
скольку они хранят уникальные данные, при том что таблицы фактов мо-
гут быть очень и очень объемными. В результате первичные ключи могут
занимать до половины размера модели данных в памяти без какой-либо
пользы. Для примера, в модели Wide World Importers избавление от столбца
Sale Key в таблице Sale позволило сократить размер файла на 43 %.
При необходимости выполнить подсчет количества строк в таблице
фактов использование функции COUNTROWS вместо DISTINCTCOUNT по
столбцу с первичным ключом будет более эффективным.
Удаление столбцов, задействованных в визуальных элементах или вычис-
лениях, может «сломать» существующие отчеты и даже весь набор данных.
Вы можете использовать инструмент Удалить другие столбцы (Remove
Other Columns) в Power Query, чтобы у вас был шаг, к которому вы сможе-
те обратиться в будущем, если вам потребуется вернуть столбец в модель
данных. Наличие такого шага также исключит возможность автоматической
загрузки в модель новых столбцов без вашего ведома. Это могут быть, на-
пример, столбцы, добавленные в базу данных SQL ее администратором.

Определение мер, визуальных


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

ствует инструмент под названием Анализатор производительности


(Performance Analyzer), которым вы можете воспользоваться для выполне-
ния трассировки долго формирующихся визуальных элементов и просмот-
ра соответствующих им запросов DAX.
Чтобы воспользоваться этим инструментом, необходимо перейти на
вкладку Отчет (Report) в левой части окна и нажать в верхней вклад-
ке Представление (View) на кнопку Анализатор производительности
(Performance analyzer). В результате откроется одноименная панель в пра-
вой части экрана, как показано на рис. 2.39.

Рис. 2.39. Анализатор производительности

Анализатор производительности выполняет трассировку запросов и по-


казывает, сколько времени тому или иному визуальному элементу требу-
ется для обновления. Для выполнения трассировки необходимо нажать на
кнопку Начать запись (Start recording) на панели Анализатор произво-
дительности. После этого вам нужно выполнить какие-нибудь действия –
например, применить фильтры для пересчета визуального элемента или
нажать на кнопку Обновить визуальные элементы (Refresh visuals) для
полного обновления элементов визуализации. Для каждого элемента вы
увидите время, которое потребовалось для его обновления.
Чтобы выделить самый медленный запрос, достаточно отсортировать
таблицу на панели Анализатор производительности по столбцу Дли-
тельность (Duration), нажав на кнопку со стрелкой.
За каждым визуальным элементом, содержащим данные, стоит запрос
на языке DAX, который можно скопировать в буфер обмена, раскрыв соот-
ветствующий элемент в списке на панели Анализатор производитель-
ности и нажав на кнопку Копировать запрос (Copy query). После этого вы
можете проанализировать скопированный запрос в программе, подобной
DAX Studio. Также вы имеете возможность выгрузить всю выполненную
трассировку, нажав на кнопку Экспортировать (Export).
172    Глава 2. Моделирование данных

Для удаления всех элементов трассировки нажмите на кнопку Очистить


(Clear). А после окончания записи не забудьте нажать на кнопку Остано-
вить (Stop).

ПРИМЕЧАНИЕ. Сопроводительные файлы


Представленные здесь визуальные элементы можно увидеть в файле
2.4.2 Identify poorly performing measures, relationships, and visuals.pbix из
папки с сопроводительными файлами.

Улучшение ситуации с кратностью столбцов


путем изменения типов данных
В Power BI используются сразу несколько механизмов сжатия данных для
обеспечения оптимального размера модели. Подробный обзор всех этих
алгоритмов выходит за рамки нашей книги, но один из методов компрес-
сии напрямую связан с уменьшением кратности столбцов, чего можно до-
биться за счет изменения типа данных.
Для хранения десятичных чисел в Power BI используется два типа дан-
ных:
■■ десятичное число (Decimal number) для хранения чисел более чем
с четырьмя знаками после запятой;
■■ десятичное число с фиксированной запятой (Fixed decimal
number) для хранения чисел менее чем с четырьмя знаками после
запятой включительно.
Если ваши данные по той или иной причине содержат значения с коли-
чеством знаков после запятой, превышающим четыре, но такая точность
вам не нужна, желательно изменить тип данных содержащих их столбцов
на десятичное число с фиксированной запятой – это поможет умень-
шить занимаемое моделью место.
Еще одним способом снизить кратность столбца является разделение
десятичных чисел на целую и дробную части, причем выполнить эту опе-
рацию желательно как можно ближе к источнику данных. Целочисленные
значения при этом могут быть в любом диапазоне, тогда как десятичные –
в диапазоне от 0 до 1. Затем такие разделенные значения могут быть легко
объединены путем агрегации с использованием итерационной функции
SUMX следующим образом:

Full number =
SUMX(
'Fact table',
'Fact table'[Whole number] + 'Fact table'[Decimal number]
)
Улучшение ситуации с кратностью столбцов при помощи суммирования данных    173

Несмотря на то что в таблице при этом станет на одну колонку боль-


ше, в большинстве случаев это поможет снизить кратность по сравнению
с исходной моделью, а значит, и размер файла станет меньше. По той же
причине в Power BI рекомендуется разбивать столбцы типа Дата и время
(Date/Time) с компонентом времени на два столбца с типами Дата (Date)
и Время (Time) соответственно. Таким образом вы сможете увеличить ко-
личество дубликатов в колонках, тем самым оптимизируя способ хранения
данных в памяти.
Некоторые столбцы, такие как номера счетов, хранящиеся в виде текста,
также могут быть серьезно оптимизированы. Например, если в вашей та-
блице фактов хранятся номера счетов в текстовом виде, но при этом все они
имеют префикс INV, следом за которым идут восемь цифр (INV01234567),
вы можете убрать префикс и преобразовать тип данных столбца из тек-
стового в целочисленный. Если префиксы бывают разными, вы можете
хранить их в отдельном столбце. Причина здесь в том, что целочисленные
значения в большинстве случаев хранятся в памяти гораздо более опти-
мально, чем текстовые.

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


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

Улучшение ситуации с кратностью столбцов


при помощи суммирования данных
Если в вашем источнике данных информация представлена с большим
уровнем детализации, чем нужно для отчетов, вы можете рассмотреть ва-
риант суммирования данных перед загрузкой для уменьшения кратности
столбцов. Например, если в источнике продажи хранятся с гранулярностью
до дня, а в отчеты вы выводите только суммы за месяц, вы можете пред-
варительно сгруппировать информацию таким образом, чтобы в ней были
представлены только месяцы. Этот подход позволит существенно снизить
размер модели данных, но вы должны понимать, что за такое уменьшение
размера придется платить невозможностью формировать отчеты о прода-
жах по дням.
При выборе этого метода желательно выполнять группировку и сумми-
рование как можно ближе к источнику данных. В Power Query вы може-
те выполнить эту операцию при помощи инструмента Группировать по
(Group by), расположенного на вкладке Преобразование (Transform).
Суммирование данных всегда предполагает некоторый компромисс
между размером итоговой модели данных и уровнем детализации инфор-
174    Глава 2. Моделирование данных

мации в ней. Таким образом, степень группировки должна зависеть от ва-


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

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Техники сжатия данных


Подробное описание техник сжатия данных выходит за рамки этой
книги. Но вы можете ознакомиться с примерами компрессии инфор-
мации при работе с импортированными данными в разделе «Методы
уменьшения объема данных для моделирования импорта» по адре-
су https://docs.microsoft.com/ru-ru/power-bi/guidance/import-modeling-data-
reduction.

Создание и управление агрегациями


Используя составную модель данных, вы можете оптимизировать произ-
водительность источников данных с режимом хранения DirectQuery при
помощи агрегаций (aggregations). Например, если вы используете режим
DirectQuery применительно к таблице фактов, в которой хранятся данные в
разрезе покупателей, а в отчетах вам требуется совокупная информация по
всем покупателям, вы можете создать агрегацию на уровне всех клиентов.
Когда вам понадобится получить данные по покупателям, вы всегда може-
те вернуться к использованию исходной таблицы, и Power BI будет автома-
тически определять, что использовать – агрегацию или исходные данные.

ПРИМЕЧАНИЕ. Воспроизведение шагов


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

Таблица агрегатной обработки (aggregation table) может представлять


собой таблицу, полученную несколькими способами:
■■ путем импорта запроса на языке M;
■■ при помощи создания вычисляемой таблицы в DAX;
■■ из другой таблицы в режиме хранения DirectQuery.
При наличии подходящей таблицы вы можете превратить ее в таблицу
агрегатной обработки, как показано ниже. Такая таблица должна содер-
жать хотя бы некоторые из ключей и столбцов, которые вы собираетесь
агрегировать, и она не обязательно должна находиться в том же источнике
данных, что и таблица с детализацией.
Создание и управление агрегациями    175

Скажем, у вас есть таблица Sale, хранящаяся в режиме DirectQuery, и таб­


лица агрегатной обработки с названием SaleAllCustomers, похожая на Sale,
за исключением того, что она не содержит детальную информацию по по-
купателям. Для управления агрегированием необходимо выполнить сле-
дующие действия.
1. Щелкните правой кнопкой мыши по таблице Sale на панели Поля
(Fields).
2. Выберите пункт Управление агрегированием (Manage aggregati­
ons).
3. В выпадающем списке Таблица агрегатной обработки (Aggregation
table) выберите таблицу SaleAllCustomers. Вам будут представлены
опции, показанные на рис. 2.40.

Рис. 2.40. Управление агрегированием

4. Для каждого столбца вы можете выбрать подходящий тип суммиро-


вания (summarization), а также таблицу сведений (detail table) и стол-
бец сведений (detail column), если нужно:
■■ Количество (Count): может быть использован только для обще-
го количества, а не для подсчета неповторяющихся значений;
■■ Группировать по (GroupBy): используется для ключей в свя-
зях;
■■ Макс (Max): максимальное значение;
176    Глава 2. Моделирование данных

■■ Мин (Min): минимальное значение;


■■ Сумма (Sum): относится к сумме;
■■ Подсчитать строки таблицы (Count table rows): считает стро-
ки в таблице.
5. После того как вы сделаете свой выбор, нажмите на кнопку Приме-
нить все (Apply all), и Power BI скроет таблицу агрегирования.

Запросы, которые могут быть обработаны при помощи таблицы агреги-


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

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Использование и управление


агрегированием
Для более подробного описания техник агрегирования, включая ис-
пользование различных шаблонов, вы можете обратиться к разделу
«Использование агрегатов в Power BI Desktop» по адресу https://docs.
microsoft.com/ru-ru/power-bi/transform-model/desktop-aggregations.

Заключение
■■ Power BI поддерживает разные схемы моделей данных, включая
плоскую (полностью денормализованную), схему «звезда» и схему
«снежинка». Предпочтительной схемой для моделей данных в Power
BI считается «звезда».
■■ Вы можете настраивать свойства столбцов и таблиц на вкладке Мо-
дель (Model) в левой части окна.
■■ Быстрые меры в Power BI позволяют без особого труда создавать не-
которые виды вычислений без использования языка DAX.
■■ Power BI требует выравнивания иерархий типа родитель–потомок
перед их использованием в элементах визуализации. Вы можете
использовать специальные функции языка DAX для выравнивания
иерархий, такие как PATH и PATHITEM.
■■ Иногда бывает удобно применять в работе ролевые измерения, по-
зволяющие фильтровать таблицу фактов с использованием разных
ключей.
■■ В Power BI поддерживаются следующие три типа кратности связей
между таблицами: «один к одному», «один ко многим» и «многие ко
многим». Для связей типа «один к одному» направление перекрест-
ной фильтрации всегда будет двунаправленным (таблицы фильтру-
ют друг друга). При использовании связей типа «один ко многим»
Заключение    177

направление кросс-фильтрации может быть как однонаправленным


(таблица на стороне «один» фильтрует таблицу на стороне «многие»),
так и двунаправленным. В связях типа «многие ко многим» направ-
ление фильтрации выбирается разработчиком модели данных исхо-
дя из бизнес-требований. Связи, у которых перекрестная фильтра-
ция работает в обе стороны, называются двунаправленными.
■■ Для двунаправленных связей фильтры безопасности не будут рас-
пространяться в обе стороны по умолчанию –  при необходимости
такое их поведение может быть задано в настройках.
■■ Для наилучшей производительности модели данных необходимо
внимательно следить и правильно настраивать режимы хранения
таблиц, кратность и направление кросс-фильтрации связей, а также
кратность столбцов (количество неповторяющихся значений в них).
При использовании режима DirectQuery на помощь может прийти
техника агрегирования данных.
■■ В Power BI поддерживаются как непосредственные связи типа «мно-
гие ко многим», так и организованные посредством вспомогатель-
ных таблиц-мостов.
■■ В Power BI вы можете создать общую таблицу дат при помощи Power
Query или языка запросов DAX. Также вы можете загрузить кален-
дарь из внешнего источника.
■■ Когда меры не поддерживают определенный уровень гранулярнос­
ти, вы можете сделать так, чтобы они возвращали на этих уровнях
пустые значения, – так вы не будете вводить пользователей в заблуж­
дение.
■■ В дополнение к использованию мер вы можете применять язык зап­
росов DAX для создания вычисляемых столбцов и вычисляемых таб­
лиц в Power BI.
■■ Power BI поддерживает создание иерархий, облегчающих пользова-
телям работу с моделями данных, хотя никакого фактического преи-
мущества использование иерархий, по сравнению с использованием
нескольких полей, не объединенных вместе, не дает.
■■ Вы можете защитить данные в своей модели при помощи механизма
безопасности на уровне строк, в котором могут использоваться как
статические фильтры на языке DAX, так и динамические – на осно-
вании того, какой пользователь работает с моделью.
■■ В Power BI вы можете применять запросы на естественном языке при
помощи соответствующего визуального элемента. Для более эффек-
тивной работы этого элемента допустимо использовать синонимы.
■■ CALCULATE является одной из мощнейших функций в языке DAX
и может использоваться для модификации текущих фильтров. При
помо­щи нее вы можете добавлять новые, а также изменять и удалять
178    Глава 2. Моделирование данных

существующие фильтры. Кроме того, функция CALCULATE применя-


ется для инициирования преобразования контекста.
■■ Семейство функций логики операций со временем в DAX позволяет
агрегировать значения по временным характеристикам. Например,
вы можете использовать функцию DATESYTD для расчета значений
нарастающим итогом с начала года, а функция DATEADD поможет
вам при вычислении показателей за аналогичный период в прошлом
году. Также в DAX есть функции, подобные OPENINGBALANCEMONTH,
позволяющие создавать полуаддитивные меры.
■■ Иногда может быть полезно заменять числовые столбцы в таблицах
на меры – это позволяет сократить размер модели данных.
■■ В основном рекомендуется загружать в Power BI исключительно те дан-
ные, которые вам необходимы для формирования отчетов. Лишние
столбцы и строки можно предварительно удалить или отфильтровать в
Power Query, особенно это касается первичных ключей в таблицах.
■■ Анализатор производительности, встроенный в Power BI, позволяет
эффективно определять узкие места в модели данных.
■■ Вы можете уменьшить кратность столбцов путем выбора наиболее
подходящего типа данных, а также при помощи механизма сумми-
рования данных.

Мысленный эксперимент
В данном списке упражнений вам необходимо будет продемонстрировать
ваши навыки и умения, приобретенные за время чтения этой главы. Ниже
мы приведем правильные ответы.
Вы являетесь аналитиком данных в компании Contoso и отвечаете за
формирование отчетов в Power BI. Руководство компании потребовало от
вас отчет на основе имеющихся исторических данных. Воспользовавшись
вашими теоретическими и практическими знаниями, ответьте на следую-
щие вопросы.
1. В модели данных содержится таблица фактов, насчитывающая более
15 млн записей. В этой таблице присутствует поле с именем DateTime,
хранящее дату и время. Перед вами стоит задача уменьшения раз-
мера модели данных. В своем решении вы должны предусмотреть
сохранение как можно большего числа исходных данных. Какие ва-
рианты вы бы предложили?
a) Изменить тип данных столбца DateTime на текстовый.
b) Очистить столбец DateTime.
c) Разделить столбец DateTime на два столбца: в одном из них будет
храниться дата, в другом – время.
d) Изменить тип данных столбца DateTime на Дата.
Мысленный эксперимент    179

2. Вы настраиваете визуальный элемент, в котором должна выводиться


прибыль компании по годам. При этом вы задействовали столбец
Year из таблицы Calendar и меру Revenue из таблицы Sale. Формула
меры получилась такой:

Revenue = SUM(Sale[Total Including Tax])

Результат показан на рис. 2.41. После перепроверки данных вы


обнаружили, что в 2019 году прибыль компании составила около
50 млн долл. Что необходимо сделать, чтобы визуальный элемент
показывал правильные цифры? Решение должно содержать мини-
мум вмешательства в код на языке DAX и предполагать, что таблица
Calendar может в дальнейшем использоваться и с другими таблица-
ми фактов. Также вы должны учитывать, что в дальнейшем вам мо-
жет понадобиться проанализировать и другие меры на основании
таблицы Sale.

Рис. 2.41. Прибыль по годам

a) Использовать функцию TREATAS языка DAX.


b) Создать связь между таблицами Calendar и Sale.
c) Объединить таблицы Sale и Calendar.
d) Создать вычисляемую таблицу, в которой будет рассчитываться
прибыль по годам.

3. В модели данных присутствует две роли: CentralRegion, фильтрую-


щая таблицу Region таким образом, что показывается только регион
Central, и AppliancesDepartment, фильтрующая таблицу Department по
отделу Appliances. Пользователю назначены обе эти роли. Что он уви-
дит в отчете о продажах?
a) Продажи по региону Central или отделу Appliances: будут видны
все отделы в регионе Central и все регионы в отделе Appliances.
b) Продажи по региону Central и отделу Appliances: будет виден
только отдел Appliances в регионе Central.
180    Глава 2. Моделирование данных

c) Будет применена только одна роль, которая была настроена


первой.
d) Пользователь увидит ошибку.

4. В вашей таблице Date присутствует единственный столбец Date с да-


тами. Вам необходимо расширить таблицу за счет столбца с месяцем
и годом в формате MMMM YYYY (Май 2021). Как вы поступите? Ваше
решение должно требовать минимальных усилий и места для хране-
ния новых данных. Также решение должно предполагать сортировку
в хронологическом порядке.
a) Создадите вычисляемый столбец с использованием функции
FORMAT.
b) Создадите вычисляемый столбец с использованием функции
EOMONTH в формате MMMM YYYY.
c) Создадите дубликат столбца Date и примените к нему нужное
форматирование.
d) Создадите новую вычисляемую таблицу с именем Date – MMMM
YYYY и отформатируете значения как MMMM YYYY.

5. Вам необходимо написать меру, вычисляющую остатки по месяцам.


Какую формулу вы используете?
a) CALCULATE(SUM(Inventory[Balance]), ENDOFMONTH('Date'[Date])).
b) CALCULATE(SUM(Inventory[Balance]), MAX(Inventory[Date])).
c) CALCULATE(SUM(Inventory[Balance]), DATESMTD(Inventory[Date])).
d) CALCULATE(MAX(Inventory[Balance]), LASTDATE(Inventory[Date])).

6. Вы подключаетесь к таблице в базе данных, насчитывающей 900 млн


строк, в которой содержатся данные о продажах. Попытка импорти-
ровать данные целиком привела к образованию файла PBIX разме-
ром 15 Гб, а ваш компьютер может публиковать данные объемом не
более 10 Гб. В связи с этим вы выбрали режим хранения DirectQuery.
Среди доступных вам измерений присутствуют Date, Region и Product.
В большинстве случаев пользователи просматривают данные о про-
дажах в разрезе измерений Date и Region, но иногда формируют от-
четы и по измерению Product. При этом пользователи жалуются на
производительность модели данных при формировании агрегиро-
ванных отчетов по измерениям Date и Region. Что вы предпримете?
Ваше решение должно предполагать минимум изменений в модели
данных и учитывать необходимость формирования отчетов по из-
мерению Product.
a) Используете режим хранения DirectQuery и будете подклю-
чаться к агрегированному представлению в базе данных.
b) Создадите таблицу агрегатной обработки.
Ответы    181

c) Установите для таблицы Sale режим хранения Двойной (Dual).


d) Воспользуетесь инструментом Группировать по из состава
Power Query для группировки продаж по измерениям Date и
Region.
7. Вы унаследовали модель данных Power BI, в которой содержится
несколько таблиц. В одной из этих таблиц присутствует множество
вычисляемых столбцов, использующих функцию RELATED. В ваши
задачи входит уменьшение размера модели данных. Что вы пред-
примете?
a) Добавите (Append) таблицы одну к другой.
b) Выполните объединение (Merge) таблиц.
c) Разделите таблицы на разные модели данных.
d) Скроете неиспользуемые столбцы.

8. Вы создали отчет о продажах и настроили для него безопасность на


уровне строк. В модели присутствует множество ролей, каждая из ко-
торых фильтрует набор данных по одному отделу. Каждой роли со-
ответствует своя группа Active Directory. В основном вашим отчетом
пользуются менеджеры по продажам, которые могут видеть только
свой отдел. Один из менеджеров недавно был переведен из одного
отдела в другой. Что вам необходимо сделать?
a) Обновить членство в ролях в службе Power BI.
b) Изменить роли в Power BI Desktop.
c) Поставить вопрос об удалении пользователя из старой группы
Active Directory и добавлении в новую.

Ответы
1. Правильный ответ – c. Разделение столбца с датой и временем над-
вое позволит сохранить все исходные данные и значительно сокра-
тить количество неповторяющихся значений в столбцах, что приве-
дет к уменьшению размера модели данных. Изменение типа данных
на текстовый, как советует первый вариант ответа, не изменит число
уникальных значений в столбце, а значит, не повлияет и на размер мо-
дели. Совет с очисткой столбца и удалением непечатаемых символов
также не позволит сократить количество неповторяющихся значений
применительно к столбцу с датой и временем. А если изменить тип
данных столбца на Дата, как говорится в пункте d, то размер модели
данных, безусловно, уменьшится, но произойдет это за счет жертвы
временной составляющей колонки, чего мы допустить не можем.
2. Правильный ответ – b. Создание физической связи между таблицами
является лучшим решением, поскольку оно не требует написания кода
182    Глава 2. Моделирование данных

на DAX, позволяет использовать таблицу Calendar с другими таблица-


ми, а не только с Sale, кроме того, вы сможете использовать другие
меры из таблицы Sale вместе с полями из таблицы Calendar. Хотя ре-
шение с применением функции TREATAS из варианта a и может сра-
ботать, все же оно требует написания необязательно сложных выра-
жений на DAX, при том что вам может понадобиться анализировать
и другие меры, не только Revenue. Вариант с объединением таблиц не
позволит использовать таблицу Calendar с другими таблицами в мо-
дели или приведет к ненужному дублированию данных из таблицы
Calendar. Вариант d позволит исправить диаграмму, но не решит про-
блему с анализом других мер по годам.
3. Правильный ответ – a. Power BI поддерживает назначение нескольких
ролей одному пользователю, и в этом случае роли комбинируются по
правилу объединения, так что пользователь будет видеть все отделы
из региона Central и все регионы из отдела Appliances.
4. Правильный ответ – b. Используя функцию EOMONTH, вы получите
вычисляемый столбец с датами, отражающими конец месяца, а фор-
мат отображения сможете выбрать такой, какой вам нужен. Поскольку
тип данных останется Дата (Date), данные будут автоматически отсо-
ртированы в хронологическом порядке. Если использовать функцию
FORMAT, вы получите нужное вам форматирование, но сами данные
будут в текстовом формате, что для выполнения сортировки потре-
бует наличия отдельного столбца –  в противном случае вывод будет
отсортирован в алфавитном порядке. А отдельная колонка для сорти-
ровки будет занимать лишнее место в памяти. В варианте с созданием
дубликата столбца и его форматированием значения будут выглядеть
как надо, хотя внутренне они будут представлять собой даты, что при-
ведет к наличию более одного значения для комбинации месяца и
года. Создавая вычисляемую таблицу, как советуется в варианте d, вы
лишь увеличите размер модели данных и внесете в нее дополнитель-
ную сложность.
5. Правильный ответ – a. Функция SUM позволит корректно агрегировать
складские остатки по всем измерениям, кроме измерения с датами, а
функция ENDOFMONTH поможет выбрать последний день месяца для
просмотра остатков на конец месяца. Во втором варианте ответа функ-
ция MAX используется в качестве аргумента фильтра в CALCULATE, но
это не сработает, поскольку в таком случае будет возвращен скаляр,
а не таблица. Третий из предложенных способов вернет неправиль-
ные значения, если у вас ведутся дневные или недельные остатки. Ну
а последний вариант не сработает, поскольку вернет максимальный
остаток из имеющихся.
6. Правильный ответ – b. Создание таблицы агрегатной обработки по-
требует минимальных изменений в модели данных, поскольку Power
BI сам будет решать, использовать ли ее или извлекать данные при по-
Ответы    183

мощи режима DirectQuery. Если использовать режим DirectQuery для


подключения к агрегированным представлениям, как советует вари-
ант a, вам придется вводить новые меры или изменять существующие
для использования правильной таблицы. Изменение режима хране-
ния на двойной приведет к импортированию данных и превышению
допустимого для публикации объема. А группирование данных, пред-
полагаемое в последнем варианте ответа, не позволит пользователям
анализировать продажи по товарам.
7. Правильный ответ – b. Использование функции RELATED в вычисляе-
мых столбцах часто приводит к дублированию данных. Если столбцы
должны находиться в одной таблице – например, для создания иерар-
хии, – предпочтительным вариантом может стать объединение (Merge)
таблиц. Добавление (Append) таблиц, как советует первый вариант от-
вета, приведет к их вертикальному объединению, что не решит зада-
чу. Разделение таблиц на разные модели данных из третьего варианта
поможет уменьшить размер модели данных, но не позволит использо-
вать одни и те же данные. А скрытие ненужных столбцов не влияет на
размер модели данных.
8. Правильный ответ – c. Поскольку за безопасность отвечают группы
Active Directory, пользователя необходимо удалить из старой группы
Active Directory и добавить в новую. Если просто добавить пользова-
теля к новой роли в службе Power BI без изменения членства в груп-
пах, как советует вариант a, он будет видеть данные и по старому, и
по новому отделу. А изменение ролей в Power BI Desktop из второго
варианта никак не поможет, поскольку управление членством в ролях
происходит за пределами Power BI Desktop.
Глава 3
Визуализация данных

До этого момента мы обсуждали навыки, необходимые для подготовки и


моделирования данных в качестве основы для их дальнейшей визуализа-
ции, которой посвящена третья глава. Визуализация данных (visualizing the
data) – важнейшая составляющая Power BI, и вам необходимо знать все ее
тонкости и нюансы для построения действительно эффективных отчетов.
Этот шаг в свою очередь будет основой для анализа данных, о котором мы
будем говорить в четвертой главе книги.
В Power BI с целью визуализации данных вы можете формировать отче-
ты и создавать дашборды. Что отличает Power BI от других инструментов
визуализации, так это то, что вы можете создавать по-настоящему инте-
рактивные отчеты, состоящие из визуальных элементов, взаимодействую-
щих друг с другом путем перекрестной фильтрации лежащих в их основе
данных.
Начнем мы эту главу с перечисления навыков, необходимых для постро-
ения визуализаций данных в Power BI. После этого мы поговорим о созда-
нии и конфигурировании отчетов, а также о настройке опции обновления
страницы. Далее мы перейдем к обсуждению темы создания дашбордов,
позволяющих объединить наиболее важные визуальные элементы из раз-
личных отчетов на одном экране. В конце главы мы поговорим о богатом
наборе инструментов, предназначенных для повышения удобства исполь-
зования отчетов.
Навыки, описываемые в данной главе.
■■ 3.1. Создание отчетов.
■■ 3.2. Создание дашбордов.
■■ 3.3. Повышение удобства использования отчетов.

Навык 3.1. Создание отчетов


Отчет (report) в Power BI может базироваться только на одном наборе дан-
ных и содержать несколько страниц. Отчеты могут создаваться как в Power
BI Desktop, так и в службе Power BI.
Добавление элементов визуализации в отчет    185

Начнем этот раздел с перечисления элементов визуализации и опций


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

Основные составляющие навыка:


■■ добавление элементов визуализации в отчет;
■■ выбор подходящего типа элемента визуализации;
■■ форматирование и настройка визуализаций;
■■ импортирование пользовательских визуализаций;
■■ настройка условного форматирования;
■■ применение срезов и фильтров;
■■ добавление визуальных элементов R и Python;
■■ настройка страницы отчета;
■■ настройка специальных возможностей в отчетах;
■■ настройка автоматического обновления страниц;
■■ создание отчетов с разбивкой на страницы.

Добавление элементов визуализации в отчет


В Power BI добавлять элементы визуализации в отчет можно разными спо-
собами:
■■ выбрать иконку, соответствующую нужному элементу визуализа-
ции, на панели Визуализации (Visualizations);
■■ установить флажок напротив нужного поля на панели Поля (Fields);
■■ перенести поле с панели Поля (Fields) на рабочую область;
■■ нажать на кнопку Создать визуальный элемент (New visual) на
вкладке Вставка (Insert);
■■ превратить созданный элемент Вопросы и ответы (Q&A) в тради-
ционный элемент визуализации.
В следующем разделе мы поговорим о том, как выбрать наиболее подхо-
дящий тип визуализации в той или иной ситуации. Помимо стандартных
элементов визуализации вы также имеете возможность загружать пользо-
вательские элементы, о чем мы также поговорим далее в этой главе.
В дополнение к элементам визуализации в Power BI существует множе-
ство других объектов, позволяющих донести до пользователя отчета необ-
ходимую информацию в том или ином виде. Эти объекты расположены на
вкладке Вставка (Insert):

■■ Текстовое поле (Text box): может содержать отформатированный


текст, включая гиперссылки;
■■ Кнопки (Buttons): могут быть отформатированы особым образом для
разных состояний кнопок, таких как наведение мыши или нажатие;
186    Глава 3. Визуализация данных

■■ Фигуры (Shapes): похожи на кнопки, за исключением внешнего вида


и опций форматирования;
■■ Изображение (Image): фигура, содержащая изображение.

Кнопки, фигуры и изображения могут предназначаться для выполнения


одного из следующих действий:

■■ Назад (Back): переход на предыдущую страницу. Особенно уместно


после выполнения детализации (drill-through);
■■ Закладка (Bookmark): переход к заданной закладке;
■■ Перемещение по страницам (Page navigation): переход на указан-
ную страницу отчета;
■■ Вопросы и ответы (Q&A): запускает всплывающий элемент вопро-
сов и ответов, который может обрабатывать только запросы на есте-
ственном языке –  без дополнительной функциональности, доступ-
ной в визуальном элементе Вопросы и ответы;
■■ URL-адрес (Web URL): переход к определенной странице в интернете.
Кнопки также могут осуществлять операцию детализации, заключающу-
юся в переходе на указанную страницу с сохранением всех примененных
фильтров с исходной страницы. Подробно о детализации мы поговорим
ближе к концу главы.

Выбор подходящего типа элемента


визуализации
Помимо элементов Таблица (Table) и Матрица (Matrix), которые мы уже
использовали в предыдущих главах, Power BI предлагает еще более 30
встроенных элементов визуализации. Фрагмент панели Визуализации
(Visualizations) показан на рис. 3.1.
В данном разделе мы пройдемся по всем типам визуальных элементов и
покажем, как делать выбор в пользу того или иного элемента.

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Все визуальные элементы из данного раздела можно увидеть в файле
3.1.2 Choose an appropriate visualization type. pbix из папки с сопрово-
дительными файлами.
Выбор подходящего типа элемента визуализации    187

Visualizations >


Рис. 3.1. Стандартные визуальные элементы в Power BI

Линейчатая диаграмма
Power BI предлагает на выбор шесть разновидностей линейчатой диа-
граммы (bar chart):
■■ линейчатая диаграмма с накоплением (stacked bar chart);
■■ гистограмма с накоплением (stacked column chart);
■■ линейчатая диаграмма с группировкой (clustered bar chart);
■■ гистограмма с группировкой (clustered column chart);
■■ нормированная линейчатая диаграмма (100 % stacked bar chart);
■■ нормированная гистограмма (100 % stacked column chart).
Все шесть разновидностей линейчатой диаграммы имеют одинаковые
свойства:
■■ Ось (Axis): столбцы, которые будут помещены на горизонтальную и
вертикальную оси. При использовании более одного столбца поль-
зователи получат возможность выполнять детализацию до следую-
щего поля;
■■ Условные обозначения (Legend): столбец с категориальными дан-
ными для цветового наполнения диаграммы;
■■ Значения (Values): одно или более числовых полей для размещения
на диаграмме. Если вы используете условные обозначения, вы може-
те добавить сюда только одно поле;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть при наведении мышью на диаграмму. При отсут-
188    Глава 3. Визуализация данных

ствии настроенной подсказки будут использоваться подсказки по


умолчанию.
Различия между всеми шестью разновидностями линейчатой диаграм-
мы можно увидеть на рис. 3.2.

Рис. 3.2. Линейчатые диаграммы

Линейчатые диаграммы или гистограммы удобно использовать для


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

График и диаграмма с областями


Power BI предлагает на выбор один график и две диаграммы с областями:
■■ график (line chart);
■■ диаграмму с областями (area chart);
■■ диаграмму с областями с накоплением (stacked area chart).

Эти типы диаграмм имеют следующие общие свойства-поля:


■■ Ось (Axis): столбцы, которые будут помещены на горизонтальную
ось. При использовании более одного столбца пользователи получат
возможность выполнять детализацию до следующего поля;
■■ Условные обозначения (Legend): столбец с категориальными дан-
ными для цветового наполнения диаграммы;
■■ Значения (Values): одно или более числовых полей для размещения
на диаграмме. Если вы используете условные обозначения, вы може-
те добавить сюда только одно поле;
Выбор подходящего типа элемента визуализации    189

■■ Подсказки (Tooltips): дополнительные поля, которые пользователь


сможет увидеть при наведении мышью на диаграмму.
Диаграммы с областями похожи на графики, за исключением закрашен-
ной области под линиями. Также все графики и диаграммы с областями
располагают дополнительным свойством Вспомогательные значения
(Secondary values), позволяющим разместить на диаграмме вторичную ось
y, если вы не задействуете поле Условные обозначения.
Все виды графиков и диаграмм с областями показаны на рис. 3.3.

Рис. 3.3. Графики и диаграммы с областями

Эти виды диаграмм удобно использовать при анализе исторических дан-


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

Комбинированная диаграмма
В Power BI доступно два вида комбинированных диаграмм:
■■ график и гистограмма с накоплением (line and stacked column chart);
■■ график и гистограмма с группировкой (line and clustered column chart).

Эти типы диаграмм имеют следующие общие свойства:


■■ Общая ось (Shared axis): столбцы, которые будут помещены на гори-
зонтальную ось. При использовании более одного столбца пользова-
тели получат возможность выполнять детализацию до следующего
поля;
■■ Ряд столбцов (Column series): свойство, схожее с условными обозна-
чениями. Может использоваться только один столбец;
■■ Значения столбцов (Column values): одно или более числовых по-
лей для размещения на диаграмме. Если вы используете ряд столб-
цов, вы можете добавить сюда только одно поле;
■■ Значения строк (Line values): одно или более числовых полей для
размещения на диаграмме в виде линий;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть при наведении мышью на диаграмму.
190    Глава 3. Визуализация данных

Все виды комбинированных диаграмм показаны на рис. 3.4.

Рис. 3.4. Комбинированные диаграммы

Эти виды диаграмм удобно использовать при выводе двух полей, имею-
щих разные диапазоны значений, если вы хотите использовать для одного
из них условные обозначения. К примеру, вы могли бы отобразить на диа-
грамме прибыль и количество проданных товаров по годам, как показано
на рис. 3.4.
По умолчанию значения столбцов отображаются справа, а значения
строк – слева. На вкладке Формат (Format) вы можете поменять оси места-
ми, а также скрыть одну из них, что приведет к выравниванию осей.
Комбинированные диаграммы позволяют выводить маркеры (markers)
на линиях и устанавливать толщину линий в ноль, что подходит для срав-
нения значений по категориям и по времени, а не только по времени.

Ленточная диаграмма
Ленточная диаграмма (ribbon chart) напоминает гистограмму со своео-
бразными лентами между столбиками для демонстрации изменений в от-
носительном ранжировании категориальных элементов.
Этот тип диаграммы обладает следующими свойствами:
■■ Ось (Axis): столбцы, которые будут помещены на горизонтальную
ось. При использовании более одного столбца пользователи получат
возможность выполнять детализацию до следующего поля;
■■ Условные обозначения (Legend): столбец с категориальными дан-
ными для цветового наполнения диаграммы;
■■ Значения (Values): одно или более числовых полей для размещения
на диаграмме. Если вы используете условные обозначения, вы може-
те добавить сюда только одно поле;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть при наведении мышью на диаграмму.

Подсказки на ленточной диаграмме будут содержать дополнительную


информацию в сравнении с видами диаграмм, которые мы описывали ра-
нее. При наведении на ленту между столбцами вы увидите характер изме-
Выбор подходящего типа элемента визуализации    191

нения показателя между двумя соседними столбцами. На рис. 3.5 показан


пример ленточной диаграммы с подсказкой при наведении на ленту.

Рис. 3.5. Ленточная диаграмма

Этот вид диаграммы подходит для демонстрации изменений относи-


тельного ранжирования различных категорий во времени.

Каскадная диаграмма
Каскадная диаграмма (waterfall chart) показывает кодированные цветом
значения в стиле накопительных итогов. По умолчанию положительные
тенденции обозначаются зеленым цветом, а отрицательные – красным.
Этот тип диаграммы обладает следующими свойствами:

■■ Категория (Category): столбцы, которые будут помещены на гори-


зонтальную ось, и каждый элемент представляет собой этап. При
использовании более одного столбца пользователи получат возмож-
ность выполнять детализацию до следующего поля;
■■ Распределение (Breakdown): здесь можно использовать один стол-
бец для отображения разницы между категориями;
■■ Значения (Values): одно числовое поле для размещения на диаграм-
ме;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть при наведении мышью на диаграмму.
При использовании свойства Распределение наведение мышью на эле-
мент распределения будет показывать разницу между двумя категориаль-
ными элементами. На рис. 3.6 показан пример каскадной диаграммы с
подсказкой при наведении на элемент распределения.
При использовании поля распределения на диаграмме будут показаны
по умолчанию первые пять элементов, а остальные будут сгруппированы
в категорию Другое (Other). Эта группа будет отображаться желтым цве-
том, поскольку может содержать как положительные, так и отрицательные
192    Глава 3. Визуализация данных

тренды. На панели Формат (Format) можно изменить максимальное число


подразделений в области Распределение (Breakdown), а также цветовую
гамму диаграммы.
Этот вид диаграммы идеально подходит для демонстрации того, какая
категория наибольшим образом повлияла на тенденцию между временны-
ми интервалами. Диаграмма также может пригодиться для отображения
составных частей общей суммы с одновременной демонстрацией итога
для сравнения.

Рис. 3.6. Каскадная диаграмма

ВАЖНО. Итоги на каскадной диаграмме


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

Воронка
Воронка (funnel chart) похожа на линейчатую диаграмму со столбиками,
размещенными по центру, и обладает следующими свойствами:
■■ Группа (Group): один или несколько категориальных столбцов, где
каждый элемент представляет собой этап. При использовании более
одного столбца пользователи получат возможность выполнять дета-
лизацию до следующего поля;
■■ Значения (Values): одно числовое поле для размещения на диаграм-
ме;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть при наведении мышью на диаграмму.
При наведении мышью на категориальные столбцы на диаграмме вы
увидите подсказку с долей текущего элемента от первого и предыдущего.
Также на диаграмме вам будет показан размер последнего элемента отно-
Выбор подходящего типа элемента визуализации    193

сительно первого. На рис. 3.7 можно видеть пример каскадной диаграммы


с подсказкой.

Рис. 3.7. Воронка

Из-за присутствия ценной дополнительной информации во всплываю-


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

Точечная диаграмма
Точечная диаграмма (scatter chart) предназначена для визуализации пока-
зателей по двум и более категориальным элементам. Каждая точка на диа-
грамме размещается на пересечении координат x и y в соответствии с пока-
зателями выведенных категорий. При использовании третьего показателя,
определяющего размер точек, диаграмма может называться пузырьковой
(bubble chart). Также диаграмма может превратиться в точечный график (dot
plot), если в ней оставить одну категориальную величину по оси x.
Этот тип визуализации обладает следующими свойствами-полями:
■■ Подробнее (Details): это поле можно использовать для одного или
нескольких категориальных столбцов для вывода точек на диаграм-
ме. При использовании более одного столбца пользователи получат
возможность выполнять детализацию до следующего поля;
■■ Условные обозначения (Legend): категориальный столбец, исполь-
зуемый для определения цвета точек на диаграмме;
■■ Ось X (X-axis): столбец, помещаемый на горизонтальную ось;
■■ Ось Y (Y-axis): числовой столбец, помещаемый на вертикальную ось;
■■ Размер (Size): числовой столбец, определяющий размер пузырьков
на диаграмме;
■■ Ось воспроизведения (Play axis): здесь можно использовать стол-
бец, который, как правило, представляет собой временную состав-
ляющую, такую как год или дату.
194    Глава 3. Визуализация данных

■■ Подсказки (Tooltips): дополнительные поля, которые пользователь


сможет увидеть при наведении мышью на диаграмму.

На рис. 3.8 приведен пример точечной диаграммы.

Рис. 3.8. Точечная диаграмма

Точечная диаграмма традиционно используется для демонстрации вза-


имосвязей между двумя категориями данных или отображения выбросов.

Круговая и кольцевая диаграммы


Круговая (pie chart) и кольцевая (donut chart) диаграммы похожи друг на
друга, за исключением того, что у последней есть пустое пространство в
середине. Обе диаграммы обладают следующими четырьмя свойствами:
■■ Условные обозначения (Legend): один или несколько категори-
альных столбцов, используемых для определения цвета сектора на
диаграмме. При использовании более одного столбца пользователи
получат возможность выполнять детализацию до следующего поля;
■■ Подробнее (Details): каждый срез может быть разделен по категори-
альному столбцу, указанному в этом свойстве;
■■ Значения (Values): здесь можно использовать одно или несколько
числовых полей. При задействовании свойства Подробнее допусти-
мо использовать для значений только одно поле;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть во всплывающей подсказке.
При наведении мышью на диаграмму вы увидите долю текущего эле-
мента от целого.
На рис. 3.9 показаны круговая и кольцевая диаграммы с подсказкой.
Любую из этих диаграмм можно использовать для отображения зависи-
мостей между частью и целым. При этом считается, что лучше всего при-
бегать к помощи этого вида визуализации при сравнении не более двух
категорий. Также вы можете использовать эти диаграммы, когда уверены,
Выбор подходящего типа элемента визуализации    195

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


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

Рис. 3.9. Круговая и кольцевая диаграммы

Диаграмма дерева
Диаграмма дерева (treemap chart) может восприниматься как прямоу-
гольная круговая диаграмма, поскольку она тоже демонстрирует отноше-
ние частей к целому, при этом вложенные прямоугольники также делятся
на части. Этот тип диаграммы обладает следующими свойствами:
■■ Группа (Group): один или несколько категориальных столбцов, опре-
деляющих относительный размер прямоугольников. При использо-
вании более одного столбца пользователи получат возможность вы-
полнять детализацию до следующего поля;
■■ Подробнее (Details): каждый прямоугольник может быть разбит в
соответствии со значениями столбца, указанного в этом свойстве;
■■ Значения (Values): одно числовое поле для размещения на диаграм-
ме. При задействовании свойства Подробнее допустимо использо-
вать для значений только одно поле;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть при наведении мышью на диаграмму.
В отличие от круговой и кольцевой диаграмм, в подсказках диаграммы
дерева по умолчанию не отображаются доли части от целого. На рис. 3.10
можно видеть пример диаграммы дерева.
Прямоугольники на этом виде диаграммы размещаются сверху вниз и
слева направо в убывающем порядке представленных в них значений.
Диаграмму дерева уместно использовать для отображения пропорций
между частями и целым, а также для определения элементов с наибольшим
вкладом и выбросов.
196    Глава 3. Визуализация данных

Рис. 3.10. Диаграмма дерева

Карта
В Power BI существует сразу несколько инструментов для отображения ге-
опространственных данных. В этом разделе мы поговорим о географиче-
ских картах. Представленные в стандартном наборе визуальные элементы
Карта (map) и Заполненная карта (filled map), также известная как карто-
грамма (choropleth map), обладают следующими свойствами:

■■ Расположение (Location): один или несколько категориальных


столбцов, определяющих местоположение элемента. При использо-
вании более двух столбцов пользователи получат возможность вы-
полнять детализацию;
■■ Условные обозначения (Legend): здесь вы можете использовать
столбец, определяющий цвет точек на карте;
■■ Широта (Latitude): может быть использовано одно поле;
■■ Долгота (Longitude): может быть использовано одно поле;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть при наведении мышью на диаграмму.
Также элемент визуализации Карта (map) располагает дополнительным
свойством Размер (Size) для задания диаметра точек на карте в зависимо-
сти от значений в указанном числовом столбце. Если вы задействуете свой-
ство Условные обозначения (Legend) совместно с картой, ваши пузырьки
на карте превратятся в круговые диаграммы.

ПРИМЕЧАНИЕ. Точность карт


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

На рис. 3.11 можно видеть примеры карты и заполненной карты.

Рис. 3.11. Карта и заполненная карта

Карты бывают полезны при отображении на визуальных элементах про-


странственных данных и географического распределения значений. Power
BI автоматически приблизит изображение карты таким образом, чтобы
было видно большинство отображаемых значений. Вам необходимо удо-
стовериться, что пользователи увидят все необходимые поля путем выбора
цветового кодирования данных и типа карты (обычная или заполненная).
К примеру, на рис. 3.11 категория External хорошо различима на обычной
карте и практически нечитаема на карте с заполнением.

Датчик
Датчик (gauge chart) можно воспринимать как половину кольцевой диа-
граммы для сравнения текущего значения показателя с целью или макси-
мумом. Этот тип диаграммы характеризуется пятью следующими свойст­
вами:

■■ Значение (Value): одно числовое поле для размещения в центре


диа­граммы;
■■ Минимальное значение (Minimum value): числовое поле для опре-
деления начала шкалы;
■■ Максимальное значение (Maximum value): числовое поле для опре-
деления конца шкалы;
■■ Целевое значение (Target value): вы можете использовать числовое
поле для определения контрольной линии на шкале;
■■ Подсказки (Tooltips): дополнительные поля, которые пользователь
сможет увидеть при наведении мышью на диаграмму.
На рис. 3.12 показан пример диаграммы датчика.
Хотя на датчике будут отображаться все указанные в свойствах данные,
единственным обязательным свойством для этого вида визуализации яв-
ляется Значение (Value). По умолчанию в качестве начальной точки шкалы
198    Глава 3. Визуализация данных

на датчике ставится ноль, а в качестве максимальной – удвоенное текущее


значение поля из свойства Значение. В результате шкала будет заполнена
ровно наполовину.
Этот визуальный элемент наилучшим образом подходит для отслежи-
вания различных ключевых показателей эффективности (KPI), особенно
тех, у которых известны граничные отметки в виде максимума. Также KPI
можно отслеживать и при помощи других элементов визуализации, о чем
мы поговорим далее.

Рис. 3.12. Датчик

Карточка, многострочная карточка и KPI


Помимо датчика ключевые показатели эффективности можно выводить
в отчет с помощью трех других элементов визуализации. Элемент Карточ-
ка (Card) содержит единственное свойство для отображения, которое мо-
жет представлять столбец любого типа.
Многострочная карточка (Multi-row card) также имеет одно свойство, но
при этом может принимать множество столбцов. Если хоть одно из этих
полей будет текстовым, значения будут разбиты на строки – по одной для
каждой категории.
Элемент визуализации Ключевой показатель эффективности (KPI) обла-
дает следующим набором свойств:

■■ Индикатор (Indicator): одно числовое поле для размещения в цен-


тре диаграммы;
■■ Ось тренда (Trend axis): поле, предположительно содержащее вре-
менные данные, такие как год или дата;
■■ Запланированные цели (Target goal): одно или два числовых поля,
с которыми сравнивается индикатор.

Данная диаграмма отображает значение для последнего элемента на оси


тренда, которое отличается от общего итога значений по оси.
Все три визуальных элемента показаны на рис. 3.13.
Карточку удобно использовать, когда необходимо вывести в элементе
единственный показатель.
Карта    199

Рис. 3.13. Карточка, многострочная карточка и KPI

Если вам необходимо выполнить сравнение значения с одной или двумя


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

ПРИМЕЧАНИЕ. Производительность
Хотя эта тема выходит за рамки экзамена, стоит отметить, что чем
больше визуальных элементов вы разместите на странице, тем мед-
леннее она будет работать. Если у вас на странице много карточек,
задумайтесь о том, чтобы объединить выводимые показатели в много-
строчную карточку или даже таблиц с целью уменьшения количества
используемых визуальных элементов.

Визуальные элементы с искусственным интеллектом


На момент написания книги в Power BI были представлены следующие
элементы визуализации, связанные с искусственным интеллектом:
■■ Ключевые факторы влияния (Key influencers): этот элемент помогает
пользователю понять, что явилось главной движущей силой измене-
ния того или иного показателя, а также сравнить влияние различных
факторов;
■■ Дерево декомпозиции (Decomposition tree): позволяет пользователю
провести анализ основных причин (root cause analysis) или запустить
интерактивную детализацию;
■■ Вопросы и ответы (Q&A): отвечает на вопросы, сформулированные
на естественном языке.
Первые два визуальных элемента мы обсудим в четвертой главе, когда
будем говорить об углубленном анализе, а с элементом Вопросы и ответы
вы уже имели честь познакомиться и поработать.
200    Глава 3. Визуализация данных

Форматирование и настройка визуализаций


Power BI позволяет настраивать визуальные элементы разными способами,
зависящими от конкретной визуализации. Чтобы посмотреть доступные
опции форматирования элемента, необходимо выделить его и перейти на
вкладку Формат (Format) на панели Визуализации (Visualizations).
Многие визуальные элементы обладают своими уникальными свойства-
ми форматирования, но есть и общие для большинства из них:

■■ Общий (General): в этом разделе настроек вы можете задать положе-


ние визуального элемента по осям x и y, его ширину и высоту, а также
альтернативный текст, который будет озвучен экранным диктором
при выделении элемента;
■■ Название (Title): здесь можно установить текст названия, перенос
по словам, цвет шрифта, выравнивание, размер текста и семейство
шрифтов;
■■ Фон (Background): в данном разделе располагаются настройки фона,
такие как его цвет и прозрачность;
■■ Заблокировать пропорции (Lock aspect): если эта настройка вклю-
чена, при изменении размеров элемента соотношение его ширины
к высоте (aspect) будет оставаться постоянным;
■■ Граница (Border): здесь настраиваются цвет и радиус границ;
■■ Тень (Shadow): в этом разделе можно изменить цвет тени, ее поло-
жение и предварительно заданное значение;
■■ Подсказка (Tooltips): здесь вы можете выбрать между подсказкой по
умолчанию и использованием в качестве подсказки указанной стра-
ницы отчета. Для подсказок по умолчанию вы можете настраивать
формат меток, цвет значений, размер текста, семейство шрифтов, а
также цвет фона и его прозрачность;
■■ Заголовок визуального элемента (Visual header): в этом разделе
вы можете скрыть визуальный заголовок или некоторые из его эле-
ментов. Кроме того, здесь можно задать фон заголовка, его границы,
прозрачность и цвет значков. Также вы можете отобразить значок
подсказки для заголовка визуального элемента.
Некоторые из этих свойств можно редактировать в зависимости от об-
стоятельств, о чем мы поговорим далее в этой главе.

Импортирование пользовательских
визуализаций
В дополнение ко встроенному набору элементов визуализации Power BI
позволяет использовать и пользовательские наработки, известные как
визуальные элементы, созданные при помощи Power BI SDK. Существует
Импортирование пользовательских визуализаций    201

два основных способа загрузки пользовательских визуальных элементов в


Power BI Desktop:
■■ из AppSource;
■■ из файла.

AppSource
Вы можете импортировать визуальные элементы из AppSource. Это мож-
но сделать двумя способами:
■■ на вкладке Отчет (Report) в левой части окна перейдите на верхнюю
вкладку Вставка (Insert) и в выпадающей кнопке Другие визуаль-
ные элементы (More visuals) выберите вариант Из AppSource (From
AppSource);
■■ нажмите на кнопку с тремя точками в конце списка элементов на
панели Визуализации (Visualizations) и выберите пункт Еще визу-
альные элементы (Get more visuals).
В любом из двух случаев откроется диалоговое окно Визуальные эле-
менты Power BI (Power BI Visuals), показанное на рис. 3.14.

Рис. 3.14. Диалоговое окно визуальных элементов Power BI

Помимо общедоступных визуальных элементов из раздела AppSource,


администратор Power BI может добавить некоторые корпоративные эле-
202    Глава 3. Визуализация данных

менты визуализации, которые вы можете найти на вкладке Моя органи-


зация (My organization).

Из файла
В качестве альтернативы AppSource вы можете импортировать визуаль-
ные элементы в Power BI напрямую из файлов с расширением PBIVIZ од-
ним из следующих двух способов:

■■ на вкладке Отчет (Report) в левой части окна перейдите на верхнюю


вкладку Вставка (Insert) и в выпадающей кнопке Другие визуаль-
ные элементы (More visuals) выберите вариант Из моих файлов
(From my files);
■■ нажмите на кнопку с тремя точками в конце списка элементов на
панели Визуализации (Visualizations) и выберите пункт Импорт
визуального элемента из файла (Import visual from a file).
В обоих случаях перед запуском процедуры импорта вам может быть по-
казано предупреждение, отображенное на рис. 3.15.

Рис. 3.15. Импорт настраиваемого визуального элемента

Для загрузки элемента визуализации нажмите на кнопку Импортиро-


вать (Import). Вы можете также отказаться от демонстрирования вам пред-
упреждения в будущем, установив флажок Больше не показывать это
окно (Don’t show this dialog again).
После загрузки визуального элемента из AppSource или из файла он бу-
дет доступен на панели Визуализации (Visualizations).

Настройка условного форматирования


Некоторые свойства форматирования визуальных элементов могут быть
настроены на основании определенного условия. Иначе эта процедура на-
зывается форматированием на основании выражения.
Если свойство может быть настроено на основании выражения, рядом
с ним на панели вы увидите кнопку fx, показанную на рис. 3.16 примени-
тельно к цвету шрифта.
Настройка условного форматирования    203

ПРИМЕЧАНИЕ. Условное форматирование


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

Рис. 3.16. Кнопка условного форматирования

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


на рис. 3.17.

Рис. 3.17. Опции условного форматирования

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


от настраиваемого свойства. Например, при настройке цвета вы увидите
следующие варианты в выпадающем списке Форматировать по (Format
by):
■■ Цветовая шкала (Color scale): подходит для непрерывных цветовых
градиентов. Вы можете выбрать поле, на основании которого будет
устанавливаться цвет элемента. Также вам доступен ввод значений
для минимума и максимума шкалы и выбор соответствующих цве-
204    Глава 3. Визуализация данных

тов. Если вам нужно, чтобы был центральный цвет, установите фла-
жок Расхождение (Diverging) и задайте соответствующее значение;
■■ Правила (Rules): этот выбор подходит для дискретных цветов, без
градиента. Как и в случае с цветовой шкалой, вы можете выбрать
поле, на основании которого будет устанавливаться цвет элемента.
Затем вы можете присвоить цвета диапазонам значений, конкрет-
ным значениям или пустым значениям;
■■ Значение поля (Field value): если у вас есть поле, возвращающее
значение для цвета, вы можете воспользоваться этой опцией. Зна-
чение цвета при этом может возвращаться в любом из следующих
форматов:
• трех-, шести- или восьмизначный шестнадцатеричный код по
примеру #ABC123;
• значение RGB или RGBA, например RGB(10, 20, 30);
• значение HSL или HSLA, например HSLA(10, 50 %, 50 %, 0.75);
• название цвета, например red или green.
При условном форматировании других элементов, не относящихся к
цвету, убедитесь, что указанное поле возвращает значение в ожидаемом
формате.
Не все свойства, форматируемые условно, будут поддерживать все вари-
анты в списке Форматировать по (Format by). К примеру, при формати-
ровании названия элемента вам будет доступен только вариант Значение
поля (Field value), поскольку название может быть исключительно тексто-
вым.
Если вы хотите удалить правила условного форматирования для свой-
ства, нажмите на соответствующую кнопку справа от свойства.

Применение срезов и фильтров


Одной из ключевых особенностей Power BI является возможность приме-
нять фильтры к отчетам и видеть мгновенные изменения. Для наложения
динамических фильтров предусмотрено два инструмента:
■■ срезы;
■■ панель фильтров.

Срезы
Срез (slicer) представляет собой визуальный элемент, с помощью кото-
рого можно накладывать фильтры на другие визуальные элементы. Важно
отметить, что в срезах для фильтрации данных могут применяться только
существующие столбцы. При этом вы можете настроить срез в зависимо-
сти от типов данных используемых столбцов.
Любой срез может быть отражен как список (List) или как раскрывающий-
ся список (Dropdown). К обоим этим видам может быть добавлена строка
Применение срезов и фильтров    205

поиска – для этого достаточно в правом верхнем углу среза нажать на кноп-
ку с тремя точками и выбрать пункт Поиск (Search). Это бывает особенно
полезно, когда у вас в срезе много элементов. Также вы можете управлять
функционалом среза, перейдя на панели Формат (Format) в раздел Эле-
менты управления выбором (Selection controls). Здесь вы можете:

■■ установить для среза единичный выбор (single selection);


■■ указать, потребуется ли нажатие на клавишу Ctrl для множественно-
го выбора (multiple selections);
■■ управлять показом опции Выбрать все (Select all).
Вы можете также создать иерархический срез (Hierarchy slicer) с исполь-
зованием нескольких столбцов из одной или множества связанных таблиц.
Неиерархические срезы-списки могут иметь вертикальную (по умолча-
нию) или горизонтальную ориентацию.
Кроме того, срезы, отображающие числовые значения, могут быть выве-
дены в следующих форматах:

■■ Между (Between): устанавливает нижнюю и верхнюю границы зна-


чений включительно;
■■ Меньше или равно (Less than or equal to): устанавливает верхнюю
границу значений включительно;
■■ Больше или равно (Greater than or equal to): устанавливает нижнюю
границу значений включительно.

Срез по столбцу с типом Дата может быть отображен в следующих фор-


матах:

■■ Между (Between): устанавливает начальную и конечную даты для


значений включительно;
■■ До (Before): устанавливает конечную дату для значений включитель-
но;
■■ После (After): устанавливает начальную дату для значений включи-
тельно;
■■ Относительная дата (Relative Date): позволяет выбрать любое коли-
чество периодов до или после текущей даты. Также позволяет филь-
тровать только текущий период;
■■ Относительное время (Relative Time): то же, что и Относительная
дата, но для составляющих времени, таких как минуты и часы.

На рис. 3.18 показаны разные варианты отображения срезов в визуали-


зации.
Чтобы очистить выбор в срезе, необходимо нажать на кнопку Снять вы-
деление (Clear selections) в виде ластика, появляющуюся в заголовке визу-
ального элемента при наведении мышью.
206    Глава 3. Визуализация данных

В срезе вы имеете возможность фильтровать значения. Для этого нуж-


но применить фильтр уровня визуального элемента на панели Фильтры
(Filters) так, как показано ниже.

Рис. 3.18. Срезы

ПРИМЕЧАНИЕ. Игнорирование среза в визуальном элементе


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

Панель фильтров
Помимо срезов вы можете применять фильтры, используя панель Филь-
тры (Filters) в правой части окна, имеющую три секции:
■■ Фильтры для этого визуального элемента (Filters on this visual):
фильтры, добавленные в эту область, будут применяться только
к  выб­ранному элементу визуализации, и эта область будет видна
только при выделении какого-либо визуального элемента. В этом
фильтре можно использовать как меры, так и столбцы. Поля, добав-
ленные на панель Визуализации (Visualizations) для выбранного
элемента, появятся в фильтре автоматически;
■■ Фильтры на этой странице (Filters on this page): эти фильтры при-
меняются ко всем визуальным элементам на текущей странице. При
этом сделать так, чтобы элементы игнорировали выбор в этом филь-
тре, невозможно, и в нем можно использовать только столбцы;
■■ Фильтры на всех страницах (Filters on all page): эти фильтры при-
меняются ко всем визуальным элементам на всех страницах в отче-
те. Как и в случае с фильтрами уровня страницы, сделать так, чтобы
элементы игнорировали выбор в этом фильтре, невозможно, и в нем
можно использовать только столбцы.
Применение срезов и фильтров    207

Панель Фильтры показана на рис. 3.19.


Сами фильтры на панели выводятся в виде карто-
чек фильтров. При этом карточки с установленными
фильтрами отображаются серым цветом. На рис. 3.19
фильтр по полю Sales Territory имеет серый фон, по-
скольку мы ограничили выбор только одним элемен-
том, а именно Far West. В фильтре по столбцу Color
выбор не установлен, поэтому фон этого элемента
остался белым.
Поля на панель Фильтры можно добавить одним
из двух способов:
■■ перенести из панели Поля (Fields) в нужную
секцию на панели Фильтры;
■■ щелкнуть правой кнопкой мыши на поле на
панели Поля и в выпадающем пункте меню
Добавить к фильтрам (Add to filters) выбрать
нужную секцию.
Рис. 3.19. Панель
Вы можете применить простую фильтрацию (Basic
Фильтры
filtering) к любому столбцу, отображаемому в срезе
при помощи списка. Также вы можете установить флажок Нужно выбрать
один элемент (Require single selection), если хотите, чтобы пользователь
указывал только один элемент из фильтра.
Что касается расширенной фильтрации (Advanced filtering), вы будете ви-
деть опции в зависимости от типа данных выбранных полей. Например,
для полей типа Дата и время вы можете фильтровать как относительный,
так и статический период – например, отобрать значения за две последние
недели. Для текстовых столбцов вы можете фильтровать значения по стро-
ковым вхождениям.
Как и в срезах, текущий выбор в карточке фильтра может быть снят по
нажатию на кнопку Очистить фильтр (Clear filter), которая становится
видимой при наведении мышью на карточку. Также в этот момент будут
отображены следующие кнопки:

■■ Заблокировать фильтр (Lock filter): блокирует текущее выделение


элементов в фильтре, чтобы пользователь не мог изменить его. Для
разблокировки фильтра необходимо нажать на кнопку Фильтр за-
блокирован (Filter locked);
■■ Скрыть фильтр (Hide filter): позволяет скрыть карточку фильтра от
пользователей отчета;
■■ Удаление фильтра (Remove filter): удаляет из панели выбранную
карточку фильтра. Эта кнопка недоступна для полей, используемых
в визуальных элементах.
208    Глава 3. Визуализация данных

ПРИМЕЧАНИЕ. Блокировка и скрытие фильтров


Блокировка и скрытие фильтров работают только при просмотре опу-
бликованного отчета в службе Power BI. О навыках, необходимых для
работы со службой Power BI, мы поговорим в главе 5.

ПРИМЕЧАНИЕ. Фильтрация карточек фильтра


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

Вы можете осуществлять поиск нужных фильтров на панели Фильтры


так же точно, как ищете данные на панели Поля. Также вы можете сорти-
ровать и переопределять порядок следования карточек на панели.
Чтобы узнать, какие фильтры в данный момент влияют на конкретный
визуальный элемент, наведите мышью на иконку фильтра (воронка) в за-
головке интересующего вас элемента, как показано на рис. 3.20.

Рис. 3.20. Фильтры и срезы, влияющие на визуальный элемент

Добавление визуальных элементов


R и Python
Использование визуальных элементов R и Python может оказаться очень
серьезным подспорьем для отчета только со стандартными элементами
визуализации. Вы можете создавать элементы с помощью R или Python
только в среде Power BI Desktop, но для этого соответствующие языки
должны быть установлены на вашем компьютере.
Впервые выбирая визуальные элементы R или Python на панели Визу-
ализации (Visualizations), вы увидите диалоговое окно, отображенное на
рис. 3.21.
Добавление визуальных элементов R и Python     209

Рис. 3.21. Включение визуальных элементов сценария

После нажатия на кнопку Включить (Enable) будет создан визуальный


элемент в рабочей области страницы и откроется редактор скриптов, как
показано на рис. 3.22.

Рис. 3.22. Визуальный элемент Python и редактор скриптов

ПРИМЕЧАНИЕ. Установка R и Python и следование примерам


В экзамене не предусмотрена проверка способностей по установке
языков R и Python. Таким образом, в этой книге мы будем отталки-
ваться от того, что необходимые движки у вас уже установлены. Если
вам необходимо инсталлировать R, вы можете загрузить установоч-
ные пакеты с сайта CRAN по адресу https://cran.r-project.org. Для уста-
новки Python необходимо обратиться к официальному репозиторию
по адресу www.python.org/downloads. Разница между добавлением ви-
зуальных элементов R и Python невелика, так что мы ограничимся
демонстрацией примера на Python.
210    Глава 3. Визуализация данных

Для создания визуализации вам сначала необходимо добавить нужные


поля. Давайте создадим визуальный элемент Python в модели данных Wide
World Importers с добавлением следующих полей:
■■ Buying Group из таблицы Customer;
■■ Profit из таблицы Sale;
■■ Quantity из таблицы Sale;
■■ Unit Price из таблицы Sale.
После добавления полей поместите код, приведенный ниже, в открыв-
шийся редактор скриптов Python:

import matplotlib.pyplot as plt


import seaborn as sns
dataset = dataset.fillna("Other")
p = sns.pairplot(dataset, hue="Buying Group", palette="husl")
p._legend.remove()
plt.legend(loc="best", title="Buying Group")
plt.tight_layout()
plt.show()

Это позволит построить визуализацию, показанную на рис. 3.23.

Рис. 3.23. Диаграмма Python


Настройка страницы отчета    211

ПРИМЕЧАНИЕ. Сопроводительные файлы


Визуальный элемент Python можно увидеть в файле 3.1.7 Add an R or
Python visual.pbix из папки с сопроводительными файлами.

Для вывода визуализации элемент Python должен возвращать изображе-


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

ПРИМЕЧАНИЕ. Поддерживаемые пакеты


Хотя вы можете пользоваться любыми пакетами и библиотеками
во время локальной разработки визуальных элементов в Power BI
Desktop, не все пакеты будут поддерживаться во время публикации
отчета в службе Power BI. Вы можете запросить поддержку новых
пакетов, но в этом отношении существуют некоторые ограничения,
описанные по приведенным ниже ссылкам. Чтобы посмотреть спи-
сок поддерживаемых пакетов R, обратитесь к разделу «Создание
визуальных элементов с помощью пакетов R в службе Power BI»
по адресу https://docs.microsoft.com/ru-ru/power-bi/connect-data/service-r-
packages-support. По библиотекам Python вся информация есть в раз-
деле «Создание визуальных элементов с помощью пакетов Python
в службе Power BI» по адресу https://docs.microsoft.com/ru-ru/power-bi/
connect-data/service-python-packages-support.

Настройка страницы отчета


Вы можете получить доступ к различным свойствам страницы, сняв вы-
деление со всех элементов визуализации и перейдя на вкладку Формат
(Format) на панели Визуализации. Здесь вы увидите следующие разделы:
■■ Сведения страницы (Page information): в этом разделе можно из-
менить имя страницы, а также разрешить странице выступать в
качестве всплывающей подсказки в элементах визуализации или
использоваться в элементах Вопросы и ответы. В этом случае вы
сможете задать для страницы альтернативные имена, подобные си-
нонимам для полей;
■■ Размер страницы (Page size): здесь вы можете выбрать один из за-
готовленных макетов для вашей страницы или задать свои собствен-
ные размеры в пикселях. На выбор вам будут представлены следую-
щие размеры:
212    Глава 3. Визуализация данных

• 16:9 (1280 на 720 пикселей);


• 4:3 (960 на 720 пикселей);
• Letter (816 на 1056 пикселей);
• Подсказка (320 на 240 пикселей).
■■ Фон страницы (Page background): в этом разделе вы можете задать
цвет фона страницы и прозрачность. Также вы можете выбрать в ка-
честве фона изображение со своей прозрачностью и способом впи-
сывания:
• Нормальный (Normal): изображение размещается в своем ис-
ходном размере;
• По размеру (Fit): изображение растягивается до размеров
страницы без сохранения пропорций;
• Заливка (Fill): изображение растягивается до касания границ
страницы с сохранением пропорций.
■■ Выравнивание страницы (Page alignment): вы можете установить
вертикальное выравнивание страницы сверху (Top) или по середине
(Middle);
■■ Фоновый рисунок (Wallpaper): этот раздел похож на раздел Фон
страницы, за исключением того, что учитывается также область за
пределами страницы. Данный раздел может оказаться полезным,
когда вы встраиваете отчет, а его размеры не соответствуют выбран-
ной области. В этом случае вы увидите фоновый рисунок за грани-
цами отчета;
■■ Область фильтра (Filter pane): здесь вы можете задавать различные
параметры отображения панели фильтров, включая цвет и размер
шрифтов;
■■ Карточки фильтра (Filter cards): в дополнение к панели фильтров
вы также можете форматировать карточки фильтра. При этом допу-
стимо настраивать отдельно доступные и примененные карточки.
Если вы обычно форматируете страницы определенным образом, вам
может быть удобно создать одну страницу со своим форматированием и
затем копировать ее, а не создавать новые страницы с нуля. Кроме того, у
компании может быть свое фирменное изображение, на фоне которого все
отчеты будут выглядеть единообразно.

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


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

не пришлось после его окончания долго и мучительно вносить все новые и


новые правки. Концентрирование на конкретных пользователях при раз-
работке отчета и соблюдение циклов обратной связи может положительно
сказаться на конечном результате.
Также вам стоит учитывать, что не все пользователи обладают одинаковым
уровнем технических знаний, так что вам необходимо соблюдать принципы
единообразия страниц. Например, если у вас есть похожие срезы на разных
страницах, разместите их в одном и том же месте, чтобы пользователю не
приходилось их долго искать. По той же причине желательно сохранять еди-
нообразие размеров и семейства используемых шрифтов в заголовках.
Избегайте размещения слишком большого объема информации на не-
больших по размеру визуальных элементах. Если у вас есть сложные эле-
менты, подумайте о том, чтобы разделить их на несколько и сгруппировать
по общей теме.
Также стремитесь доносить до пользователя важную информацию как
можно быстрее. Если ключевые цифры в отчете становятся доступными
только после определенного взаимодействия с ним, попробуйте разме-
стить их поближе к пользователю. Кроме того, важную информацию не
стоит показывать во всплывающих подсказках, поскольку есть пользова-
тели, не прибегающие в работе к помощи мыши.
Также полезно будет снабдить отчет полезной информацией, включая
подсказки по навигации и сведения о последнем обновлении данных. Регу-
лярно проверяя отчеты на предмет их удобочитаемости и обновляя опции
форматирования при поступлении новых данных, вы сможете облегчить
работу с ними конечным пользователям.
Важно думать о том, как сделать отчеты доступными для работы пользо-
вателям, включая тех, у кого есть нарушения зрения и другие физические
отклонения. Существует несколько способов облегчить работу пользовате-
лям без необходимости переделывать отчет целиком:
■■ имена страниц, заголовки и метки;
■■ маркеры;
■■ альтернативный текст;
■■ порядок табуляции;
■■ тема отчета и выбор цвета.

Имена страниц, заголовки и метки


Заголовки визуальных элементов и имена страниц помогают пользова-
телям лучше ориентироваться в отчете. Старайтесь по максимуму избегать
использования жаргона или аббревиатур в этих элементах, поскольку но-
вые и внешние пользователи могут быть просто не знакомы с вашей тер-
минологией. Например, вместо того чтобы писать сокращенно «ПГ», лучше
потрудиться и написать полностью «Предыдущий год», а вместо безликого
слова «Сумма» лучше вставить полное название показателя, с которым точ-
но знакомы все ваши пользователи.
214    Глава 3. Визуализация данных

Вы должны гарантировать максимальную доступность и понятность ва-


ших отчетов, для чего необходимо снабдить диаграммы очевидными мет-
ками и подписями осей. Если вы активно используете метки и все точки
данных отмечены, подумайте о том, чтобы вовсе избавиться от осей. В этом
случае их наличие не добавит диаграмме ценности.
При форматировании меток данных вы можете выводить их только для
определенных мер, выполнив соответствующие настройки на панели Фор-
мат (Format). Также для облегчения восприятия отчета вы можете разме-
стить метки над точками данных или под ними – это может быть удобно,
если на графике отображаются сразу несколько линий.

Маркеры
Если вы используете разные цвета для обозначения разных рядов дан-
ных, подумайте о том, чтобы вместо этого выбирать маркеры разной фор-
мы, – в конце концов не все люди воспринимают цвета одинаково. Вы може-
те включить отображение маркеров для графиков, диаграмм с областями,
комбинированных и точечных диаграмм. В области Фигуры (Shapes) на
вкладке Формат вы можете включить показ маркеров для диаграммы и
выбрать их цвет, форму и размер.

Альтернативный текст
Как мы уже упоминали ранее, вы можете настроить альтернативный
текст для визуальных элементов в секции Общие (General) на панели Фор-
мат, когда элемент выбран. Альтернативный текст будет произноситься
экранным диктором у тех пользователей, которые прибегают к его помо-
щи.
Рекомендуется добавлять альтернативный текст ко всем визуальным
элементам, не являющимся декоративными, чтобы пользователи понима-
ли, что вы хотите продемонстрировать, даже не видя самой визуализации.
Альтернативный текст должен содержать информацию, которую поль-
зователь должен понять из отчета. Выносить отдельно конкретную точку
данных может быть рискованно, поскольку пользователь может применять
собственные фильтры к визуальным элементам в Power BI. Таким образом,
лучшим вариантом для динамического выделения важных выводов может
стать условное форматирование.

Порядок табуляции
Некоторые пользователи могут выполнять навигацию по отчетам при
помощи клавиатуры. А установленный по умолчанию порядок перехода
по элементам может не совпадать с ожидаемым. Для изменения порядка
табуляции необходимо, находясь на вкладке Отчет (Report) в левой час­
ти окна, перейти на верхнюю вкладку Представление (View), нажать на
кнопку Выбор (Selection) и открыть раздел Последовательность перехо-
да (Tab order).
Настройка специальных возможностей в отчетах    215

ПРИМЕЧАНИЕ. Порядок слоев


Порядок слоев (layer order) визуальных элементов на странице, на-
страиваемый на панели Выбор (Selection), определяет, какой из эле-
ментов будет находиться на переднем плане, а какой на заднем при
их наложении друг на друга. Порядок слоев никак не соотносится с
последовательностью перехода – это совершенно разные концепции.

Вы можете изменить последовательность перехода визуальных элемен-


тов на панели Выбор двумя способами:
■■ перетаскивая элементы визуализации внутри списка мышью;
■■ выделяя элементы и нажимая кнопки вверх и вниз.

Рекомендуется скрывать декоративные элементы вроде фигур в поряд-


ке табуляции. Чтобы сделать это, нажмите на порядковый номер элемента
в списке слева от него. На рис. 3.24 показан список перехода со скрытым
элементом Shape.

Рис. 3.24. Последовательность перехода на панели Выбор

После скрытия в списке перехода элемент будет недоступен для выбора


с помощью клавиатуры, что облегчит навигацию по отчету.

Тема отчета и выбор цвета


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

ПРИМЕЧАНИЕ. Степень контрастности и выбор цветов


В интернете существует множество инструментов для выбора цве-
товой гаммы с учетом степени контрастности цветов. Один из них –
Accessible Colors – можно найти по адресу https://accessible-colors.com.
216    Глава 3. Визуализация данных

Одни и те же комбинации цветов могут по-разному считываться людь-


ми в зависимости от их восприятия цвета. Например, вам стоит избегать
использования одновременно красного и зеленого цветов на одной диа-
грамме, если вы хотите, чтобы у большинства пользователей не возникало
проблем с цветовым восприятием отчета. Есть и другие нежелательные со-
четания цветов, и при выборе цветовой гаммы всегда необходимо прове-
рять с помощью специальных инструментов, является ли ваш выбор при-
емлемым для людей с ограниченными возможностями.
В Power BI предусмотрено несколько определенных заранее тем, которые
можно видеть в группе Темы (Themes) на вкладке Представление (View).
У вас также есть возможность создать свою тему и импортировать ее для
облегчения построения отчетов.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Специальные возможности


в Power BI
Если вы хотите узнать больше о создании отчетов со специальными
возможностями в Power BI, включая иллюстрации и примеры, обра-
титесь в разделу «Создание отчетов со специальными возможностя-
ми Power BI» по адресу https://docs.microsoft.com/ru-ru/power-bi/create-
reports/desktop-accessibility-creating-reports.

Настройка автоматического обновления


страниц
При использовании режима хранения DirectQuery бывает удобно, чтобы
ваши отчеты обновлялись автоматически для отражения наиболее акту-
альных данных. И особенно важно это при работе с информацией в режи-
ме, приближенном к реальному времени, – например, при отслеживании
показателей датчиков или работе с потоковыми данными.
Вы можете активировать автоматическое обновление страниц, уста-
новив переключатель в разделе Обновление страницы (Page refresh) на
вкладке Формат (Format) в режиме просмотра отчета. После этого Power
BI будет производить автоматическое обновление визуальных элементов
на странице с частотой, зависящей от заданных вами установок. Power BI
поддерживает два типа автоматического обновления страницы: с фикси-
рованным интервалом и с обнаружением изменений.

ВАЖНО. Автоматическое обновление страниц в службе Power BI


Чтобы автоматическое обновление страниц работало в службе Power
BI, администратор клиента (tenant administrator) должен активиро-
вать эту настройку. Обнаружение изменений требует наличия лицен-
зии Premium.
Настройка автоматического обновления страниц    217

Фиксированный интервал
Иногда бывает необходимо производить обновление визуальных эле-
ментов с заранее установленной периодичностью – например, раз в 30 с.
Для этого в выпадающем списке Тип обновления (Refresh type) вам нуж-
но выбрать пункт Автоматическое обновление страницы (Auto page
refresh) и установить фиксированный интервал (fixed interval) в секундах,
минутах, часах или днях. Такой тип обновления подходит для целого ряда
сценариев, но при этом он может приводить к неоправданно высокой на-
грузке на сервер, поскольку обновления будут производиться даже тогда,
когда изменений в источнике не было.
Вы также можете нажать на кнопку Показать подробности (Show
details) для просмотра текущей частоты обновления страницы и времени
последнего обновления. При работе в Power BI под своей учетной записью
вы можете видеть, включена ли эта опция администратором клиента и ка-
кой задан минимальный интервал.
Фиксированный интервал обновлений настраивается для каждой стра-
ницы отдельно. На рис. 3.25 показаны установки, требующиеся для обнов-
ления страницы с периодичностью в 10 с.

Рис. 3.25. Обновление страницы каждые 10 с

Обнаружение изменений
Режим обнаружения изменений (change detection) может оказаться более
эффективным, по сравнению с фиксированным интервалом обновления
страниц, поскольку в этом случае визуальные элементы будут обновляться
только в случае изменения исходных данных. В этом режиме происходит
отслеживание состояния меры – если ее значение изменилось с момента
последнего обновления данных, необходимо актуализировать элементы
визуализации на странице.
Вы можете выбрать одну меру для модели данных, которая будет исполь-
зоваться для обнаружения изменений. В отличие от режима с фиксирован-
218    Глава 3. Визуализация данных

ным интервалом, в котором настройка обновления для каждой страницы


в отчете производится отдельно, в режиме обнаружения изменений допу-
стимо определять лишь одну меру для модели. При этом вы можете ис-
пользовать этот режим для отдельных страниц в отчете, а для остальных
страниц выбрать фиксированный интервал.
Для установки режима обнаружения изменений в качестве приори-
тетного для страницы выберите в выпадающем списке Тип обновления
(Refresh type) пункт Обнаружение изменений (Change detection).
Затем вам необходимо задать меру для отслеживания. Для этого нажми-
те на кнопку Добавить обнаружение изменений (Add change detection)
в разделе Обновление страницы (Page refresh). Также вы можете нажать
на кнопку Обнаружение изменений (Change detection) на вкладке Мо-
делирование (Modeling) или щелкнуть правой кнопкой мыши по полю на
панели Поля (Fields) и выбрать пункт Обнаружение изменений (Change
detection). На рис. 3.26 показаны допустимые опции для выбора.

Рис. 3.26. Обнаружение изменений

При выборе меры для отслеживания можно задать как существующую


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

■■ Количество (Count);
■■ Количество уникальных (Count (Distinct));
■■ Минимум (Minimum);
■■ Максимум (Maximum);
■■ Сумма (Sum).

В дополнение к мере вам необходимо выбрать, как часто Power BI будет


отслеживать изменение меры в секундах, минутах или часах.
После окончания настройки параметров обновления нажмите на кнопку
Применить (Apply).

Создание отчетов с разбивкой на страницы


Хотя отчеты, создаваемые в Power BI Desktop, можно распечатывать, в
большинстве случаев пользователи работают с ними в онлайне, используя
службу Power BI или мобильное приложение. Традиционно отчеты фор-
матируются для комфортного восприятия на экране компьютера или мо-
бильного устройства, и зачастую разные страницы в отчете служат разным
целям.
При этом существуют сценарии, в которых вывод отчета на печать и ис-
пользование в качестве раздаточного материала просто незаменимы. На-
пример, кому-то может понадобиться распечатать отчет по эффективно-
сти продаж с выводом каждого региона на отдельной странице и раздать
сформированные пакеты документов участникам собрания. В подобных
ситуациях без отчетов с разбивкой на страницы (paginated report) обойтись
будет сложновато. Создавать такие отчеты можно с использованием Power
BI Report Builder.

ПРИМЕЧАНИЕ. Установка Power BI Report Builder


Вы можете загрузить и установить Power BI Report Builder из Центра
загрузки Microsoft по адресу https://aka.ms/pbireportbuilder.

Как и в случае с традиционными отчетами Power BI, их постраничные


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

ПРИМЕЧАНИЕ. Загрузка файлов в формате языка определения


отчетов
Чтобы иметь возможность скачивать файлы в формате языка опреде-
ления отчетов (Report definition language – RDL) из службы Power BI,
ваш набор данных должен быть опубликован. Подробнее о публика-
ции в службе Power BI мы будем говорить в главе 5.
220    Глава 3. Визуализация данных

Для создания отчета с разбивкой на страницы на основе набора данных


Power BI откройте рабочую область, наведите мышью на набор данных и
в разделе Дополнительные параметры (More options) выберите пункт
Скачать RDL-файл (Download the .rdl). При открытии файла RDL в Power BI
Report Builder вы увидите пустую рабочую область с шаблонным текстом,
как показано на рис. 3.27.

Рис. 3.27. Power BI Report Builder

Файл RDL будет содержать в себе источник, представляющий тот набор


данных, из которого вы загрузили файл. Для создания отчета вам необхо-
димо добавить один или несколько наборов данных в ваш отчет с разбив-
кой на страницы. После завершения вы можете нажать на кнопку Опуб­
ликовать (Publish) на вкладке Главная (Home) и выбрать необходимую
рабочую область для публикации. Обратите внимание, что публиковать
можно только в рабочие области Premium.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Создание отчетов с разбивкой


на страницы
Детализированное описание создания отчетов с разбивкой на стра-
ницы выходит за рамки данной книги. Подробная пошаговая ин-
струкция по этой теме содержится в разделе «Руководство. Созда-
ние отчета с разбивкой на страницы и его отправка в службу Power
BI» по адресу https://docs.microsoft.com/ru-ru/power-bi/paginated-reports/
paginated-reports-quickstart-aw.
Управление плитками на дашборде    221

Навык 3.2. Создание дашбордов


На протяжении большей части книги мы работали с отчетами в Power BI,
построенными на основе одного набора данных. Это является и главным
ограничивающим фактором отчетов – они могут содержать информацию
только из одного набора. Но существуют различные сценарии, в которых
вам просто необходимо донести до пользователей сведения, базирующиеся
на разных наборах данных. И в этом вам могут помочь панели мониторинга,
или дашборды (dashboard).
Дашборды в Power BI располагаются на одном экране и при этом могут
содержать в себе визуальные элементы из разных отчетов, в основе кото-
рых будут лежать разные наборы данных. Дашборды могут создаваться ис-
ключительно в службе Power BI и обладают особенностями, не свойствен-
ными для отчетов, –  например, в них могут быть оповещения о данных.
Визуальные элементы, входящие в состав дашборда, именуются плитками
(tiles).

Основные составляющие навыка:


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

Управление плитками на дашборде


Плитка (tile) на дашборде может показывать закрепленный (pinned) визу-
альный элемент или любой другой контент, включая текст, видео или ги-
перссылки на другие отчеты для облегчения навигации и извлечения ана-
литических выводов пользователям.
Вы можете закреплять плитки из разных источников:
■■ из отчета;
■■ с другого дашборда;
■■ из рабочей книги Excel;
■■ из быстрой аналитики (Quick insights);
■■ из результатов визуального элемента Вопросы и ответы;
■■ из отчета с разбивкой на страницы.

Чтобы закрепить элемент визуализации из отчета, наведите на него


мышью и нажмите на кнопку Закрепить визуальный элемент (Pin visual)
в заголовке. Power BI предложит вам указать дашборд, на котором вы хо-
222    Глава 3. Визуализация данных

тите закрепить элемент. Вы можете выбрать существующий дашборд или


создать новый, как показано на рис. 3.28.

Рис. 3.28. Опции закрепления элемента на дашборде

Для закрепления визуального элемента на дашборде нажмите на кнопку


Закрепить (Pin).

ПРИМЕЧАНИЕ. Темы
Если в вашем отчете используется особая тема, при закреплении вам
будет также предоставлен выбор между сохранением темы из отчета
и замещением ее темой из дашборда. Мы поговорим подробнее о
темах дашбордов далее в этой главе.

Помимо закрепления визуальных элементов вы можете также нажать на


выпадающую кнопку Изменить (Edit) и выбрать пункт Добавить плитку
(Add tile), чтобы разместить на дашборде пустую плитку, которая может
содержать:

■■ Веб-содержимое: с поддержкой HTML для встраивания контента;


■■ Изображение: для публично доступных изображений. Доступ, тре-
бующий аутентификации, и загрузка изображений не поддержива-
ется;
■■ Текстовое поле: для ввода статического текста с возможностью
форматирования;
■■ Видео: для видео, загруженных на платформы YouTube или Vimeo.
Видеофрагменты могут быть запущены непосредственно в дашбор-
де, не покидая страницы;
■■ Пользовательские данные потоковой передачи: вы можете до-
бавлять потоковые данные с источниками в API, Azure Stream или
PubNub.
Настройка мобильного отображения    223

Для редактирования сведений о плитке на дашборде наведите на нее


мышью и в выпадающей кнопке Дополнительные параметры (More
options) выберите пункт Изменить сведения (Edit details). На рис. 3.29 по-
казан список сведений о выбранной плитке.

Рис. 3.29. Сведения о плитке

Для каждой плитки вы можете изменить ее название и подзаголовок.


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

Настройка мобильного отображения


Отчеты в Power BI можно настраивать для комфортного отображения на
экране компьютера и мобильного устройства. Так же и у дашборда есть вари-
224    Глава 3. Визуализация данных

анты размещения визуальных элементов для просмотра через веб-браузер


и в мобильном представлении (этот режим также известен как режим ото-
бражения на телефоне). На рис. 3.30 показан пример дашборда в режиме веб.

Рис. 3.30. Дашборд в стандартном режиме отображения

По причине того, что такой вид может не подходить для мобильных


устройств, у вас есть возможность создать макет дашборда для отображе-
ния на устройствах с небольшим экраном, если вы обладаете правами на
его редактирование. Для создания мобильного макета выберите в выпада-
ющем меню Изменить (Edit) пункт Макет для мобильных приложений
(Mobile view). На рис. 3.31 показан редактор мобильного макета.

Рис. 3.31. Редактор режима мобильного макета


Конфигурирование оповещений о данных    225

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


дашборде путем их перетаскивания и изменения размера. Вы также можете
скрывать плитки в мобильном макете – для этого необходимо навести мышью
на плитку и нажать на кнопку Скрыть плитку (Hide tile). Чтобы добавить
плитку обратно, найдите ее на панели Открепленные плитки (Unpinned
tiles), наведите на нее и нажмите на кнопку Добавить плитку (Add tile).
Если ваш дашборд содержит множество плиток, вам, возможно, захочет-
ся в мобильном макете оставить лишь несколько из них. Для этого вы мо-
жете сначала скрыть все плитки, нажав на кнопку Открепить все плитки
(Unpin all tiles) в верхнем меню. После этого вы можете добавить на макет
нужные плитки по одной. Чтобы восстановить исходный вид макета, на-
жмите в верхнем меню на кнопку Сбросить плитки (Reset tiles).
Если хотите вернуться к виду для веб, выберите в выпадающем меню с
изображением телефона пункт Веб-макет (Web view).

Конфигурирование оповещений о данных


Power BI позволяет настраивать оповещения о данных (data alerts) на карточ-
ках, визуальных элементах отслеживания KPI и датчиках, закрепленных
на дашборде из отчетов. Для добавления оповещения наведите мышью на
плитку и в меню Дополнительные параметры (More options) выберите
пункт Управление оповещениями (Manage alerts). На открывшейся пане-
ли нажмите на кнопку Добавить правило генерации оповещений (Add
alert rule). На рис. 3.32 показаны доступные опции для оповещений.

Рис. 3.32. Опции оповещений


226    Глава 3. Визуализация данных

Установка Заголовка оповещения (Alert title) может быть полезна в си-


туациях, когда у вас предполагается наличие нескольких оповещений.
Также вы можете задать Условие (Condition) на предмет преодоления
определенного порогового значения и Максимальную периодичность
уведомлений (Maximum notification frequency) при том, что оповещения
вы будете получать только при изменении данных.
Оповещения будет видеть только пользователь, настроивший их, и при
этом они будут синхронизированы между службой Power BI и мобильным
приложением Power BI. По умолчанию вы также будете получать уведомле-
ния по электронной почте, но можете отказаться от этой опции, сняв фла-
жок Также уведомлять по почте (Send me email, too).
Для удаления оповещения необходимо нажать на кнопку Удаление пра-
вила оповещения (Delete alert rule), представляющую собой иконку с кор-
зиной, в правом верхнем углу панели. Если же вы хотите просто отключить
оповещение, не удаляя его, установите переключатель Активные (Active)
в положение Откл (Off).
Список настроенных оповещений в службе Power BI вы можете увидеть,
открыв в меню Настройки (Settings) раздел Оповещения (Alerts).

Использование визуального элемента


Вопросы и ответы
Как мы уже видели в главе 2, в Power BI есть визуальный элемент Вопро-
сы и ответы (Q&A), позволяющий задавать вопросы относительно ваших
данных на естественном языке. Этот элемент визуализации доступен как в
отчетах, так и на дашбордах.
Чтобы воспользоваться элементом Вопросы и ответы при работе с даш-
бордом, перейдите в поле Задайте вопрос о своих данных (Ask a question
about your data) и введите интересующий вас вопрос. На рис. 3.33 показан
результат простого использования этого элемента. Чтобы вернуться обрат-
но на дашборд, нужно нажать на кнопку Выйти из раздела вопросов и
ответов (Exit Q&A). Также вы можете сохранить результат на дашборде,
нажав на кнопку Закрепить визуальный элемент (Pin visual).
Если вам необходимо изменить результат, который вы закрепили на
дашборде, щелкните мышью на соответствующую плитку. После этого вы
сможете изменить свой вопрос и закрепить новый результат.

ПРИМЕЧАНИЕ. Улучшение результатов визуального элемента Воп­


росы и ответы
Если вы желаете улучшить результат обработки элемента визуали-
зации Вопросы и ответы, необходимо сделать это в наборе данных.
Обратитесь к навыку 2.2 Разработка модели данных для дополнитель-
ной информации.
Добавление темы дашборда    227

Рис. 3.33. Результат визуального элемента Вопросы и ответы

Добавление темы дашборда


Вы можете применять темы к дашборду подобно тому, как применяли их
к отчетам. Это бывает особенно полезно, если вы хотите прийти к едино-
образному виду на дашборде визуальных элементов, взятых из отчетов с
разными темами.
Для настройки темы дашборда выберите в выпадающем меню Изменить
(Edit) пункт Тема панели мониторинга (Dashboard theme). В открывшей-
ся панели вы можете выбрать из списка одну из предустановленных тем
или создать собственную. Например, на рис. 3.34 показан дашборд с вы-
бранной темой Адаптировано для людей с цветовой слепотой (Color-
blind friendly).

Рис. 3.34. Опции выбора темы для дашборда


228    Глава 3. Визуализация данных

Если из выпадающего списка выбрать вариант Пользовательский


(Custom), вы сможете настроить по своему желанию фоновое изображе-
ние, цвет фона, фон плитки, цвет шрифта плитки и ее прозрачность, как
показано на рис. 3.35.

Рис. 3.35. Опции настройки пользовательской темы для дашборда

Для установки фонового изображения вы должны использовать общедо-


ступный адрес в интернете, поскольку загрузка файлов не предусмотрена.
Созданную тему вы можете скачать на свой компьютер, нажав на кнопку
Скачать тему JSON (Download JSON theme).
Если вы хотите применить ранее созданную тему, можете воспользо-
ваться кнопкой Отправить тему JSON (Upload JSON theme).

ПРИМЕЧАНИЕ. Темы JSON


Структура темы для дашборда в формате JSON такая же, как и для
отчета. Более подробные сведения о формате этих файлов выходят
за рамки данной книги. Вы можете загрузить разнообразные темы из
библиотеки Power BI по адресу https://community.powerbi.com/t5/Themes-
Gallery/bd-p/ThemesGallery.

Закрепление динамической страницы отчета


на дашборде
Закрепленные визуальные элементы обладают парой существенных недо-
статков: они не могут взаимодействовать друг с другом при помощи пере-
крестной фильтрации, и закреплять элементы можно только по одному за
раз.
Закрепление динамической страницы отчета (live report page) на даш-
борде позволяет нивелировать оба недостатка. Вы сможете одновременно
Навык 3.3. Повышение удобства использования отчетов    229

закреплять на дашборде несколько визуальных элементов, которые приоб-


ретут свойства интерактивности.
Чтобы закрепить динамическую страницу отчета на дашборде, откройте
нужный вам отчет в службе Power BI и нажмите на кнопку Закрепить на
панели мониторинга (Pin to a dashboard) в верхнем меню. Power BI спро-
сит о том, на каком дашборде следует закрепить визуальные элементы, как
показано на рис. 3.36.

Рис. 3.36. Закрепление динамической страницы отчета

Нажатие на кнопку Закрепить динамическую страницу (Pin live) по-


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

Навык 3.3. Повышение удобства


использования отчетов
Удобство использования отчетов в Power BI можно значительно повысить,
воспользовавшись такими полезными средствами, как закладки, подсказ-
ки, инструменты навигации и интерактивности, о которых мы расскажем
в этом разделе. Собирая обратную связь от пользователей, стоит уделять
большое внимание удобству использования ваших визуальных инструмен-
тов. Реакция на такую обратную связь способна обозначить своеобразный
водораздел между просто хорошими дашбордами и лучшими.
Облегчить пользователю процесс извлечения важных сведений из от-
четов можно разными способами, включая сортировку данных, настройку
взаимодействия между визуальными элементами и детализацию.
230    Глава 3. Визуализация данных

Подобно дашбордам, отчеты также могут быть спроектированы для мо-


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

Основные составляющие навыка:


■■ настройка закладок;
■■ создание пользовательских подсказок;
■■ настройка и конфигурирование взаимодействий между визу-
альными элементами;
■■ настройка навигации по отчету;
■■ применение сортировки;
■■ синхронизация срезов;
■■ использование панели Выбор;
■■ применение детализации и кросс-фильтрации;
■■ углубление в данные с использованием интерактивных визу-
альных элементов;
■■ экспорт данных отчета;
■■ разработка отчетов для мобильных устройств.

Настройка закладок
Используя в Power BI закладки (bookmark), вы можете создать полноценную
историю о данных, помогая пользователю легче получить доступ к ключе-
вым выводам, а также показывать и скрывать определенные визуальные
элементы по нажатию на кнопку.
Хотя одной из определяющих особенностей Power BI является интерак-
тивность, иногда бывает полезно привлечь внимание пользователя к опре-
деленным элементам в ваших отчетах. Например, вы могли бы выделить
конкретный визуальный элемент с примененными к нему фильтрами для
демонстрации важного аналитического вывода.
Закладки в Power BI как раз для этого и предназначены – они позволяют
вам сохранить состояние страниц и переключаться между ними в режиме
презентации или путем организации ссылок. В закладках сохраняются:
■■ фильтры, включая перекрестные фильтры и выбор в срезах;
■■ текущая страница;
■■ видимость объектов;
■■ порядок сортировки;
■■ уровень детализации.
Чтобы создать закладку, необходимо перейти на вкладку Представле-
ние (View) и нажать на кнопку Закладки (Bookmarks). После установки
нужных вам фильтров и настройки внешнего вида страницы для заклад-
Настройка закладок    231

ки нажмите на кнопку Добавить (Add) на открывшейся панели Закладки


(Bookmarks). В результате на панели появится закладка с именем по умол-
чанию Закладка 1 (Bookmark 1). В дальнейшем вы можете переименовать ее
при помощи двойного щелчка мыши или нажав на кнопку Дополнитель-
ные параметры (More options) с тремя точками справа от имени заклад-
ки и выбрав пункт Переименовать (Rename). Также в этом контекстном
меню вы увидите следующие пункты:
■■ Обновить (Update): если вам необходимо обновить состояние за-
кладки, вы можете воспользоваться этим пунктом вместо того, что-
бы создавать закладку заново;
■■ Удалить (Delete): служит для удаления закладки;
■■ Группировать (Group): закладки можно объединять в группы, чтобы
не наводить беспорядок на панели. Например, вы можете сгруппи-
ровать свои закладки по страницам. Это может быть особенно полез-
но при наличии большого количества закладок;
■■ Данные (Data): этот флажок указывает на то, будут ли в закладке со-
хранены фильтры, сортировка и уровень детализации. По умолча-
нию эта опция включена. Отключение ее бывает полезно, когда вам
необходимо сохранить только видимость визуальных элементов, за
что отвечает флажок Отображение (Display);
■■ Отображение (Display): определяет, будет ли в закладке сохранена
видимость элементов визуализации. Может пригодиться, если вы
хотите только изменить фильтры при помощи вашей закладки, не
влияя на видимость элементов;
■■ Текущая страница (Current page): по умолчанию этот флажок вклю-
чен. Он определяет, будет ли при выборе закладки осуществляться
переход на страницу, где она была создана. Отключение этой опции
может быть удобно, если вы желаете изменить фильтр уровня отчета
без перехода на другую страницу;
■■ Все визуализации (All visuals): определяет, будет ли закладка при-
меняться ко всем визуальным элементам или только к выделенным.
По умолчанию закладки применяются ко всем элементам на стра-
нице;
■■ Выбранные визуализации (Selected visuals): вы можете создать
закладку и применить ее только к тем визуальным элементам, ко-
торые были выделены на момент ее создания. При этом элементы
вы можете выбирать как в рабочей области, так и на панели Выбор
(Selection). Важно отметить, что эту опцию нельзя применять к уже
созданным закладкам.
Видимость элементов, на которую ориентируется опция Отображение
(Display), может быть настроена на панели Выбор (Selection), о которой мы
подробнее поговорим далее в этой главе.
232    Глава 3. Визуализация данных

В закладке вы можете выделить один из элементов визуализации, щел-


кнув по кнопке Дополнительные параметры (More options) в его заго-
ловке и выбрав пункт В центре внимания (Spotlight). После этого данный
визуальный элемент будет обрамлен тенью, а оставшаяся область отчета
окажется затемненной. Вы можете наблюдать этот эффект на рис. 3.37.

Рис. 3.37. В центре внимания

На этом этапе вы можете создать закладку, нажав на кнопку Добавить


(Add) на панели Закладки (Bookmarks). Если вы уже создавали закладку до
этого, новая получит имя Закладка 2 (Bookmark 2) и т. д.
Для отмены эффекта выделения достаточно щелкнуть по любой другой
области в отчете или выбрать другой визуальный элемент на панели Вы-
бор.
После создания нескольких закладок вы можете менять их порядок на
панели путем перетаскивания мышью. При наличии большого количе-
ства закладок позаботьтесь о том, чтобы все они были названы понятны-
ми именами, а группы закладок были организованы по смыслу. Обратите
внимание, что на панели собраны закладки со всего отчета, а не только с
текущей страницы.
Вы можете перемещаться по закладкам на соответствующей панели, а
можете нажать на кнопку Вид (View) в верхней части панели, что приведет
к замене вкладок со страницами на вкладки с закладками. В идеале поря-
док закладок на панели должен быть осмысленным, поскольку некоторые
пользователи предпочитают перемещаться по закладкам при помощи кла-
виатуры.
Находясь в режиме Вид, также называемом режимом презентации, вы
можете закрыть или свернуть все панели, чтобы освободить достаточно
места для отчета. На рис. 3.38 показана полоса вкладок с закладками в ре-
жиме Вид.
Создание пользовательских подсказок    233

Рис. 3.38. Режим Вид

Для перехода в обычный режим необходимо нажать на кнопку Выход


(Exit) на панели закладок или на кнопку с крестом в правой части полосы
вкладок.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример с закладками можно увидеть в файле 3.3.1 Configure bookmarks.
pbix из папки с сопроводительными файлами.

Также вы можете использовать закладки для навигации внутри отчета.


Вопросов настройки навигации для отчета мы коснемся далее в этой главе.

Создание пользовательских подсказок


Большинство визуальных элементов в Power BI обладает собственными
встроенными всплывающими подсказками (tooltip), на которых выводятся
дополнительные сведения о выбранной точке данных. Но в дополнение к
стандартным подсказкам Power BI позволяет создавать для каждого эле-
мента свои собственные, которые помогут донести до пользователя вспо-
могательную информацию о данных и сэкономят пространство в отчете.
Пользовательская подсказка (custom tooltip) представляет собой обычную
страницу отчета, предназначенную для вывода при наведении мыши на
элемент. Данные на этой странице могут быть отфильтрованы для показа
информации, непосредственно относящейся к выбранной точке данных.
Перед тем как использовать страницу в качестве пользовательской под-
сказки, необходимо ее создать следующим образом.
234    Глава 3. Визуализация данных

1. На вкладке Отчет (Report) нажмите на кнопку Создать страницу


(New page) в виде знака плюс в конце полосы со вкладками.
2. Щелкните правой кнопкой мыши по вкладке созданной страницы и
выберите пункт Переименовать страницу (Rename page).
3. Введите новое имя, например Trend tooltip, и нажмите на клавишу
Enter.
4. Перейдите на вкладку Формат (Format) созданной страницы, рас-
кройте раздел Сведения страницы (Page information) и установите
переключатель Подсказка (Tooltip) в положение Вкл (On).
5. Оставаясь на панели Формат, раскройте раздел Размер страницы
(Page size) и в выпадающем списке Тип (Type) выберите вариант
Подсказка (Tooltip). Можно также установить собственные размеры
страницы.
6. Добавьте визуальный элемент, который должен отображаться в под-
сказке. В примере с Wide World Importers мы добавим график с выво-
дом меры Profit по годам (Year).
7. Щелкните правой кнопкой мыши по вкладке страницы Trend tooltip
и выберите пункт Скрыть страницу (Hide page).

На рис. 3.39 показана созданная нами страница подсказки.

Рис. 3.39. Страница Trend tooltip

Теперь вы можете назначить эту страницу в качестве подсказки для лю-


бого визуального элемента на ваш выбор.
Создание пользовательских подсказок    235

1. На другой странице создайте линейчатую диаграмму, показываю-


щую изменение показателя Profit по сотрудникам (Employee).
2. На вкладке Формат для этого элемента раскройте секцию Подсказ-
ка (Tooltip).
3. Убедитесь, что в выпадающем списке Тип (Type) стоит значение
Страница отчета (Report page).
4. В выпадающем списке Страница (Page) выберите страницу Trend
tooltip.
Теперь вы можете навести мышь на любой горизонтальный столбец
на диаграмме, после чего во всплывающем окне увидите страницу Trend
tooltip. На рис. 3.40 показана линейчатая диаграмма с пользовательской
подсказкой при наведении на столбец с сотрудником Арчером Лэмблом
(Archer Lamble).

Рис. 3.40. Страница Trend tooltip в качестве подсказки

Обратите внимание, что на подсказке Trend tooltip данные отфильтрова-


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

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример с созданной подсказкой можно увидеть в файле 3.3.2 Create
custom tooltips.pbix из папки с сопроводительными файлами.
236    Глава 3. Визуализация данных

Настройка и конфигурирование
взаимодействий между визуальными
элементами
Одной из определяющих особенностей Power BI является возможность
наст­ройки взаимодействия между визуальными элементами. К примеру,
вы можете выделить один элемент на линейчатой диаграмме, и на сосед-
ней столбчатой диаграмме автоматически произойдет выделение этого же
элемента. Такое поведение продемонстрировано на рис. 3.41.

Рис. 3.41. Перекрестное выделение в действии

На рис. 3.41 мы выбрали столбец, соответствующий прибыли (Profit) для


покупательской группы Tailspin Toys. При этом остальные столбцы на этой
диаграмме потускнели, а на соседнем визуальном элементе подсветились
части вертикальных столбцов, соответствующие выбранной покупатель-
ской группе. А именно мы видим значения количества (Quantity) по каждо-
му цвету (Color), относящиеся к группе Tailspin Toys. Такое поведение назы-
вается перекрестным выделением (cross-highlighting): выбор точки данных
на одном визуальном элементе приводит к динамической частичной под-
светке данных на остальных.
Для изменения этого поведения вы можете перейти на вкладку Формат
(Format) в главном меню, которая появится при выборе одного из столб-
цов на диаграмме, и нажать на кнопку Изменить взаимодействия (Edit
interactions). Если у вас на странице есть другие визуальные элементы, вы
заметите, что рядом с каждым из них появится ряд из трех кнопок:

■■ Фильтр (Filter): показывать только значения, относящиеся к вы-


бранной точке данных;
■■ Выделить (Highlight): выделять части данных, относящиеся к вы-
бранной точке данных;
■■ Нет (None): игнорировать все выделения.

Описанные кнопки и эффект от их применения можно видеть на рис. 3.42.


Настройка навигации по отчету    237

Рис. 3.42. Опции взаимодействия

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример со взаимодействием визуальных элементов можно увидеть в
файле 3.3.3 Configure interaction.pbix из папки с сопроводительными
файлами.

Чтобы скрыть кнопки взаимодействий, перейдите на вкладку Формат


(Format) в главном меню и нажмите на кнопку Изменить взаимодей-
ствия (Edit interactions) еще раз.
Не у всех типов визуальных элементов будут доступны все три кнопки
взаимодействий – у некоторых из них активными будут только две, напри-
мер Фильтр и Нет. Невозможно выделить часть данных на срезе или в кар-
точке. В этом случае действием по умолчанию будет фильтрация.

ПРИМЕЧАНИЕ. Взаимодействие по умолчанию


Выделение является видом взаимодействия между визуальными эле-
ментами по умолчанию. Чтобы сделать видом по умолчанию фильт­
рацию, откройте на вкладке Файл (File) пункт меню Параметры и
настройки (Options and settings) и выберите Параметры (Options).
В  открывшемся диалоговом окне в разделе Текущий файл (Current
file) откройте пункт Параметры отчетов (Report settings) и устано-
вите флажок Измените взаимодействие визуальных элементов по
умолчанию с перекрестного выделения на перекрестную фильтра-
цию (Change default visual interaction from cross highlighting to cross
filtering).

Настройка навигации по отчету


Помимо использования панели вкладок в отчете вы можете настроить
кнопки, фигуры и изображения таким образом, чтобы они вели к конкрет-
238    Глава 3. Визуализация данных

ным страницам или закладкам. Как мы уже говорили, обратная связь от ко-
нечных пользователей на самых ранних стадиях проектирования отчетов
позволит вам повысить удобство их использования в будущем. Настроить
навигацию в отчете можно, выполнив следующие шаги.
1. Выделите существующий элемент или добавьте новый, воспользо-
вавшись вкладкой Вставка (Insert).
2. На появившейся панели Форматировать фигуру установите пере-
ключатель Действие (Action) в положение Вкл (On).
3. Раскройте секцию Действие.
4. Выберите в выпадающем списке Тип (Type) вариант Перемещение
по страницам (Page navigation) или Закладка (Bookmark). В зави-
симости от выбранного пункта появится либо выпадающий спи-
сок Назначение (Destination) с перечнем страниц, либо Закладка
(Bookmark) с выбором закладки.
5. Выберите из списка нужную страницу или закладку.
Теперь вы можете с зажатой клавишей Ctrl щелкнуть мышью по настро-
енному на навигацию элементу и будете перенесены на соответствующую
страницу или закладку. С использованием этой техники вы можете настро-
ить полноценную навигацию по отчету на одной из страниц.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример с навигацией можно увидеть в файле 3.3.4 Configure navigation
for a report.pbix из папки с сопроводительными файлами.

ПРИМЕЧАНИЕ. Служба Power BI


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

Применение сортировки
При создании визуальных элементов Power BI старается применить наибо-
лее приемлемую сортировку. К примеру, гистограммы или столбчатые диа-
граммы по умолчанию сортируются по убыванию значений. Вы же можете
применить любую сортировку исходя из бизнес-требований.
Чтобы изменить способ сортировки (sorting) визуального элемента, на-
ведите на него мышью, в выпадающей кнопке Дополнительные пара-
метры (More options) раскройте пункт Сортировка (Sort by) и выберите
поле для сортировки. Для смены направления сортировки рядом есть два
соответствующих пункта: Сортировка по убыванию (Sort descending) и
Сортировка по возрастанию (Sort ascending).
Применение сортировки    239

Элемент визуализации Таблица (Table) предусматривает выполнение


сортировки одновременно по нескольким столбцам. В модели данных Wide
World Importers вы можете настроить такую сортировку следующий обра-
зом.

1. Создайте табличный визуальный элемент со следующими полями:


a) Year из таблицы Date с выбором типа агрегации Не суммиро-
вать (Don’t summarize);
b) Employee из таблицы Employee;
c) Profit из таблицы Sale с выбором типа агрегации Сумма (Sum).
2. Щелкните по заголовку столбца Year. Убедитесь, что стрелка в за-
головке показывает вверх, что символизирует сортировку по воз-
растанию. Если стрелка направлена вниз, щелкните по заголовку
еще раз.
3. Нажмите и удерживайте клавишу Shift.
4. Щелкните по заголовку столбца Profit. Добейтесь, чтобы стрелка в
заголовке указывала вниз. Если стрелка направлена вверх, щелкните
по заголовку еще раз.

Результат показан на рис. 3.43.

Рис. 3.43. Сортировка таблицы по двум полям

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример таблицы с сортировкой по нескольким полям можно увидеть
в файле 3.3.5 Apply sorting.pbix из папки с сопроводительными фай-
лами.
240    Глава 3. Визуализация данных

ПРИМЕЧАНИЕ. Сортировка по столбцу


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

Синхронизация срезов
Фильтры уровня отчета, о которых мы говорили ранее в этой главе, бывают
полезны при необходимости ограничить набор данных для всех страниц
в отчете, тогда как фильтры уровня страницы предназначены для отбора
информации в рамках конкретной страницы. Иногда же бывает необхо-
димо расположить в отчете фильтр, влияющий на несколько страниц, но
не на все. Несмотря на то что панель Фильтры (Filters) не предоставляет
возможностей для синхронизации фильтров между страницами, вы може-
те применить механизм синхронизации срезов, что позволит обойти это
ограничение.
При выполнении синхронизации срезов (sync slicers) выбор, сделанный
пользователем на одной странице, будет автоматически распространяться
на одну или несколько других страниц. Одним из способов синхронизации
срезов является копирование среза на другой странице.
1. Выберите срез на странице и нажмите сочетание клавиш Ctrl + C.
2. Перейдите на другую страницу и нажмите сочетание клавиш Ctrl + V.
3. На вопрос о синхронизации визуальных элементов, показанный на
рис. 3.44, ответьте нажатием кнопки Синхронизация (Sync).

Рис. 3.44. Синхронизация визуальных элементов

Также вы можете перейти на вкладку Представление (View) и нажать на


кнопку Синхронизировать срезы (Sync slicers), как показано на рис. 3.45.
Если вашего среза нет на других страницах, можете нажать на ссылку
Добавить и синхронизировать со всеми страницами (Add and sync with
all pages) или выбрать конкретные страницы, на которые необходимо до-
Синхронизация срезов    241

бавить срез. Флажок в колонке Синхронизация (Sync) позволяет добавить


срез на страницу, а флажок в колонке Видимый (Visible) отображает его.

Рис. 3.45. Панель синхронизации срезов

ПРИМЕЧАНИЕ. Скрытые срезы


Если добавить срез на страницу и не сделать его видимым, он останет-
ся скрытым, но по-прежнему будет влиять на фильтрацию элементов
на странице. Отображением визуального элемента можно управлять
на вкладке Выбор (Selection), речь о которой пойдет далее.

Обычно синхронизируются срезы, использующие одни и те же столбцы.


Но возможно также синхронизировать срезы на основе разных столбцов с
использованием групп синхронизации (sync group). Для этого необходимо в
разделе Дополнительные параметры (Advanced options) на панели Син-
хронизировать срезы (Sync slicers) ввести одинаковое имя группы для
разных срезов. В результате эти срезы будут синхронизироваться, даже если
они основаны на разных столбцах, например Invoice Date и Delivery Date.
Наконец, вы можете установить флажок Синхронизировать измене-
ние полей с другими срезами (Sync field changes to other slicers), если
хотите, чтобы срезы обновлялись при изменении столбца в одном из них.
Например, если у вас изначально был срез по полю Color, а затем вы ре-
шили изменить это поле на Month, все синхронизированные срезы будут
обновлены, если установлен данный флажок.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример синхронизации срезов можно увидеть в файле 3.3.6 Configure
Sync slicers.pbix из папки с сопроводительными файлами.
242    Глава 3. Визуализация данных

Использование панели Выбор


Панель Выбор (Selection) позволяет управлять видимостью визуальных
элементов. Чтобы открыть панель, нажмите на кнопку Выбор (Selection)
на вкладке Представление (View). На этой панели отображаются все эле-
менты визуализации, добавленные на текущую страницу, и все они будут
видимы по умолчанию.
Имена по умолчанию для элементов совпадают с их заголовками, а если
такового нет, имя будет присвоено согласно типу визуализации. Также вы
будете видеть все ранее скрытые визуальные элементы на одной панели.
В результате может получиться, что у нескольких элементов будут одина-
ковые имена. В этом случае вы можете дать элементам осмысленные име-
на, просто изменив их заголовки.
Чтобы переименовать элемент на панели Выбор, достаточно дважды
щелкнуть по нему мышью и ввести новое имя. Обратите внимание, что,
если у элемента есть видимый заголовок, он будет обновлен в соответствии
с введенным именем.
Панель Выбор позволяет вам скрывать визуальные элементы на стра-
нице. Для этого достаточно нажать на кнопку Скрыть этот визуальный
элемент (Hide this visual) справа от его имени, имеющую форму глаза.
Помните, что скрытие элемента не удаляет его со страницы физически –
он становится невидимым, но при этом продолжает быть частью страни-
цы. В результате скрытый срез, например, по-прежнему будет фильтровать
данные в других визуальных элементах. В то же время скрытые элементы
перестают вычисляться, что позволяет ускорить процесс обновления стра-
ницы. На рис. 3.46 показана вкладка Порядок слоев (Layer order) на панели
Выбор со скрытыми элементами визуализации.

Рис. 3.46. Панель Выбор

На панели Выбор вы также можете показать или скрыть все элементы


разом – для этого нужно нажать на кнопку Отображать (Show) или Скрыть
(Hide) соответственно. Кроме того, вы можете изменять порядок слоев (layer
Применение детализации и кросс-фильтрации    243

order), также известный как z-индекс (z-index) или z-порядок (z-order), выби-
рая элементы и нажимая кнопки над списком со стрелками вверх и вниз.
Порядок слоев определяет, какой из элементов будет выделен, если щел-
кнуть мышью по области их наложения друг на друга.
Также вы можете группировать, разгруппировывать и выполнять слия-
ние визуальных элементов при помощи панели Выбор. Группировать эле-
менты бывает полезно, если вам, например, нужно скрыть их для закладки,
переместить в другое место отчета или скопировать на другие страницы.
Слияние (Merging) позволяет выполнить объединение нескольких групп в
одну без создания вложенных групп. Для объединения нескольких визу-
альных элементов в группу нужно сделать следующее.
1. Выделить эти элементы визуализации, удерживая клавишу Ctrl.
2. Щелкнуть правой кнопкой мыши по любому из выделенных элемен-
тов.
3. В выпадающем меню Группировать (Group) выбрать одноименный
пункт.
Разгруппировка элементов и слияние групп выполняется по тому же
принципу. Переименовать группу можно так же, как вы переименовывали
элементы.

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


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

Применение детализации и кросс-фильтрации


Зачастую пользователям требуется узнать подробности о данных – из чего
собраны те или иные агрегированные значения. К примеру, если пользова-
тель видит на гистограмме неожиданное значение показателя, ему навер-
няка захочется узнать, что случилось. С этой целью вы, как разработчик,
можете предусмотреть страницу с детализированными данными, к кото-
рой может обратиться пользователь за разъяснением тех или иных цифр.
Чтобы позволить пользователям переключаться на страницу с подроб-
ностями, необходимо поместить одно или несколько полей в секцию Де-
тализация (Drill through) на панели Визуализации (Visualizations), пока-
занную на рис. 3.47.
В секции Детализация располагаются два переключателя:

■■ Несколько отчетов (Cross-report): установив этот переключатель,


вы позволите текущей странице быть использованной в качестве
страницы детализации в других отчетах;
244    Глава 3. Визуализация данных

■■ Сохранить все фильтры (Keep all filters): эта опция указывает, будут
ли применяться все фильтры с исходной страницы или лишь те, что
определены в разделе Добавьте сюда поля детализации (Add drill-
through fields here).

Рис. 3.47. Детализация

ПРИМЕЧАНИЕ. Детализация между отчетами


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

При помещении поля в секцию Добавьте сюда поля детализации (Add


drill-through fields here) вы можете выбрать, будет ли разрешена детализа-
ция в режиме сводки или как категория. Для мер такой выбор предоставлен
не будет, поскольку они не могут быть использованы как категории.
Давайте настроим детализацию на примере нашей модели данных Wide
World Importers.

1. Назовите пустую страницу Sales Summary.


2. Постройте гистограмму с выводом поля Profit по Employee.
3. Создайте новую страницу и назовите ее Sales Details.
4. На странице Sales Details добавьте табличный визуальный элемент со
следующими полями:
a) Date;
b) Customer;
c) Stock Item;
d) Profit.
5. Добавьте поле Profit в секцию Детализация (Drill through) на стра-
нице Sales Details и убедитесь, что в выпадающем списке Разрешить
Углубление в данные с использованием интерактивных визуальных элементов    245

детализацию, когда (Allow drill through when) выбран вариант


Сводка (Summarized).

ПРИМЕЧАНИЕ. Кнопка Назад


После добавления поля в секцию детализации в левом верхнем углу
страницы автоматически появится кнопка Назад (Back). Обратите
внимание, что она не будет функционировать при осуществлении де-
тализации между отчетами.

После выполнения всех шагов вы сможете щелкнуть на нужном столбике


диаграммы на странице Sales Summary и из выпадающего меню Детализа-
ция (Drill through) выбрать пункт Sales Details. В результате будет открыта
страница Sales Details с подробной информацией по выбранному сотруд-
нику.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример детализации данных можно увидеть в файле 3.3.8 Use drill
through.pbix из папки с сопроводительными файлами.

Альтернативой доступу к детализации по щелчку правой кнопкой мыши


является добавление на страницу соответствующей кнопки. Шаги при этом
будут похожи на те, что вы выполняли, когда учились создавать навигацию
для отчета.
Кнопка детализации будет показываться по-разному в зависимости от
возможности выполнить детализацию. По умолчанию кнопка будет затем-
няться при отсутствии возможности посмотреть подробные сведения.
Условия для функционирования кнопки детализации будут такими же,
как и для просмотра подробной страницы путем нажатия правой кнопки
мыши. А именно вам нужно выбрать одну или несколько точек данных в
любом визуальном элементе на исходной странице, где присутствует поле
детализации в качестве сводки или категории, – в зависимости от того, что
выбрано в соответствующей секции детализации.

Углубление в данные с использованием


интерактивных визуальных элементов
Многие визуальные элементы позволяют исследовать данные интерак-
тивно при помощи нескольких уровней полей – например, в графике на
горизонтальную ось могут быть вынесены поля Year, Quarter и Month. Ис-
пользуете ли вы при этом иерархию, определенную в модели данных, или
несколько разрозненных столбцов, значения не имеет. По щелчку правой
246    Глава 3. Визуализация данных

кнопкой мыши на точке данных визуального элемента, использующего ие-


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

■■ Детализация углублением (Drill down): осуществляет переход на


следующий по вложенности уровень иерархии в рамках выделенной
точки данных. К примеру, углубление до кварталов из 2020 года при-
ведет к открытию кварталов только этого года;
■■ Показать следующий уровень (Show next level): переход на следу-
ющий уровень иерархии безотносительно выбранной точки данных.
Например, переход от года к кварталам покажет все кварталы для
всех годов без указания самих годов;
■■ Раскрыть до следующего уровня (Expand to next level): эта опция
позволяет комбинировать текущий и следующий уровни иерархии.
Допустим, при ее выборе для перехода от годов к кварталам вы уви-
дите все кварталы для каждого года отдельно;
■■ Детализация обобщением (Drill up): осуществляет переход на один
уровень иерархии вверх.
При использовании визуальным элементом иерархии в его заголовке бу-
дут отображаться дополнительные кнопки, относящиеся к перечисленным
опциям. На рис. 3.48 показаны эти кнопки и эффект от выполнения всех
операций детализации.

Рис. 3.48. Кнопки детализации и разные уровни иерархии

ПРИМЕЧАНИЕ. Сопроводительные файлы


Пример детализации данных углублением можно увидеть в файле
3.3.9 Drilldown.pbix из папки с сопроводительными файлами.
Разработка отчетов для мобильных устройств    247

По умолчанию при выполнении детализации углублением соответству-


ющие фильтры могут быть применены к остальным визуальным элемен-
там на странице. Чтобы отключить такое поведение, выполните следую-
щие действия.
1. Выделите элемент, в котором хотите выполнить детализацию.
2. Перейдите на верхнюю вкладку Формат (Format).
3. В выпадающем списке Применение фильтров детализации (Apply
drill down filters to) отметьте вариант Выбранный визуальный эле-
мент (Selected visual).

Экспорт данных отчета


Power BI позволяет осуществлять экспорт данных из каждого визуального
элемента отдельно. Для этого необходимо выполнить следующие шаги.
1. Наведите мышь на элемент визуализации, из которого хотите экс-
портировать данные.
2. В заголовке элемента нажмите на раскрывающуюся кнопку Допол-
нительные параметры (More options) и выберите пункт Экспорти-
ровать данные (Export data).
3. Укажите папку, в которую хотите сохранить данные.
4. Введите имя файла и нажмите на кнопку Сохранить (Save).

В результате файл CSV, с которым вы впоследствии можете работать в


Excel, будет сохранен в указанной директории.

ПРИМЕЧАНИЕ. Формат экспортируемых данных


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

Разработка отчетов для мобильных устройств


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

Для создания макета мобильного отображения отчета перейдите на


вкладку Представление (View) и нажмите на кнопку Макет для мобиль-
ных приложений (Mobile layout). В результате будет открыт редактор мо-
бильного макета, показанный на рис. 3.49.

Рис. 3.49. Мобильный макет

Процесс создания мобильного отображения отчета очень напоминает


работу с мобильными макетами дашбордов. Поскольку не все визуальные
элементы могут пригодиться при выводе отчета на не слишком вмести-
тельный экран мобильного устройства, вы можете самостоятельно вы-
брать из них приоритетные.
Для добавления элемента визуализации на мобильный макет просто пе-
ренесите его с панели Визуализации (Visualizations) на рабочую область.
После этого вы можете изменить размер элемента и его местоположение
в соответствии с собственными нуждами. Удалить элемент визуализации с
макета можно, нажав на крестик в его правом верхнем углу.
Чтобы очистить макет от всех элементов, нажмите на кнопку Удаление
всех визуализаций (Remove all visualizations) в виде ластика на панели
визуализаций.
При разработке мобильного макета отчета его исходный вид остается
нетронутым. Для выхода из редактора мобильного макета снова нажмите
на кнопку Макет для мобильных приложений (Mobile layout) на вкладке
Представление (View).
Если вы не разработаете свой макет для мобильного устройства, по умол-
чанию отчет будет отображаться горизонтально.
Заключение    249

Заключение
Основные темы в данной главе:
■■ существует множество способов добавить визуальный элемент в
отчет, простейший из которых –  перенести нужный элемент на
рабочую область из панели Визуализации (Visualizations). Помимо
визуальных элементов, вы можете добавлять в отчет и другие объек-
ты, доступ к которым можно получить на вкладке Вставка (Insert), –
это текстовые поля (Text box), кнопки (Button), фигуры (Shape) и
изображения (Image). Для всех перечисленных объектов вы можете
создать действие для перехода к закладке, выполнения навигации
по отчету или открытия ссылки;
■■ в Power BI есть большое количество встроенных визуальных эле-
ментов, которые помогут вывести данные в наиболее подходящем
виде:
• для сравнения значений по категориям используйте линейча-
тые диаграммы или гистограммы;
• для сравнения показателей во времени лучше подойдет график
или диаграмма с областями;
• при выводе данных с применением разных шкал, таких как еди-
ницы и проценты, используйте комбинированные диаграммы
или графики с двумя вертикальными осями;
• если вам необходимо отобразить изменение относительных
позиций (ранжирование) во времени, вы можете воспользо-
ваться ленточной диаграммой;
• каскадная диаграмма идеально подойдет для отображения из-
менений по категориям в рамках временных интервалов;
• точечная диаграмма предназначена для демонстрации связей
между двумя параметрами. Также она способна отобразить ди-
намику во времени;
• круговая, кольцевая и диаграмма дерева показывают взаимос-
вязи частного и общего;
• датчик, карточка, многострочная карточка и KPI могут быть ис-
пользованы для отображения ключевых показателей самих по
себе или в сравнении с поставленными целями;
• географические карты служат для представления пространст­
венных данных.
■■ в дополнение ко встроенным элементам визуализации Power BI по-
зволяет использовать пользовательские элементы, созданные при
помощи Power BI SDK. Они могут быть импортированы из файла или
из библиотеки AppSource;
250    Глава 3. Визуализация данных

■■ визуальные элементы Power BI могут быть отформатированы с ис-


пользованием вкладки Формат (Format). При этом форматирование
может быть привязано к мерам. Такое форматирование называется
условным или выполненным на основе выражений;
■■ для применения фильтров к визуальным элементам можно исполь-
зовать срезы и/или панель Фильтры (Filters). Срезы могут приме-
няться для осуществления фильтрации по одному столбцу, а могут
обладать и собственной иерархией. Фильтры с одноименной пане-
ли могут использоваться применительно к визуальным элементам,
страницам или отчету в целом;
■■ Power BI поддерживает создание визуальных элементов на основе
скриптов на языках программирования R и Python, которые долж-
ны быть установлены отдельно. Эти визуальные элементы могут ис-
пользоваться для отображения диаграмм;
■■ для каждой страницы отчета может быть установлен свой размер,
фон, выравнивание, а также заданы отдельные фильтры на панели.
Кроме того, страницу отчета можно установить в качестве всплыва-
ющей подсказки для визуального элемента или сделать результатом
элемента Вопросы и Ответы (Q&A);
■■ повысить удобство использования отчетов Power BI можно, тщатель-
но выбирая названия для страниц, заголовков и меток. Кроме того,
желательно использовать разные маркеры для разных категорий,
а не полагаться на одни только цветовые характеристики при вы-
боре демонстрации различий между категориями. Для каждого ви-
зуального элемента вы можете установить альтернативный текст и
настроить последовательность перехода. Всегда лучше использовать
контрастные цвета для текста и фона. Также для облегчения работы с
цветами вы можете использовать различные заготовленные и поль-
зовательские темы;
■■ при использовании режима хранения DirectQuery вы можете на-
строить режим автоматического обновления для каждой страницы
в отдельности. Power BI поддерживает два типа автоматического об-
новления: с фиксированным интервалом и обнаружением измене-
ний. Последний базируется на отслеживании изменения значения
заранее определенной меры;
■■ вы имеете возможность создавать отчеты с разбивкой на страницы с
использованием инструмента Power BI Report Builder и публиковать
их в службе Power BI. Такие отчеты идеально подходят для распечат-
ки и распространения в качестве раздаточных материалов;
■■ закрепленные визуальные элементы превращаются в плитки на
дашбордах, не обладающие всей полнотой интерактивности. Для со-
хранения интерактивных взаимодействий между элементами необ-
ходимо использовать динамические страницы отчета;
Заключение    251

■■ дашборды поддерживают инструмент Вопросы и ответы, доступ-


ный также в режиме отчета. При этом результаты могут быть закре-
плены на дашборде;
■■ пользователи могут самостоятельно настраивать оповещения о дан-
ных на карточках, визуальных элементах отслеживания KPI и дат-
чиках, закрепленных на дашборде из отчетов. Оповещения могут
использоваться в виде предупреждений или писем по электронной
почте в случае преодоления заданных пороговых значений опре-
деленным показателем. Оповещения о данных будут видны только
пользователю, создавшему их;
■■ вы можете назначить определенную тему дашборду, выбрав ее из
списка заготовленных тем или создав собственную. Также допусти-
мо загружать темы в формате JSON, обладающие той же структурой,
что и темы отчетов;
■■ дашборды могут быть настроены для комфортного отображения на
экране любого размера, включая экраны мобильных устройств. Вы
можете изменять порядок следования плиток, менять их заголовки и
размер – при этом исходный вид дашборда останется без изменений;
■■ закладки помогают рассказать историю о данных или выделить
важные аналитические выводы в отчетах. В закладках может быть
сохранено состояние страницы, включая фильтры и видимость эле-
ментов;
■■ у вас есть возможность переопределять стандартные подсказки эле-
ментов, используя в их качестве отдельные страницы;
■■ выбор точки данных на визуальном элементе может повлечь за со-
бой перекрестное выделение или фильтрацию других элементов,
а может и не оказывать на них никакого действия в зависимости от
ваших настроек;
■■ в дополнение к использованию полосы навигации по страницам от-
чета вы можете вывести в этой области список закладок;
■■ большинство визуальных элементов может быть отсортировано
в  соответствии с выводимыми данными по возрастанию или убы-
ванию. В то же время табличный визуальный элемент поддерживает
сортировку по нескольким столбцам одновременно, что достигается
путем удерживания клавиши Shift;
■■ механизм синхронизации срезов может оказаться очень полезным,
если вам нужно распространить действие фильтров на определенные
страницы, но не на все. Вы также можете синхронизировать фильтры
между различными полями с использованием дополнительных оп-
ций механизма синхронизации срезов;
■■ на панели Выбор вы можете скрывать, переименовывать и объеди-
нять элементы визуализации в группы. Также на этой панели у вас
252    Глава 3. Визуализация данных

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


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

Мысленный эксперимент
В данном списке упражнений вам необходимо будет продемонстрировать
навыки и умения, приобретенные за время чтения этой главы. Ниже мы
приведем правильные ответы.
Вы являетесь аналитиком данных в компании Contoso и отвечаете за со-
здание отчетов в Power BI. Руководство компании потребовало от вас визу-
ализировать набор данных, построенный вашим коллегой.
Ответьте на следующие вопросы на основании предложенной информа-
ции и бизнес-требований:
1. Вам необходимо выбрать один вид визуализации для описания фак-
торов, наибольшим образом повлиявших на рост дохода компании.
Какой визуальный элемент вы выберете?
a) Дерево декомпозиции.
b) Воронку.
c) Ключевые факторы влияния.
d) Гистограмму с накоплением.

2. Вы хотите сделать страницу для навигации по отчету с переходами


по страницам. Ваше решение должно быть воплощено с минималь-
ными усилиями и работать в Power BI Desktop. Какой элемент или
элементы вы используете?
a) Кнопки с действиями перехода по закладкам.
b) Кнопки с действиями навигации по страницам.
c) Таблицу.
d) Текстовые поля с гиперссылками.

3. Вам необходимо обеспечить пользователям комфортную навигацию


по отчету при помощи клавиатуры. Какое свойство вам необходимо
настроить?
a) Закладки.
Ответы    253

b) Порядок слоев.
c) Мобильный макет.
d) Последовательность перехода.

4. Ваш коллега разработал страницу отчета, включающую два визуаль-


ных элемента: линейчатую диаграмму, показывающую продажи по
клиентам, и гистограмму с продажами по категориям товаров. Вам
необходимо обеспечить, чтобы по выбору пользователем клиента
или категории товара на втором визуальном элементе показывались
только соответствующие продажи без итогов. Как вы настроите вза-
имодействие между элементами?
a) Фильтр.
b) Выделить.
c) Нет.

5. Вы построили линейчатую диаграмму, показывающую продажи по


клиентам, и вам необходимо, чтобы пользователь при наведении
мышью на клиента видел соответствующие цифры прибыли (Profit).
Как вы будете действовать? Каждый вариант ответа представляет со-
бой полноценное решение.
a) Добавите поле Profit в качестве фильтра уровня визуального
элемента.
b) Добавите поле Profit в качестве поля детализации.
c) Добавите поле Profit в подсказку.
d) Создадите страницу с выводом поля Profit и сделаете на ее ос-
новании подсказку.

6. Вам хочется добавить на свой дашборд приветственное видео с


YouTube. Пользователи должны иметь возможность просматривать
его, не покидая дашборд, а ваше решение должно требовать написа-
ния минимального количества кода. Какой тип плитки вы выберете?
a) Пользовательские данные потоковой передачи.
b) Текстовое поле с гиперссылкой.
c) Видео.
d) Веб-содержимое.

Ответы
1. Правильный ответ – c. Визуальный элемент Ключевые факторы вли-
яния (Key influencers) предназначен для выявления наиболее важных
факторов на основании выбранных вами полей. С помощью дерева де-
композиции (вариант a) можно было бы получить кое-какие ценные
254    Глава 3. Визуализация данных

выводы, но это решение потребовало бы гораздо больших усилий. Ни


воронка, ни гистограмма с накоплением, перечисленные в оставших-
ся вариантах, не помогут выделить наиболее важные факторы среди
множества других.
2. Правильный ответ – b. Использование действий для перехода по стра-
ницам позволит вам реализовать навигацию по отчету без примене-
ния закладок, упоминающихся в варианте a. Использовать таблицу
для перехода по страницам можно, но это потребует больше времени и
усилий. А текстовые поля со ссылками предполагают знание ссылки на
каждую страницу, и это решение не будет работать в Power BI Desktop.
3. Правильный ответ – d. Последовательность перехода определяет поря-
док переключения между визуальными элементами при помощи кла-
виатуры. Закладки, отмеченные в варианте a, не помогут с навигацией
в рамках одной страницы в отчете. Порядок слоев из варианта b опре-
деляет приоритет размещения слоев и может отличаться от порядка
переходов. А мобильный макет из третьего ответа предназначен для
создания отображения отчета на мобильных устройствах.
4. Правильный ответ – a. Взаимодействие типа Фильтр позволяет от-
фильтровать диаграмму, оставив в ней только нужную часть данных
без итогов, как в случае со взаимодействием типа Выделить из вто-
рого варианта ответа. При выборе варианта c (Нет) взаимодействие
между элементами не будет осуществляться вовсе.
5. Правильный ответ – c или d. Если добавить поле Profit в подсказку,
вы будете видеть его значение при наведении на столбик. Такого же
эффекта позволит добиться и выделение отдельной страницы под
всплывающую подсказку для элемента. Добавление поля Profit в каче-
стве фильтра уровня элемента визуализации, как указано в варианте
a, не приведет к желаемому результату. А указание его в секции дета-
лизации также не позволит пользователю увидеть значение поля при
наведении мышью на столбик.
6. Использование для решения поставленной задачи плитки типа Ви-
део позволит встроить видеофрагмент, который можно будет просма-
тривать, не покидая страницу. Для этого вам необходимо будет знать
только ссылку на видео. Пользовательские данные потоковой переда-
чи, упомянутые в первом варианте ответа, предназначены для пере-
дачи данных, а не видео. Хотя вы можете вставить в текстовое поле
из второго варианта ответа гиперссылку на видео, пользователю при-
дется покинуть страницу для его просмотра. Что касается варианта
d – конечно, мы можем использовать плитку с веб-содержимым для
встраивания видео с помощью соответствующего кода. Но этот код
сначала нужно будет написать, кроме того, если соотношение сторон
в видеофрагменте не будет совпадать с соотношением сторон плитки,
появятся дополнительные полосы прокрутки.
Глава 4
Анализ данных

В предыдущей главе мы описывали набор навыков, необходимых для ви-


зуализации данных в Power BI. Здесь же мы поговорим о том, как можно
повысить эффективность отчетов и выделить важные аналитические вы-
воды  – например, при помощи дополнительного форматирования или
установки фильтров. Мы также затронем тему, касающуюся применения
инструмента Quick Insights, и покажем, как можно использовать его ре-
зультаты в отчетах.
Power BI оснащен механизмами искусственного интеллекта (artificial
intelligence – AI), способными запускать алгоритмы для работы с вашими
данными с целью извлечения дополнительных ценных сведений. Во вто-
рой части главы мы поговорим о визуальных элементах ИИ и покажем, как
можно группировать значения, выявлять выбросы в данных и проводить
анализ на основе временных рядов.
Навыки, описываемые в данной главе.
■■ 4.1. Повышение эффективности отчетов за счет выделения важных
аналитических выводов.
■■ 4.2. Выполнение углубленного анализа.

ПРИМЕЧАНИЕ. Сопроводительные файлы


Примеры из этой главы можно увидеть в файле 4 Analyze the data.pbix
из папки с сопроводительными файлами.

Навык 4.1. Повышение эффективности


отчетов за счет выделения важных
аналитических выводов
Визуализируя данные, вы часто будете сталкиваться с необходимостью
улучшать ваши визуальные элементы или отчеты с целью выделения в
256    Глава 4. Анализ данных

данных ценной аналитической информации. В этом разделе рассмотрим


несколько техник без использования алгоритмов искусственного интел-
лекта.

Основные составляющие навыка:


■■ применение условного форматирования;
■■ анализ «ведущих N элементов»;
■■ исследование статистической сводки;
■■ добавление результатов краткой аналитики (Quick Insights) на
дашборд;
■■ создание опорных линий с помощью панели Аналитика
(Analytics);
■■ использование оси воспроизведения (Play Axis) и проведение
анализа на основе временных рядов;
■■ персонализация визуальных элементов.

Применение условного форматирования


Одним из вариантов выделения интересующих вас точек данных на ви-
зуальном элементе является условное форматирование (conditional
formatting), которое в Power BI можно применить несколькими способами.
Выбор наиболее подходящего способа зависит от используемого элемента
визуализации.

Таблицы и матрицы
Визуальные элементы Таблица (Table) и Матрица (Matrix) предлагают
массу возможностей для условного форматирования значений:
■■ Цвет фона (Background color): изменяет цвет заливки ячеек;
■■ Цвет шрифта (Font color): изменяет цвет шрифта значений;
■■ Гистограммы (Data bars): отображает столбики в ячейках;
■■ Значки (Icons): отображает значки в ячейках;
■■ URL-адрес (Web URL): подчеркивает значения и превращает ячейки
в гиперссылки; в остальном не влияет на внешний вид ячеек.
Вы можете настроить условное форматирование следующим образом.
1. Выберите визуальный элемент Таблица или Матрица.
2. На панели Визуализации (Visualizations) перейдите на вкладку
Формат (Format) и откройте раздел Условное форматирование
(Conditional formatting).
3. Из выпадающего списка выберите поле, к которому хотите приме-
нить условное форматирование.
4. Установите нужный переключатель в положение Вкл (On).
Применение условного форматирования    257

Если вы используете условное форматирование не для создания


URL-ссылки, вы увидите, что значения отформатируются автоматически
исходя из настроек по умолчанию. Изменить эти настройки можно, нажав
на ссылку Дополнительные элементы управления (Advanced controls),
расположенную под соответствующим переключателем. Вы можете при-
менять несколько типов условного форматирования к одному полю.
Чтобы снять условное форматирование с поля, необходимо установить
соответствующий переключатель в положение Откл (Off).

Цвет фона и шрифта


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

Рис. 4.1. Дополнительные элементы управления условного форматирования

При создании условного форматирования для цвета фона или шрифта


вы можете выбрать одно из следующих значений в выпадающем списке
Форматировать по (Format by):

■■ Цветовая шкала (Color scale): вы можете установить минимальное и


максимальное значение цвета, которые будут соответствовать наи-
меньшему и наибольшему значению поля в текущем состоянии ви-
зуального элемента или значениям, введенным вручную при выбо-
ре в списке варианта Пользовательский (Custom). Также вы можете
установить флажок Расхождение (Diverging), чтобы указать цент­
ральный цвет. Кроме того, вы можете выбрать способ форматирова-
258    Глава 4. Анализ данных

ния пустых значений при помощи выпадающего списка Формат по


умолчанию (Default formatting): здесь можно выбрать вариант Как
нуль, что означает отсутствие форматирования, или использовать
конкретный цвет;
■■ Правила (Rules): вы можете назначить цвет значению, диапазону
значений или пустому значению. При этом допустимо указывать
как абсолютные значения, так и проценты. Если значение поля бу-
дет удовлетворять сразу нескольким правилам, будет применено
последнее. Изменить порядок следования правил можно, нажав на
кнопку Обратить порядок цветов (Reverse color order);
■■ Значение поля (Field value): в этом случае вам необходимо исполь-
зовать поле, возвращающее код цвета в шестнадцатеричном виде, в
формате схем RGB/HSL или в виде названия цвета.
В выпадающем списке Применить (Apply to) вы можете выбрать один
из следующих уровней детализации, к которому будет применяться услов-
ное форматирование:

■■ Только значения (Values only);


■■ Значения и итоги (Values and totals);
■■ Только итоги (Totals only).
К тому же условное форматирование одного поля может базироваться на
другом. К примеру, вы можете применить условное форматирование для
поля дохода на основании рентабельности продаж.

ПРИМЕЧАНИЕ. Существующее форматирование


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

Гистограммы
Условное форматирование в виде гистограмм (data bars) позволяет раз-
местить в ячейках столбики на основании их значений. На рис. 4.2 показа-
ны доступные опции при выборе этого типа условного форматирования.
Для задания минимальной и максимальной длины столбиков вы може-
те использовать выбор по умолчанию, соответствующий самому низкому
и самому высокому значению поля в вашем визуальном элементе. Также
допустимо вводить и конкретные значения, предварительно выбрав вари-
ант Пользовательский (Custom) в соответствующем выпадающем списке.
Установка пользовательских минимального и максимального значений
может пригодиться при работе с мерами с заранее известными диапазона-
ми значений, такими как пропорции.
Применение условного форматирования    259

Рис. 4.2. Дополнительные элементы условного форматирования


при помощи гистограмм

Вы можете настроить по своему желанию цвета столбцов с положитель-


ными и отрицательными значениями, а также цвет оси.
В выпадающем списке Направление столбца (Bar direction) вы можете
выбрать один из двух типов расположения столбцов гистограмм: слева на-
право или справа налево. Флажок Показывать только столбец (Show bar
only) позволит скрыть сами значения в ячейках и оставить видимой только
гистограмму.
Умелое использование условного форматирования поможет значитель-
но обогатить визуализацию, а пользователи смогут без труда идентифици-
ровать показательные точки данных при анализе отчета.

Значки
Дополнительные параметры условного форматирования при помощи
значков напоминают опции форматирования для цвета фона и шрифта.
На рис. 4.3 показаны подробности настройки такого вида условного фор-
матирования.
В отличие от форматирования цвета фона и шрифта, здесь вам будет до-
ступно только два варианта выбора в выпадающем списке Форматировать
по: Правила (Rules) и Значение поля (Field value). При форматировании
по правилам вам на выбор будет предложено множество вариантов сти-
лей значков, а при форматировании по значению поля вы можете выбрать
собст­венное изображение для выполнения условного форматирования.
260    Глава 4. Анализ данных

Рис. 4.3. Дополнительные параметры условного форматирования со значками

Кроме того, допустимо выбрать один из трех вариантов макета значка


(слева от данных, справа от данных или только значок) и выравнивание
(сверху, снизу или по середине).
На рис. 4.4 показаны четыре типа условного форматирования примени-
тельно к матрице.

Рис. 4.4. Условное форматирование матрицы

Другие визуальные элементы


Помимо таблицы и матрицы, условное форматирование цветом поддер-
живается во многих других элементах визуализации. Настроить его мож-
но на вкладке Формат (Format) панели Визуализации (Visualization) по-
добно тому, как мы делали это для форматирования цвета фона и шрифта
применительно к матрице и таблице. За дополнительной информацией вы
можете обратиться к навыку 3.1. Создание отчетов.
Анализ ведущих N элементов    261

Анализ ведущих N элементов


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

Фильтр уровня визуализации


Одним из способов сокращения количества отображаемых элементов до
нужного количества является использование фильтра уровня визуализа-
ции типа Ведущих N (Top N). Фильтр такого типа можно применить к ви-
зуальному элементу следующим образом.
1. Выберите элемент визуализации, который хотите фильтровать.
2. В разделе Фильтры для этого визуального элемента (Filters on this
visual) на панели Фильтры (Filters) раскройте карточку категориаль-
ного поля, которое вы хотите фильтровать.
3. Выберите в выпадающем списке Тип Фильтра (Filter type) вариант
Ведущие N (Top N).
4. Выберите пункт Сверху (Top) или Снизу (Bottom) в выпадающем
списке Показать элементы (Show items) и введите количество эле-
ментов, которое вы хотите сохранить.
5. В поле По значению (By value) добавьте поле, по которому хоти-
те ранжировать категориальные элементы. Заметьте, что это поле
должно быть частью визуального элемента.
6. Нажмите на кнопку Применить фильтр (Apply filter).

ПРИМЕЧАНИЕ. Фильтр Ведущие N


Только один фильтр типа Ведущие N уровня визуализации может быть
применен к визуальному элементу.

На рис. 4.5 показана линейчатая диаграмма, отображающая ведущие


10 элементов номенклатуры с сортировкой по полю Profit.

Вопросы и ответы
Чтобы получить результат, показанный на рис. 4.5, можно использовать
следующий запрос в визуальном элементе Вопросы и ответы (Q&A):

top 10 stock items by profit


262    Глава 4. Анализ данных

Подробнее этот элемент визуализации мы рассматривали при обсужде-


нии навыка 2.2. Разработка модели данных.

Рис. 4.5. Фильтр Ведущие N

ПРИМЕЧАНИЕ. Равенство значений


Если при ранжировании обнаружатся элементы с одинаковыми зна-
чениями, все они будут выведены на визуальный элемент. К примеру,
если вы хотите получить ведущие 10 элементов, а 10-й и 11-й со-
держат одинаковые значения, вы увидите больше ожидаемых десяти
элементов в выводе. Если для вас это неприемлемо, выберите другое
поле для ранжирования.

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

Total Profit = SUM(Sale[Profit])

Тогда вы можете написать еще одну меру, которая будет показывать при-
быль по десяти ведущим позициям:

Top 10 Stock Items Profit =


CALCULATE(
[Total Profit],
TOPN(
10,
Исследование статистической сводки    263

VALUES('Stock Item'[Stock Item]),


[Total Profit],
DESC
)
)

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Функция TOPN в DAX


Подробную информацию о применении функции TOPN языка DAX вы
можете почитать в разделе «TOPN» по адресу https://docs.microsoft.com/
ru-ru/dax/topn-function-dax.

Далее вы можете использовать показанную ниже меру для отображения


долей прибыли от ведущих номенклатурных позиций от общей прибыли:

Top 10 Stock Items Profit % =


DIVIDE(
[Top 10 Stock Items Profit],
[Total Profit]
)

Язык DAX пригодится при одновременном использовании мер с фильт­


ром Ведущие N и без него в одном визуальном элементе.

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


Вы должны хорошо понимать, какой метод анализа ведущих N эле-
ментов применить в какой ситуации.

Исследование статистической сводки


При обсуждении навыка 1.2. Профилирование данных вы видели, как мож-
но при помощи Power Query получить всю необходимую информацию о
столбцах в таблице. Например, вы можете легко и просто посмотреть ми-
нимальное, максимальное и среднее значение в числовом столбце, а также
узнать характер распределения значений в нем. Несмотря на всю полноту
информации, которую предлагают вам ваши визуальные элементы, вы не
можете добавить в отчет дополнительные диаграммы, описывающие ха-
рактер ваших данных.
Когда мы говорили о навыке 2.3. Создание мер с использованием языка
DAX, мы обсуждали базовые статистические функции языка DAX, которы-
ми вы можете воспользоваться с целью обогащения своей модели данных.
264    Глава 4. Анализ данных

К примеру, с использованием DAX вы можете создать свою собственную


диаграмму с распределением данных в Power BI.

ПРИМЕЧАНИЕ. Явные и неявные меры


Хотя вам не всегда нужно использовать язык запросов DAX, лучше
применять его для написания мер каждый раз вместо использования
неявных мер. Обратитесь к разделу с обсуждением навыка 2.3. Созда-
ние мер с использованием языка DAX для лучшего понимания разли-
чий между явными и неявными мерами.

Скажем, вас интересует распределение значений в столбце Unit Price из


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

Sale Rows = COUNTROWS(Sale)

После этого вы можете построить соответствующую диаграмму следую-


щим образом.
1. Выберите на панели Визуализации элемент гистограмма с накопле-
нием (stacked column chart).
2. Добавьте столбец Unit Price из таблицы Sale в поле Ось (Axis).
3. Добавьте меру Sale Rows в поле Значения (Values).
4. На панели Визуализации перейдите на вкладку Формат (Format) и
раскройте секцию Ось X (X axis).
5. В выпадающем списке Тип (Type) выберите пункт Категориаль-
ный (Categorical).

Результат этой операции показан на рис. 4.6.

Рис. 4.6. Sale Rows по Unit Price


Добавление результатов краткой аналитики (Quick Insights) на дашборд    265

Если вместо вывода количества каждого значения вы хотите показы-


вать на гистограмме диапазоны значений с их частотами, вам необходимо
сгруппировать (bin) значения, о чем мы будем подробно говорить при об-
суждении навыка 4.2. Выполнение углубленного анализа.

Добавление результатов краткой аналитики


(Quick Insights) на дашборд
Если вы не до конца уверены, что выводить в отчете, или хотите убедиться,
что не пропустили какие-либо важные аналитические выводы, вы всегда
можете воспользоваться инструментом вывода краткой аналитики (Quick
Insights) из состава службы Power BI. В ответ Power BI постарается автома-
тически построить интересные визуализации на основе имеющихся у вас
данных, а лучшие из них вы сможете закрепить на своем дашборде.
Применить этот инструмент к вашему набору данных можно следующим
образом.
1. В службе Power BI перейдите к рабочей области, содержащей набор
данных, по которому вы хотите построить краткую аналитику.
2. Нажмите на кнопку Дополнительные параметры (More options)
справа от набора данных и выберите пункт Получить краткую
аналитику (Get quick insights). Если вы уже использовали этот ин-
струмент ранее применительно к этому набору данных, вы увидите
пункт меню Просмотреть аналитические сведения (View insights).
3. Подождите, пока алгоритмы завершат свою работу, и выберите пункт
Просмотреть аналитические сведения.

Пример краткой аналитики показан на рис. 4.7.

Рис. 4.7. Краткая аналитика


266    Глава 4. Анализ данных

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


понимания данных. Если вам нравится полученная визуализация, можете
закрепить ее на дашборде, нажав на кнопку Закрепить визуальный эле-
мент (Pin visual), при этом комментарий будет утерян.
Некоторые из построенных визуализаций могут оказаться весьма полез-
ными, другие – полностью лишенными смысла. Если хотите оптимизиро-
вать свой набор данных для проведения краткой аналитики, вам необхо-
димо скрыть поля, не обладающие реальной ценностью, такие как ключи,
чтобы движок не включал их в анализ. Также лучше будет скрыть поля с
дублирующейся информацией, такой как коды и наименования товаров, –
повторяющиеся данные могут привести к созданию одинаковых аналити-
ческих выкладок.
При наведении мышью на результаты краткой аналитики вы можете пе-
рейти в Режим фокусировки (Focus mode) для применения фильтров или
поиска связанной аналитики по нажатию на кнопку Связанные аналити-
ческие сведения (Get Insights). Получение краткой аналитики из резуль-
татов аналитики называется аналитикой по области (scoped insights). На
рис. 4.8 показан пример связанной аналитики.

Рис. 4.8. Аналитика по области

Вы можете просматривать связанные аналитические результаты и за-


креплять на дашборде понравившиеся вам. Для выхода из режима фокуси-
ровки необходимо нажать на кнопку Закрыть (Exit Focus mode).

Создание опорных линий с помощью панели


Аналитика (Analytics)
Опорные линии (reference lines) могут стать отличным дополнением к ди-
аграммам, облегчающим пользователям извлечение важных аналитиче-
ских выводов. В Power BI вы можете сопровождать визуализации сразу
Создание опорных линий с помощью панели Аналитика (Analytics)    267

несколькими опорными линиями с использованием вкладки Аналитика


(Analytics) на панели Визуализации (Visualizations). После добавления
опорных линий на вкладке Аналитика будет показано общее их количе-
ство на визуальном элементе.
В зависимости от типа элемента визуализации и используемых типов
данных вы можете добавить следующие типы опорных линий:

■■ Линия тренда (Trend line) – расчетная прямая линия тренда;


■■ Линия константы оси X (X-axis constant line) – статическая верти-
кальная линия;
■■ Линия константы оси Y (Y-axis constant line) – статическая гори-
зонтальная линия;
■■ Линия минимума (Min line) – динамическая линия минимума;
■■ Линия максимума (Max line) – динамическая линия максимума;
■■ Линия среднего значения (Average line) – динамическая линия
среднего;
■■ Линия медианы (Median line) – динамическая линия медианы;
■■ Линия процентиля (Percentile line) – динамическая линия, для ко-
торой вам необходимо ввести значение процентиля;
■■ Прогнозирование (Forecast) – линия прогноза;
■■ Симметричное затенение (Symmetry shading) –  затенение обла-
стей по линии симметрии;
■■ Линия отношения (Ratio line) – отношение суммы для всех точек
значений Y к значениям X.

Добавить опорную линию на диаграмму можно следующим образом.

1. Выберите элемент визуализации.


2. Перейдите на вкладку Аналитика (Analytics).
3. Раскройте нужную секцию.
4. Нажмите на кнопку Добавить (Add).
В зависимости от типа опорной линии вы можете продолжить настра-
ивать ее после создания. Переименовать опорную линию можно, дважды
щелкнув мышью по ее имени. Это может быть полезно, если вы собирае-
тесь выносить это имя как метку данных.
На рис. 4.9 показан график с линией максимума и линией прогноза на
следующий год с месячной сезонностью и доверительным интервалом
75 % без учета последнего месяца. При наведении на линию прогноза вы
увидите верхнюю и нижнюю границы доверительного интервала, а также
значение прогноза.
Чтобы удалить опорную линию из визуализации, нажмите на кнопку с
крестом справа от ее наименования на вкладке Аналитика.
268    Глава 4. Анализ данных

Рис. 4.9. Прогноз прибыли и линия максимума

Использование оси воспроизведения


(Play Axis) и проведение анализа на основе
временных рядов
Практически во всех компаниях важнейшим аналитическим измерением
является дата и время. Данные, упорядоченные по хронологии, часто на-
зывают временными рядами (time series). Как мы уже говорили при обсуж-
дении навыка 3.1. Создание отчетов, традиционно для анализа временных
рядов применяются график, диаграмма с областями (с накоплением) или
ленточная диаграмма.
Иногда вам требуется проанализировать данные более чем по двум из-
мерениям, и сделать это с использованием популярных видов визуализа-
ции бывает непросто. К примеру, вам необходимо построить визуализа-
цию с отображением следующей информации:
■■ Sales Territory;
■■ Profit %;
■■ Quantity;
■■ Month.
Если бы вам нужно было визуализировать три поля из четырех, вы могли
бы построить график или линейчатую диаграмму в зависимости от комби-
нации полей. При необходимости отобразить все четыре поля стоит заду-
маться о том, чтобы делать это в разрезе месяцев.
В данном случае вам бы не хотелось, чтобы пользователь вынужден был
перемещаться по месяцам вручную. Вместо этого вы решаете воспользо-
ваться осью воспроизведения (Play axis) на точечной диаграмме, которая
поможет пользователю переключать месяца по нажатию на кнопку Play.
На рис. 4.10 показана точечная диаграмма до взаимодействия с ней поль-
зователя.
Использование оси воспроизведения (Play Axis) и проведение анализа...    269

Рис. 4.10. Точечная диаграмма с осью воспроизведения

По умолчанию на диаграмме выводятся данные за последний доступ-


ный месяц. При нажатии на кнопку Play фигуры – в данном случае State
Territories – начнут перемещаться от месяца к месяцу.
Пользователь может выбрать конкретную фигуру для отслеживания про-
гресса в виде линии. Эта линия будет соединять различные положения фи-
гуры во времени. При этом остальные фигуры будут затемнены. Это пове-
дение показано на рис. 4.11.

Рис. 4.11. Перемещение фигуры с течением времени

При использовании точечной диаграммы с осью воспроизведения жела-


тельно потратить время и научить пользователей обращаться с этим ин-
струментом. Это можно сделать как посредством внутренней презентации,
так и путем добавления сопроводительного текста в отчет.
270    Глава 4. Анализ данных

ПРИМЕЧАНИЕ. Использование оси воспроизведения для несколь-


ких визуальных элементов
Ограничением точечной диаграммы с осью воспроизведения являет-
ся то, что эта ось оказывает влияние только на саму диаграмму. Если
вам нужно отобразить прогрессию во времени для нескольких ви-
зуальных элементов, для этого лучше применить пользовательский
элемент Play Axis (Dynamic Slicer). Использование пользовательских
элементов визуализации выходит за рамки данной книги. За некото-
рыми подробностями по этому вопросу можно обратиться к навыку
3.1. Создание отчетов.

Персонализация визуальных элементов


Как разработчик отчетов, вы можете позволить пользователям
персонализировать визуальные элементы, т. е., например, менять тип ви-
зуализации и используемые поля. Это можно реализовать как в Power BI
Desktop, так и в службе Power BI:

■■ в Power BI Desktop откройте на вкладке Файл (File) пункт меню Па-


раметры и настройки (Options and settings) и выберите Парамет­
ры (Options). В открывшемся диалоговом окне в разделе Текущий
файл (Current file) откройте пункт Параметры отчетов (Report
settings) и установите флажок Разрешите читателям отчетов пер-
сонализировать визуальные элементы в соответствии с их по-
требностями (Allow report readers to personalize visuals to suit their
needs) и нажмите на кнопку OK;
■■ в службе Power BI перейдите в рабочую область, содержащую отчет,
наведите мышью на отчет и в меню Дополнительные параметры
(More options) выберите пункт Параметры (Settings). Установи-
те переключатель Разрешение читателям отчетов настраивать
визуальные элементы для своих нужд (Allow report readers to
personalize visuals to suit their needs) и нажмите на кнопку Сохра-
нить (Save).

После активации этой опции в службе Power BI появится дополнитель-


ная кнопка при наведении мышью на визуальный элемент – Персонали-
зация визуального элемента (Personalize this visual). При нажатии на нее
элемент визуализации будет выделен и появится диалоговое окно Настро-
ить (Personalize), показанное на рис. 4.12, в котором можно произвести все
нужные изменения.
При выполнении персонализации визуального элемента произведен-
ные изменения будут видны только текущему пользователю. При желании
он может сохранить их в закладке и воспользоваться в дальнейшей работе.
Навык 4.2. Выполнение углубленного анализа    271

Рис. 4.12. Персонализация визуального элемента

ВАЖНО. Заголовки визуальных элементов


Если вы хотите, чтобы пользователи имели возможность персона-
лизировать визуальные элементы, необходимо убедиться в том, что
заголовки элементов видимы. За видимость заголовков отвечает па-
раметр Скрывать заголовок визуального элемента в режиме чтения
(Hide the visual header in reading view).

Навык 4.2. Выполнение углубленного


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

Основные составляющие навыка:


■■ определение выбросов в данных;
■■ группирование данных и разделение на ячейки;
■■ использование элемента Ключевые факторы влияния для ана-
лиза по измерениям;
■■ применение дерева декомпозиции для анализа мер;
■■ применение аналитики ИИ.
272    Глава 4. Анализ данных

Определение выбросов в данных


Точки данных, выходящие за пределы ожидаемой области, именуются вы-
бросами (outlier). Идентификация выбросов в данных может быть очень
важна, поскольку возникать они могут по самым разным причинам, и эти
причины бывает полезно исследовать. К примеру, отрицательная цена то-
вара может означать возврат, а может возникнуть и в связи с появлением
ошибки в транзакционной базе данных, которую необходимо как можно
быстрее выявить и устранить.
При определении выбросов следует опираться на бизнес-логику. Это по-
может разделить все имеющиеся у вас данные на две группы: выбросы и
точки данных, попадающие в ожидаемый диапазон.
Идентифицировать выбросы в данных можно множеством способов. По-
мимо профилирования данных и инструмента создания краткой аналити-
ки, о которых мы говорили ранее, для выявления аномалий в данных мож-
но весьма эффективно использовать точечную диаграмму (scatter chart).
Одним из способов применения точечной диаграммы для определения
выбросов является заполнение полей Подробнее (Details), Ось X (X Axis)
и Ось Y (Y Axis). К примеру, на рис. 4.13 показана точечная диаграмма на
базе Wide World Importers со столбцом Stock Item, вынесенным в поле Под-
робнее, Quantity – в Ось X, а Profit – в Ось Y. С таким распределением полей
вы сразу увидите точки, выбивающиеся из общего ряда. Вы можете навести
мышь на заинтересовавшую вас точку данных для более подробного ее ис-
следования при помощи кросс-фильтрации других визуальных элементов
и детализации.

Рис. 4.13. Quantity и Profit по Stock Item

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


операции кластеризации (clustering) данных, что часто приводит к группи-
Определение выбросов в данных    273

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


выполнить следующим образом.
1. Наведите мышь на точечную диаграмму и в меню Дополнительные
параметры (More options) выберите пункт Автоматически искать
кластеры (Automatically find clusters). Обратите внимание, что эта
опция будет недоступна при задействовании поля Условные обо-
значения (Legend).
2. При желании вы можете изменить имя, описание и число кластеров
в открывшемся диалоговом окне.
3. Нажмите на кнопку OK.
После этого вы обнаружите новый столбец в модели данных, который
будет автоматически помещен в поле Условные обозначения (Legend).
Если в нашем примере с Wide World Importers сделать пять кластеров, бу-
дет создан столбец Stock Item (кластеры) (Stock Item (clusters)), а диаграмма
приобретет вид, показанный на рис. 4.14.

Рис. 4.14. Кластеры Stock Item (кластеры)

Среди образовавшихся кластеров вы видите два с выбросами: Кластер2


(Cluster2) содержит выбросы по столбцу Quantity, а Кластер5 (Cluster5) – по
Profit. Заметьте, что новый столбец Stock Item (кластеры) вы можете исполь-
зовать по своему усмотрению в других визуализациях и фильтрах.
Если вам необходимо изменить параметры кластеризации, щелкни-
те правой кнопкой мыши по созданному столбцу на панели Поля (Fields)
и нажмите на кнопку Изменить кластеры (Edit clusters). Чтобы быстро
изменить имя кластера, достаточно дважды щелкнуть по нему мышью и
ввести нужное имя.
274    Глава 4. Анализ данных

Группирование данных и разделение


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

Группирование данных
Группирование (grouping) позволяет вам вручную объединить значения в
столбцах в группы при помощи программного интерфейса, а не посредст­
вом написания кода на языке DAX. Например, вы можете сгруппировать
столбец Sales Territory по регионам следующим образом.
1. На панели Поля (Fields) нажмите правой кнопкой мыши на столбце
State Territory в таблице City и выберите пункт меню Создать группу
(New group).
2. В текстовом поле Имя (Name) введите Sales Region.
3. Удерживая клавишу Ctrl, выберите элементы Southeast и Southwest и
нажмите на кнопку Группировать (Group).
4. Введите строку South в качестве имени группы.
5. Повторите шаги 3 и 4 для следующих двух групп:
■■ West – Far West, Plains и Rocky Mountain;
■■ East – Great Lakes, Mideast и New England.
6. Установите флажок Включить другую группу (Include Other group).
На данном этапе диалоговое окно настройки групп должно выгля-
деть так, как показано на рис. 4.15.
7. Нажмите на кнопку OK.
В результате Power BI создаст новый столбец в таблице City, который вы
можете использовать в визуализациях и расчетах по своему усмотрению.
Например, вы можете применить столбец Sales Region в качестве условных
обозначений на заполненной карте (filled map), как показано на рис. 4.16.
Вы также можете создавать группы путем выбора точек данных прямо на
визуальном элементе. Скажем, если у вас есть точечная диаграмма, как на
рис. 4.13, вы можете сгруппировать значения следующим образом.
1. Удерживая клавишу Ctrl, выделите несколько точек данных на диа-
грамме.
2. Щелкните правой кнопкой мыши на любой из выбранных точек.
3. Выберите пункт Группировать данные (Group data).
В итоге будет создана колонка с двумя группами данных, которую вы
можете использовать на диаграмме в качестве условных обозначений.
Группирование данных и разделение на ячейки    275

Имена групп по умолчанию чаще всего будут не слишком говорящи-


ми. Чтобы отредактировать группы, щелкните правой кнопкой мыши по
столбцу на панели Поля (Fields) и выберите пункт Изменить группы (Edit
groups).

Рис. 4.15. Группа Sales Region

Рис. 4.16. Группа Sales Region на карте


276    Глава 4. Анализ данных

Разделение на ячейки
Работая с категориальными значениями, вы можете создавать группы
только типа Список (List) –  именно этот вариант выбран в выпадающем
списке Тип группы (Group type) на рис. 4.15. Числовые столбцы и столбцы
с типом Дата и время допускается также разделять на ячейки (bins), когда
мы имеем дело со множеством значений, которые затруднительно разбить
на группы вручную.
Разделение на ячейки (binning) позволяет распределить данные на груп-
пы равного размера. При этом вы можете указать либо количество ячеек,
либо их размер. По умолчанию эти параметры рассчитываются автома-
тически.
Давайте на примере модели данных Wide World Importers разделим стол-
бец Profit на ячейки следующим образом.
1. На панели Поля (Fields) нажмите правой кнопкой мыши на столбце
Profit и выберите пункт меню Создать группу (New group).
2. Убедитесь, что в выпадающем столбце Тип группы (Group type) вы-
бран вариант Ячейка (Bin).
3. В выпадающем списке Тип ячейки (Bin type) выберите вариант Чис-
ло ячеек (Number of bins).
4. Введите в поле Число ячеек (Bin count) число 10.
5. Нажмите на кнопку OK.
В результате будет создан столбец Profit (ячейки) (Profit (bins)), который вы
можете использовать для создания гистограммы, показанной на рис. 4.17.
В качестве значений на гистограмме используется количество строк в таб­
лице Sale:

Sale Rows = COUNTROWS(Sale)

Вы можете изменить ячейки, щелкнув правой кнопкой мыши по создан-


ному столбцу на панели Поля (Fields) и выбрав пункт Изменить группы
(Edit groups). При необходимости изменить тип с ячеек на группы вам при-
дется выполнять группировку заново.

Рис. 4.17. Гистограмма по полю Profit


Использование элемента Ключевые факторы влияния для анализа по измерениям    277

Использование элемента Ключевые факторы


влияния для анализа по измерениям
Визуальный элемент Ключевые факторы влияния (Key influencers) помо-
гает выделить переменные, оказывающие влияние на те или иные показа-
тели. К примеру, вас может интересовать, что главным образом влияет на
увеличение прибыли, и в качестве факторов вы можете рассматривать точ-
ку продажи, тип упаковки и сезон. Визуальный элемент Ключевые факто-
ры влияния позволит проанализировать все переданные ему факторы и
расставить их в порядке значимости оказываемого влияния.
У данного элемента визуализации предусмотрены следующие поля:

■■ Анализ (Analyze): показатель, который вы собираетесь анализиро-


вать. Он может быть как непрерывным, так и категориальным;
■■ Объяснение по (Explain by): факторы, которые вы хотите проверить
на влияние;
■■ Расширение по (Expand by): при анализе меры или суммированно-
го поля вы можете увеличить уровень детализации, не рассматривая
перечисленные здесь столбцы в качестве факторов влияния.

Давайте на примере модели данных Wide World Importers проанализиру-


ем факторы влияния на прибыль.

1. Выберите визуальный элемент Ключевые факторы влияния на па-


нели Визуализации (Visualizations).
2. Перенесите столбец Profit из таблицы Sale в поле Анализ (Analyze)
и убедитесь, что тип агрегирования установлен в значение Сумма
(Sum).
3. Перенесите следующие столбцы в поле Объяснение по (Explain
by):
■■ State Province из таблицы City;
■■ Buying Group из таблицы Customer;
■■ Buying Package из таблицы Stock Item.

4. Перенесите столбцы Year и Month из таблицы Date в поле Расшире-


ние по (Expand by).

Вы должны увидеть результат, показанный на рис. 4.18.


Вы можете выбрать любой пузырь слева, чтобы понять, как он влияет на
изменение значения поля Profit. На рис. 4.18 показано, что штучный (Each)
тип упаковки (Buying Package) положительно влияет на прибыль. В то же
время можно отметить, что покупательская группа (Buying Group) оказы-
вает не такое большое влияние на прибыль, поскольку этот фактор даже не
выводится на диаграмму.
278    Глава 4. Анализ данных

Рис. 4.18. Ключевые факторы влияния

Если на вкладке Ключевые факторы влияния (Key influencers) отража-


ется вклад каждого фактора отдельно, то на вкладке Основные сегмен-
ты (Top segments) демонстрируются комбинации факторов, оказывающие
влияние на анализируемый показатель. Эта вкладка показана на рис. 4.19.

Рис. 4.19. Вкладка Основные сегменты

Под каждым сегментом вы видите среднюю прибыль по сегменту и число


соответствий (population count) или количество записей для этого сегмен-
та. Обратите внимание, что в данном случае средняя прибыль означает не
среднее значение по этому столбцу, а среднее по агрегированному значе-
нию Profit, что в нашем случае эквивалентно сумме.
Применение дерева декомпозиции для анализа мер    279

Вы можете выбрать сегмент, чтобы посмотреть, из чего он состоит и ка-


кую долю занимает. На рис. 4.20 показан пример сегмента.

Рис. 4.20. Пример основных сегментов

Визуальный элемент Ключевые факторы влияния полезно исполь-


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

Применение дерева декомпозиции


для анализа мер
Визуальный элемент Дерево декомпозиции (Decomposition tree) предназна-
чен для проведения исследовательского анализа (exploratory analysis) путем
последовательного разбиения меры по нескольким измерениям. В процес-
се анализа вы можете выбрать измерение, по которому хотите сделать срез,
а можете оставить поиск разделения, которое обеспечит максимальное и
минимальное значения по всем выбранным измерениям, визуальному
элементу.
Элемент Дерево декомпозиции содержит следующие поля:

■■ Анализ (Analyze): мера или агрегированное поле, по которому вы


собираетесь проводить анализ;
■■ Объяснение по (Explain by): измерения, по которым вы хотите вы-
полнять анализ;
■■ Подсказки (Tooltips): меры или агрегированные поля, которые вы
хотите выводить при наведении на столбик.
280    Глава 4. Анализ данных

Скажем, применительно к модели данных Wide World Importers мы можем


задаться вопросом о том, как выражена общая сумма прибыли (Profit) в из-
мерениях Sales Territory, Customer, Stock Item и Selling Package. На рис. 4.21 по-
казано дерево декомпозиции, построенное с целью ответа на этот воп­рос.

Рис. 4.21. Дерево декомпозиции

При нажатии на кнопку со знаком плюса справа от горизонтального


столбика вы можете выбрать один из столбцов из списка полей Объясне-
ние по (Explain by) или найти максимальное или минимальное значение
среди оставшихся измерений. Этот визуальный элемент можно сравнить с
линейчатой диаграммой с более удобной детализацией и использованием
алгоритмов искусственного интеллекта для нахождения максимумов и ми-
нимумов в данных.
Дерево декомпозиции идеально подходит для выполнения анализа ос-
новных причин (root cause analysis) или проведения специализированного
анализа данных.

СОВЕТ ПЕРЕД ЭКЗАМЕНОМ


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

Применение аналитики ИИ
В Power BI вы имеете возможность воспользоваться алгоритмами искус-
ственного интеллекта на этапе подготовки данных при помощи предвари-
тельно обученных моделей машинного обучения (pretrained machine learning
model). В редакторе Power Query на вкладках Главная (Home) и Добавле-
Применение аналитики ИИ    281

ние столбца (Add column) вы можете найти следующие инструменты, рас-


полагающиеся в группе Аналитика ИИ (AI Insights):
■■ Анализ текста (Text Analytics): предназначен для определения язы-
ка, выделения ключевых фраз и анализа тональности значений из
текстового столбца;
■■ Компьютерное зрение (Vision): анализирует изображения и гене-
рирует теги на основании их содержимого;
■■ Машинное обучение Azure (Azure Machine Learning): применяет
модель машинного обучения Azure к вашим данным.

ПРИМЕЧАНИЕ. Требования аналитики ИИ


Инструменты Анализ текста и Компьютерное зрение требуют нали-
чия подписки Power BI Premium. Для инструмента Машинное обуче-
ние Azure у вас должен быть доступ к модели Azure ML. Подробности,
касающиеся получения доступа к модели, выходят за рамки данной
книги, но вы можете узнать их, обратившись к разделу «Использова-
ние Аналитики ИИ в Power BI Desktop» по адресу https://docs.microsoft.
com/ru-ru/power-bi/transform-model/desktop-ai-insights.

Давайте попробуем извлечь ключевые фразы из поля Stock Item в нашей


модели данных.
1. В редакторе Power Query щелкните правой кнопкой мыши по запро-
су Stock Item и выберите пункт Ссылка (Reference).
2. Щелкните правой кнопкой мыши по полю Stock Item и выберите
пункт Удалить другие столбцы (Remove other columns).
3. Щелкните правой кнопкой мыши по полю Stock Item и выберите
пункт Удалить дубликаты (Remove duplicates).
4. На вкладке Главная (Home) в группе Аналитика ИИ (AI Insights) на-
жмите на кнопку Анализ текста (Text Analytics).
5. В списке слева выберите вариант Extract key phrases. Дополнитель-
ные настройки показаны на рис. 4.22.
6. Нажмите на кнопку OK.
После окончания процесса вы увидите результат, показанный на рис. 4.23
в виде первых нескольких строк.
В результате выполнения функции к набору данных было добавлено два
столбца: Extract key phrases, представляющий собой список ключевых фраз,
разделенных запятой, и Extract key phrases.KeyPhrase, хранящий отдельные
фразы. Обратите внимание, что общее количество строк в таблице увели-
чилось, поскольку каждая ключевая фраза теперь располагается на новой
строке. Это похоже на расширение вложенного списка на новые строки в
Power Query.
282    Глава 4. Анализ данных

Операция извлечения ключевых фраз может быть исключительно по-


лезна для анализа комментариев и отслеживания повторяющихся похожих
фраз в длинных текстах.

Рис. 4.22. Анализ текста

Рис. 4.23. Ключевые фразы

Заключение
Ниже приведен перечень того, что вы узнали при чтении данной главы:
■■ условное форматирование в таблицах, матрицах и других визуаль-
ных элементах помогает привлечь внимание пользователей к важ-
ным аналитическим выводам. В таблицах и матрицах вы можете
применить условное форматирование для цвета фона и шрифта,
а также для гистограмм и значков в ячейках. Многие другие типы
визуализаций поддерживают условное форматирование для цвета
данных;
■■ анализ Ведущие N может пригодиться, когда вам необходимо отобра-
зить только выделяющиеся элементы и скрыть остальные. Этот вид
анализа доступен в секции фильтров уровня визуализации, а также
Заключение    283

он может быть выполнен при помощи визуального элемента Вопро-


сы и ответы или посредством DAX;
■■ в дополнение к статистике о столбцах, доступной при профилиро-
вании данных в редакторе Power Query, вы можете воспользоваться
средствами языка DAX для создания визуальных элементов в Power BI,
отражающих распределение данных в столбцах, a также применить
базовые статистические функции в DAX для исследования данных;
■■ механизм получения краткой аналитики (Quick Insights), использу-
ющийся в службе Power BI, может быть полезен при поиске дополни-
тельных аналитических выводов в данных или вдохновения для соз-
дания своих собственных визуальных элементов. Если в результате
запуска краткой аналитики вы обнаружите элементы визуализации,
идеально подходящие для вашего исследования, вы можете закре-
пить их на дашборде;
■■ опорные линии способны значительно обогатить ваши диаграммы и
облегчить пользователю получение важных аналитических выводов.
Также в Power BI вы можете выполнять прогнозирование по времен-
ным рядам с использованием вкладки Аналитика (Analytics);
■■ ось воспроизведения на точечной диаграмме может быть эффектив-
но использована для демонстрации изменения показателей во вре-
мени;
■■ в службе Power BI можно позволить пользователям отчета персона-
лизировать визуальные элементы. Персонализация включает в себя
возможность изменять тип визуализации и список используемых
полей;
■■ точки данных, выбивающиеся из общего ряда, именуемые выброса-
ми, можно обнаружить при помощи средств профилирования дан-
ных, инструмента краткой аналитики и визуальных элементов вроде
точечной диаграммы, которая, помимо прочего, позволяет класте-
ризовать данные и группировать выбросы;
■■ с целью обогащения модели данных вы можете группировать ин-
формацию и разделять ее на ячейки при помощи соответствующего
инструмента в Power BI Desktop. Можно выбрать на визуализации
несколько точек данных и создать на их основании группу типа Спи-
сок, но допустимо добавлять в группу значения и путем их выбора
из перечня. Для столбцов с числами и датами можно создать ячейки
с равномерным распределением элементов на основании диапазо-
нов значений. При этом диапазоны могут быть определены как по
количеству элементов в каждой группе, так и по числу групп;
■■ визуальный элемент Ключевые факторы влияния позволяет вы-
делить факторы, наибольшим образом влияющие на изменение
конкретного показателя или его принадлежность к той или иной
кате­гории;
284    Глава 4. Анализ данных

■■ элемент визуализации Дерево декомпозиции предназначен для


проведения анализа основных причин и выполнения интерактив-
ной детализации при исследовании мер;
■■ с помощью инструментов Аналитики ИИ удобно применять пред-
варительно обученные модели машинного обучения на этапе подго-
товки данных для анализа. Также вы можете запускать модели Azure
ML на ваших данных, извлекать ключевые фразы, проводить анализ
тональности текстов, определять язык и присваивать теги изображе-
ниям с использованием компьютерного зрения.

Мысленный эксперимент
В данном мысленном эксперименте мы проверим ваши знания, приобре-
тенные в процессе чтения этой главы. Ответы вы сможете найти ниже.
Итак, вы аналитик данных в компании Contoso, ответственный за созда-
ние отчетов в Power BI. Руководство компании потребовало от вас проана-
лизировать набор данных, построенный вашим коллегой. Модель данных
представлена на рис. 4.24.

Рис. 4.24. Модель данных Contoso

Ответьте на следующие вопросы на основании предложенной информа-


ции и бизнес-требований.
1. Вам необходимо создать линейчатую диаграмму с десятью товара-
ми, приносящими максимальный доход компании. Что вы пред-
примете? Решение должно быть реализовано с минимумом усилий
и предполагать, что пользователь имеет возможность применять
фильтр по датам.
a) Создадите вычисляемый столбец с именем IsTop10 в таблице
Product с использованием функции RANKX, а затем используете
его в фильтре уровня визуализации.
b) Создадите вычисляемую таблицу Top 10 Products, которая будет
фильтровать таблицу Sales.
Ответы    285

c) Настроите фильтр уровня визуализации типа Ведущие N.


d) Создадите меру с использованием функции TOPN.

2. Перед вами стоит задача сгруппировать значения столбца Brand в


Brand Group, что изначально в модели данных не сделано. Как вы
будете группировать бренды? Решение должно быть реализовано с
минимумом усилий.
a) Создадите группу типа Список.
b) Создадите группу типа Ячейка.
c) Создадите вычисляемый столбец в DAX.
d) Создадите настраиваемый столбец в Power Query.

3. Вы построили график с отображением прибыли по месяцам. Теперь


вам необходимо на этом же визуальном элементе показать средне-
месячную прибыль. Как вы добавите это значение? Ваше решение
должно учитывать, что пользователи могут применять фильтр по то-
варам, и быть реализовано с приложением минимума усилий.
a) Создадите меру с использованием функции AVERAGEX.
b) Добавите линию среднего значения со вкладки Аналитика.
c) Добавите линию медианы со вкладки Аналитика.
d) Создадите вычисляемый столбец в таблице Product с использо-
ванием функции AVERAGEX.

Ответы
1. Правильный ответ – c. Фильтр уровня визуализации типа Ведущие N
не требует написания дополнительных мер и будет реагировать на
фильтр по датам. Варианты a и b не подойдут, поскольку они не будут
корректно отрабатывать фильтр по датам – и вычисляемые столбцы, и
вычисляемые таблицы рассчитываются еще до применения пользова-
тельских фильтров. Решить задачу при помощи меры с использовани-
ем функции TOPN можно, но это потребует написания лишнего кода,
что не отвечает нашим требованиям.
2. Правильный ответ – a. Механизм создания групп данных позволяет
вам с минимальными усилиями распределять элементы по группам.
Вариант ответа b неправильный, поскольку ячейки не применяются к
категориальным типам данных. Варианты c и d не подходят по причи-
не необходимости написания формул, что требует больших усилий, по
сравнению с созданием групп.
3. Правильный ответ – b. Линия среднего значения покажет то, что нам
нужно, а именно среднемесячную прибыль, к тому же этот вариант бу-
дет учитывать все фильтры. Вариант a не подходит, поскольку требует
286    Глава 4. Анализ данных

написания нетривиального кода для копирования поведения линии


среднего со вкладки Аналитика. Третий вариант неправильный, по-
скольку линия медианы и линия среднего значения не одно и то же.
Последний вариант не подойдет по причине того, что вычисляемый
столбец не будет учитывать установленные пользователем фильтры.
Глава 5
Развертывание и поддержка

В службе Power BI предусмотрено множество инструментов для совместной


работы и использования результатов деятельности с соблюдением правил
безопасности. Также эти инструменты позволяют эффективно поддержи-
вать данные в отчетах в актуальном состоянии.
В этой главе мы сначала обсудим навыки, необходимые для обновления
наборов данных на периодической основе и в добавочном или инкремент-
ном режиме. Затем мы поговорим о поддержке безопасности при совмест-
ном обращении к наборам данных, включая разделение доступа к различ-
ным частям наборов данных для разных групп пользователей. Кроме того,
мы коснемся вопроса повторного использования наборов данных и посмо-
трим, как это реализуется на практике.
Во второй части главы мы поговорим о процессе создания и управления
рабочими областями, предназначенными для совместной работы в службе
Power BI. При необходимости вы можете делиться результатами своей ра-
боты, упаковав их в приложение и распространив на широкую аудиторию.
В конце главы мы обсудим применение меток конфиденциальности к со-
держимому рабочей области.
Навыки, описываемые в данной главе.
■■ 5.1. Управление наборами данных.
■■ 5.2. Создание и управление рабочими областями.

Навык 5.1. Управление наборами данных


В терминах службы Power BI отчеты (report) и наборы данных (dataset) яв-
ляются разными концепциями. Отчеты включают в себя визуальные эле-
менты и связанную с ними информацию, такую как закладки, а наборы
данных в свою очередь содержат только смоделированные данные. При
этом один набор данных может быть представлен в нескольких отчетах,
тогда как один отчет может черпать информацию лишь из одного набора
данных.
Поддержка данных в актуальном состоянии требуется почти всегда, и
в службе Power BI предусмотрены инструменты для обновления данных
288    Глава 5. Развертывание и поддержка

с заданными интервалами, при этом обновления коснутся только изме-


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

Основные составляющие навыка:


■■ настройка запланированного обновления набора данных;
■■ настройка членства в группах безопасности на уровне строк;
■■ обеспечение доступа к наборам данных;
■■ настройка инкрементного обновления наборов данных;
■■ рекомендация и сертификация содержимого в Power BI;
■■ настройка формата хранения крупных наборов данных.

Настройка запланированного обновления


набора данных
При построении отчетов распространенным требованием является под-
держание данных, на которых основывается отчет, в актуальном виде. Вы
можете обновлять наборы данных в Power BI Desktop и службе Power BI
вручную, но этот вариант не подойдет при необходимости выполнять об-
новления периодически. Решение состоит в использовании инструмента
запланированного обновления (scheduled refresh) набора данных, присут-
ствующего в службе Power BI.

Доступ к локальным данным


Если вы хотите обновить набор, использующий локальные данные, вам
необходимо использовать шлюз данных (data gateway). Шлюз данных полу-
чает доступ к локальным и удаленным источникам данных при их добавле-
нии. При этом в источниках может содержаться информация для подклю-
чения и учетные данные.
Вы можете загрузить и установить шлюз данных непосредственно из
службы Power BI, открыв меню Настройка (Settings) и в выпадающем пун-
кте Скачать (Download) выбрав вариант Шлюз данных (Data Gateway). По-
сле этого вам будет предоставлен выбор режима:
Настройка запланированного обновления набора данных    289

■■ Стандартный режим (Standard mode): в этом режиме сразу не-


сколько пользователей смогут иметь доступ к шлюзу данных, и вы
сможете использовать его с другими службами Microsoft, такими
как Power Automate. Этот режим подойдет для корпоративных окру-
жений, поскольку вам достаточно будет лишь раз добавить каждый
источник данных, после чего все пользователи шлюза смогут ими
воспользоваться. Для источников данных вы можете указать общие
учетные данные;
■■ Персональный режим (Personal mode): доступ к шлюзу будет лишь
у одного пользователя, и использоваться он должен будет только с
Power BI. Этот режим может быть полезен только в том случае, если
вы не планируете организовывать совместный доступ к шлюзу дан-
ных.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Установка шлюза данных


С подробной информацией об установке, настройке и управлении
шлюзом данных можно ознакомиться в разделе «Установка локаль-
ного шлюза данных» по адресу https://docs.microsoft.com/ru-ru/data-
integration/gateway/service-gateway-install.

После того как вы установили шлюз данных или администратор кли-


ента (tenant administrator) обеспечил вам доступ к нему, вы можете ис-
пользовать шлюз для обновления наборов данных, использующих в своей
основе локальные источники данных (on-premises data source). Для каждого
набора данных вы можете выбирать свой шлюз в настройках.
Чтобы перейти в настройки шлюза данных, наведите мышью на него в
списке объектов рабочей области и в выпадающем меню Дополнитель-
ные параметры (More options) выберите пункт Параметры (Settings). Для
отображения списка всех доступных шлюзов, как показано на рис. 5.1, от-
кройте раздел Подключение шлюза (Gateway connection).
Если вы хотите использовать персональный шлюз, выберите его в
списке и нажмите на кнопку Применить (Apply). Также вам необходимо
предоставить учетные данные для доступа к источнику, выбрав соответ-
ствующий раздел. Сделать это нужно будет только один раз – впослед-
ствии введенные вами данные будут безопасно кешированы в службе
Power BI.
Если вы указали для доступа к данным стандартный режим шлюза, со-
поставьте источники данных при помощи выпадающих списков, показан-
ных на рис. 5.1, после чего нажмите на кнопку Применить (Apply). В боль-
шинстве случаев вам не придется вводить учетные данные, поскольку вы
сможете воспользоваться данными, предоставленными администратором
шлюза.
290    Глава 5. Развертывание и поддержка

Рис. 5.1. Настройки подключения шлюза

Настройка запланированного обновления


Вы можете настроить запланированное обновление (scheduled refresh) для
каждого набора данных отдельно. Для этого раскройте секцию Заплани-
рованное обновление (Scheduled refresh) в настройках набора данных и
переведите переключатель Поддерживать актуальность данных (Keep
your data up to date) в положение Вкл (On). После этого вам станут доступны
все опции настройки запланированного обновления набора данных, как
показано на рис. 5.2.
Вы можете настроить следующие параметры обновления:
■■ Периодичность обновления (Refresh frequency): укажите, с какой
периодичностью ваш набор данных будет обновляться: Ежеднев-
но (Daily) или Еженедельно (Weekly). При выборе еженедельного
обновления вы сможете указать дни недели, в которые будет запу-
скаться обновление данных;
■■ Часовой пояс (Time zone): часовой пояс обновлений;
■■ Время (Time): вы можете выбрать время обновления набора данных
с интервалом в 30 мин. Максимальное количество обновлений зави-
сит от того, располагаете ли вы подпиской Premium;
■■ Получатель уведомлений о сбое обновления –  владелец набо-
ра данных (Send refresh failure notifications to the dataset owner):
включение этой опции позволит владельцу набора данных получать
Настройка членства в группах безопасности на уровне строк    291

уведомления по почте в случае возникновения ошибок обновления.


При желании вы можете ввести электронные адреса других пользо-
вателей, которые будут получать уведомления. Это может быть по-
лезно, если за набор данных отвечает сразу несколько людей.
После осуществления настройки нажмите на кнопку Применить (Apply).
Если нажать на эту кнопку, не выбирая время обновления, процесс будет
запускаться ровно в полночь.
Вы можете просмотреть историю обновлений набора данных, нажав на
ссылку Журнал обновлений (Refresh history) в верхней части страницы с
настройками.

Рис. 5.2. Настройка запланированного обновления

Настройка членства в группах безопасности


на уровне строк
Процесс конфигурирования безопасности на уровне строк (row-level
security – RLS) состоит из двух шагов. При обсуждении навыка 2.2. Разра-
ботка модели данных мы говорили о первом шаге – реализации RLS-ролей
в Power BI Desktop. Сейчас мы завершим описание процесса настройки без-
опасности на уровне строк для набора данных, присвоив и проверив роли
в службе Power BI.

Присвоение ролей в службе Power BI


После настройки RLS-ролей в Power BI Desktop вам необходимо опубли-
ковать свой отчет в службе Power BI и присвоить пользователям роли. Для
этого перейдите на страницу настройки безопасности набора данных, на-
жав на выпадающую кнопку Дополнительные параметры (More options)
и выбрав пункт Безопасность (Security). Если у вас нет ролей, определен-
ных в наборе данных, вы увидите сообщение, показанное на рис. 5.3.
292    Глава 5. Развертывание и поддержка

Рис. 5.3. RLS теперь располагается в Power BI Desktop

Если же вы предварительно создали роли RLS, вам будет показана стра-


ница, отображенная на рис. 5.4.

Рис. 5.4. Членство в ролях RLS

В левой части страницы вы увидите список ролей в наборе данных.


Цифры в скобках показывают, сколько членов принадлежит каждой роли.
В правой части вы можете добавлять и удалять членов из выбранной роли.
Чтобы добавить члена к роли, сначала выберите роль слева, после чего
введите электронный адрес пользователя в поле Люди или группы, при-
надлежащие этой роли (People or groups who belong to this role). Далее на-
жмите на кнопку Добавить (Add), а затем – Сохранить (Save). Изменения
будут применены незамедлительно.
Чтобы удалить пользователя из роли, нажмите на крестик справа от него
и на кнопку Сохранить (Save).
При использовании безопасности на уровне строк в Power BI вы може-
те указывать электронные адреса для каждого отдельного пользователя. И
хотя это вполне рабочая схема, поддерживать ее бывает проблематично.
Представьте, например, что у вас есть несколько наборов данных, исполь-
зующих одни и те же правила безопасности на уровне строк и просматри-
Настройка членства в группах безопасности на уровне строк    293

ваемых в основном одними и теми же пользователями. Если ваша ком-


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

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ. Создание групп безопасности


Тема, касающаяся создания групп безопасности, выходит за рамки
данной книги. Подробнее об этом можно почитать в разделе «Созда-
ние группы в Центре администрирования Microsoft 365» по адресу
https://docs.microsoft.com/ru-ru/microsoft-365/admin/create-groups/create-
groups?view=o365-worldwide.

Просмотр в качестве роли в службе Power BI


Как и в случае с просмотром содержимого под конкретными ролями в
Power BI Desktop, в службе Power BI вы также можете тестировать роли по-
хожим образом. Для этого необходимо навести мышь на нужную вам роль
на странице просмотра ролей безопасности, нажать на выпадающую кноп-
ку Дополнительные параметры (More options) и выбрать пункт Прове-
рить в качестве роли (Test as role). Вы увидите отчет глазами пользова-
телей, состоящих в выбранной роли. На рис. 5.5 показано, как видят отчет
члены роли Plains, созданной нами в главе 2. В этой роли применен фильтр
по Sales Territory.
При желании вы можете проверить комбинацию ролей или просмотреть
отчет под конкретным пользователем, выбрав в выпадающем списке Со-
держимое просматривается в качестве (Now viewing as) в верхней обла-
сти экрана нужные параметры. Убедившись, что все работает правильно,
вы можете нажать на кнопку Вернуться к безопасности на уровне строк
(Back to Row-Level Security).

ВАЖНО. Безопасность на уровне строк и роли рабочей области


Безопасность на уровне строк не применяется к пользователям с роля-
ми администратор (Admin), член (Member) или участник (Contributor)
в рабочей области, в которой размещен набор данных. Пользовате-
ли с правами на редактирование всегда будут видеть полный набор
данных вне зависимости от настроек безопасности, хотя механизм
просмотра отчета в качестве роли может показывать отфильтрован-
ный набор данных. Мы будем говорить о ролях рабочей области при
обсуждении набора 5.2. Создание и управление рабочими областями.
294    Глава 5. Развертывание и поддержка

Рис. 5.5. Тестирование роли в службе Power BI

Обеспечение доступа к наборам данных


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

Доступ через рабочую область


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

Доступ через приложение


Вы также можете дать пользователям доступ к вашим наборам данных,
делясь с ними приложениями (app). Для этого необходимо дать пользовате-
лям приложения право на сборку (Build), установив соответствующий фла-
жок, как показано на рис. 5.6.

ПРИМЕЧАНИЕ. Приложения
Подробно о приложениях мы будем говорить при обсуждении навы-
ка 5.2. Создание и управление рабочими областями.
Обеспечение доступа к наборам данных    295

Рис. 5.6. Разрешения в приложении

ВАЖНО. Разрешения наборов данных


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

Без права на сборку пользователи не смогут подключаться к вашим на-


борам данных, если они не являются участниками рабочей области или вы
не дали им доступ к конкретному набору.

Управлением разрешениями наборов данных


Если вам необходимо поделиться набором данных, вы можете сделать
это в окне настроек разрешений для него. Для этого выберите пункт Управ-
ление разрешениями (Manage permissions) в выпадающем меню Допол-
нительные параметры для набора данных. Вы увидите список пользо-
вателей, имеющих доступ к выбранному набору данных, как показано на
рис. 5.7.
Если набор данных располагается в общей рабочей области, вы увидите
роли для всех пользователей рабочей области. У пользователей могут быть
указаны следующие уровни доступа:
296    Глава 5. Развертывание и поддержка

■■ Чтение (Read): минимальный уровень доступа, необходимый для


просмотра отчетов на основе наборов данных;
■■ Повторное предоставление общего доступа (Reshare): позволяет
пользователям повторно делиться отчетами и дашбордами на осно-
ве наборов данных;
■■ Сборка (Build): с этим уровнем доступа пользователь имеет право
создавать собственные отчеты на основе наборов данных.

Рис. 5.7. Доступ к набору данных

Чтобы дать доступ пользователю к набору данных, выполните следую-


щие действия.

1. Нажмите на кнопку Добавить пользователя (Add user).


2. В поле Введите имя или адрес электронной почты (Grant access
to) укажите адрес пользователя или группу безопасности.
3. Выберите разрешения, которые хотите дать пользователям. Вы мо-
жете позволить пользователям делиться набором данных или созда-
вать содержимое на основе набора данных.
4. Нажмите на кнопку Разрешить доступ (Add).
Если вам не