Всем привет Это первый урок курса о Power Bi от нуля до уверенного разработчика сегодня мы поговорим о программе Power pii зачем и как в ней работать разберём что такое дашборды что такое отчёты Power Bi Познакомимся с интерфейсом Power query языком формул M разберём сложный теоретический блок о моделировании данных и реляционных моделях и подготов к первому практическому заданию начинаем Power Bi - это программный продукт Microsoft который позволяет анализировать и визуализировать большие потоки данных чаще всего корпоративных и выводить результаты на динамические панели данных на дашборды помимо Power Bi на рынке Существует множество других программы программных сред для B аналитики мне здесь существенны два критерия во-первых это быстрый Старт То есть как много времени требуется на изучение продукта чтобы начать в нём работать и второй критерий - это возможности продукта Если говорить о готовых программных продуктах то Power pii имеет самый широкий набор возможностей для реализации Bi аналитики и построения бордов именно за такой широтой возможностей Старт в Power Bi не такой быстрый как многим хотелось бы а в тех же Google таблицах или Google Data Studio разобраться и стартовать можно быстрее но и быстро вы упрёк в ограничение возможности этой программы а если говорить о программных средах Или например о языках программирования о том же языке R или языке P то в них есть определённые пакеты внутри которых Вы можете строить дашборды но такие самописный дашборды в разы более трудоёмкие и по ресурсам и по времени и по тому сколько времени вы потратите на то чтобы изучить этот язык программирования на должном уровне то есть по итогу На мой взгляд самое лучшее соотношение быстрого старта и широты возможностей именно у Power Bi я сильно люблю Excel и как лучший табличный редактор И я также сильно люблю Power pii как лучшую программу для создания интерактивных визуализаций параметр быстрого старта подтверждается ещё и тем что на многих курсах или обучения по Power Bi вас реально могут привлекать такими заголовками типа как за 10 минут собрать свой первый дашборд это действительно так за 10 минут Вы можете включиться к какому-то простому готовому набору данных вывести эти данные типа суммы или количества на динамику по времени и получить свою первую визуализацию и вроде бы как здорово мы собрали свой первый дашборд но если вы хотите всерьёз работать с Power Bi и создавать в ней большие профессиональные отчёты то вам нужно иметь некие базовые знания иначе Просто после первых таких импульсных дашбордов вы быстро откатились назад потому что поймёте что вам недостаёт некоторых знаний и вам нужно возвращаться как будто на шаг назад чтобы разобраться в моделировании данных в том как готовить данные чтобы загрузить их в модель и тому подобное и поэтому сегодня виджеты и визуализации мы создавать не будем а мы поговорим именно о базовых принципах моделирования данных может показаться скучно но это нужно знать это нам реально поможет в следующих уроках работать мы будем в десктопной версии Power Bi Power Bi десктоп доступен для скачивания на сайте Microsoft бесплатно также работать можно в облачной службе Power Bi для работы в ней нужна регистрация преимущество облако в том что в нём доступны настройки сетевой работы поскольку Power pii это ориентированный на корпоративных клиентов на Большой бизнес то есть работа предполагает доступ к учёту не для одного человека а для целых отделов компании Кроме того сетевая работа - это большой раздел в изучении Power Bi во-первых потому что она требует платной подписки а во-вторых потому что там действительно много нюансов по настройке подключения обновления данных уровней и ролей доступа интеграции с другими продуктами Microsoft и тому подобное в этом курсе я сетевую работу не рассматриваю Я сосредоточить только на работе в десктопной версии Тем более что разработка в десктопе всё-таки удобнее поэтому советую вам скачать Power pii Desktop и мы приступаем к знакомству с его интерфейсом открываем Power Bi Desktop по умолчанию программа открывает новый пустой файл будущего отчёта в самом верху нас встречает привычная для продуктов Microsoft панель вкладок это файл главная вставка моделирование представления и другие вкладки уже специфические каждая вкладка верхнего меню имеет свой набор инструментов с которым мы будем знакомиться в процессе курса А в Power Bi также есть боковые вкладки слева и справа слева расположены боковые вкладки отчёт то представление отчёта модель и таблица каждая из этих вкладок как бы позволяет нам посмотреть на наш отчёт с разных точек зрения вкладка таблицы показывает содержание таблиц данных на основе которых строится визуализация здесь Пока наши данные ещё не загружены но когда мы подключим источник данных здесь появится список загруженных таблиц вкладка модель нам позволяет посмотреть как эти таблицы будут связаны между собой ну а вкладка отчёт показывает уже визуализации графики диаграммы которыми Мы хотим наполнить будущий отчёт то есть вкладка модель и таблица это как бы внутренняя кухня та часть айсберга которая скрывается под водой а вкладка отчёт - это вершина айсберга это презентабельная часть даже по этой структуре вкладок становится понятно что прежде чем приступить к построению визуализации нам нужно довольно основательно познакомиться с внутренней кухни и построение отчётов Power Bi Давайте здесь я сделаю сноску на термины что дашборд - это панель или экран с интерактивными визуализация то есть говоря про дашборд часто подразумевают Одну страницу или один экран а отчёт в Power Bi позволяет нам создавать несколько страниц между которыми пользователь может перемещаться по какой-то навигации но в целом отчёт Power Bi и дашборд - это близкие и часто взаимозаменяемые термины так вернёмся к интерфейсу Power Bi справа расположены вкладки которыми мы можем управлять включать выключать сворачивать разворачивать чтобы выбрать те которые нам актуальны для текущих задач а остальные чтобы не загромождать экран а справа основные вкладки - это данные формат фильтры есть ещё вкладки выбор закладки все правые вкладки можно настроить в верхнем меню представления показать панели и здесь как раз у меня включена панель фильтры панель данные панель формат включён выбор Я сейчас его отключу у меня вот пропало окошко здесь нижняя часть интерфейса Power Bi тоже и несёт для нас некую информацию А во-первых внизу расположены страницы пока что у меня только одна страница справа расположена линейка масштабирования крупнее мельче причём масштаб удобно что есть и на вкладке модель если у вас очень много таблиц то вы также можете масштабировать эту вкладку делая её крупнее или мельче интерфейс Power Bi на первый взгляд кажется сложным но главное что он динамический его можно оптимизировать под ту задачу с которой вы в данный момент работаете Это на й взгляд кажется немного неудобным но потом вы привыкает Power Bi подстраиваться под А ту задачу которую я выполняю если я работаю с отчётами мне важны одни наборы панели если я работаю с дизайном с макетом мне важны другие наборы панели и я могу это легко адаптировать под себя и давайте рассмотрим некоторые этапы работы по созданию дашборда или отчётов Power Bi Я бы выделила следующие этапы Пять во-первых это подключение к источнику данных во-вторых - это преобразование данных и их загрузка в-третьих - это моделирование в четвёртых - это написание расчётов на дакс и в пятых - это макетирование построение виджетов оформление навигация первые два шага подключение к источникам да данных и преобразование данных это по сути получение данных за эту часть отвечает надстройка Power query Power query - это неотъемлемая часть Power Bi её отдельно скачивать не нужно и с некоторых версий Excel она также включена и в Excel это удобно потому что подключение данных которые вы реализуете в Power Bi если что вы можете скопировать и повторить в Excel без долгих заморочек чтобы работать с надстройкой Power query из с Power Bi вы просто открываете отдельное окно редактора Power query на вкладке главное преобразование данных вызываете преобразование данных и у нас открывается окно Power query сейчас мы подробнее Познакомимся с интерфейсом Power query а в конце урока поговорим про третий шаг про моделирование данных а четвёртый шаг расчёты я буду разбирать на трёх следующих уроках а пятый шаг виджета оформления я буду разбирать на последнем пятом уроке потому что это касается и дизайна и макетирования и юзабилити то есть я рассмотрю это на последнем пятом этапе курса Когда нам будет что вы приступаете к работе в Power pii вам нужно иметь макет э ТЗ э на разработку А дальше вы проходите описанные Пять шагов которые могут э повторяться в зависимости от обратной связи от заказчика отчёта и дальше как отдельный шаг можно выделить презентацию результата потому что результат вашей работы неважно это одностраничный или многостраничный отчёт в Power э это отчёт не тот отчёт который вот сели положили перед собой Талмуд многостраничный и читаем Одну страницу за другой нет отчёт в Power Bi - это тоже некий продукт неким своим внутренним интерфейсом А с которым нужно взаимодействовать А в этом интерфейсе есть какие-то внутренние скрытые фишки то есть по-хорошему а презентация вашего продукта интерактивного это отдельный шаг Но в данном курсе я разбираю пять выделенных шагов я их пронумеровала как ключевые этапы работы именно внутри программе Power Bi именно на них я сосредоточить в этом курсе Сейчас приступаем к разбору первых двух шагов в Power query в пустом Power в котором ещё нет никаких подключений к источ Нам может быть интересна только Верхняя вкладка главная и её подраздел новый запрос все подключения к данным в Power quy называются запросами Ну собственно quy - это и есть запрос в переводе с английского при этом нам неважно какой режим подключение вы используете всё равно ваше подключение к данным будет называться зам и будет отображаться в списке запросов слева пока что здесь показано ноль запросов раз уж я упомянула о режимах подключения то давайте и разберём выделяю два основных режима подключения это режим ипор и режим Direct quy иногда ещё называют третий смешанный режим Давайте создадим какое-нибудь подключение к данным чтобы уже на примере было проще разбираться для создания подключения к данным нам нужно а выбрать кнопку создать источник раскрывается всплывающее меню с распространёнными источниками можем нажать дополнительно посмотреть как много источников данных поддерживается Power query но нас интересует книга Excel потому что тестовые данные которые я подготовила для этого курса у меня в книге Excel и я их выбираю с рабочего стола выбираю свой экселевский файл дальше Power quy устанавливает подключение То есть коннектится к этому источнику и возникает опять же всплывающее окно навигатор которое позволяет мне выбрать Что именно из этого файла Я бы хотела пометить как запрос данных Power quy у меня в этом фай только один лист исходник Но если у вас многостраничный Excel файл здесь будут перечислены все листы этого Excel файла а также будут перечислены таблицы если они сконфигурированы как таблица Excel Мне нужно выбрать Мой лист исходник и нажать кнопку Окей Когда наши данные загрузились в интерфейсе Power quy произошли некие изменения самое главное что мы видим - это копию нашей таблицы внутри Power query это уже Победа Поверьте это уже маленькая Победа а сначала Давайте определим в каком режиме работает наше подключение к этой таблице как я уже говорила есть два основных режима подключения ипор и Direct query в режиме импорт в Power query импортируется копия данных Если эту копию данных вы загружаете в Power Bi строите на её основе какие-то визуализации то при изменении пользователям каких-то настроек фильтрации визуализации а Power Bi использует импортированные для соответствующего перерасчёта очевидно что со временем копия ваших данных может устаревать и чтобы видеть актуальные данные нужно запустить процесс обновления снова импортировать набор данных так работает режим импорта в режиме Direct quy импорта копии данных не происходят при создании визуализации или её изменении Power Bi обращается напрямую к источнику данных а не его копия этот режим отображает самые актуальные текущие данные режим Direct quy допустимо использовать для ограниченного числа источни в том числе самые популярные - это SQL серверы плюс режима Direct quy конечно в том что вы всегда видите актуальные данные но есть и минусы Первое это конечно в том что ограничиваются некоторые вычисления потому что сложные расчёты на дакс иногда бывают несовместимы с этим режимом Ну и второй минус - это может быть более длительный отклик отчёта Power Bi на какие-то пользовательские изменения настроек фильтрации если вам не обязательны ежесекундно ежеминутное обновление данных и достаточно Если ваши данные будут обновляться раз в несколько часов или раз в день то я вам советую начинать работу с режима импорта наше подключение к Excel файлу осуществлено в режиме импорт мы можем приступать к преобразованию имр копии данных на этом я делаю особый акцент что мы работаем не с данными напрямую А именно с импортированный копии данных так с этим разобрались следующие изменения которые произошли в нашем интерфейсе после получения первого запроса то что в левой боковой панели в списке запросов появился Наш первый запрос мы можем щелкнуть на него правой клавишей мыши и увидеть что у запроса есть какие-то настройки и свойства в правой боковой панели в параметрах запроса отображается его имя которое мы можем изменить при необходимости и отображается вкладка применённые шаги здесь остановимся поподробнее все преобразования в Power query записываются на языке формул M это кстати нужно разделять потому что многие путают язык M язык dax Power Bi Power query задача Power query подключиться к данным И преобразовать их в валидировать подключение к данным и их подготовка происходит на языке M Power pii - Это программа для Bi аналитики Её задача представить данные полученные из Power query в ёмко лаконичном наглядном виде Power Bi использует язык dax Мы немножко сейчас познакомимся с языком M но основной упор курса будет на язык расчётов dax для Power Bi по центру над копией таблицы появилась строка формул в которой что-то записано уже давайте разбираться с шагами и вот с этой записью некой формула на вкладке главная мы можем найти раздел запрос можем найти кнопку расширенный редактор также расширенный редактор мы можем вызвать если правой клавишей щёлкнет на сам запрос и выберем здесь расширенный редактор открывая этот расширенный редактор мы как раз и видим код запроса на языке M то есть мы пока что произвели только два действия а создали источник данных выбрали наш Excel файл а Power query уже задокументировать программировали в режиме No CDE то есть создали код средствами интерфейса поначалу код языка м покажется Вам китайской грамотой Но чем больше вы будете нарабатывать опыт подключения к разным источникам данных и разных преобразований с данными тем больше будете этот язык понимать в интернете на сайте Microsoft Вы можете найти справочник по языку л M ссылку я поставлю в описании и советую вам Этот справочник найти и добавить хотя бы в закладки чтобы он был у вас под рукой сейчас давайте немного пройдёмся по структуре кода который записал Power query наш код начинается со стартового оператора Let дальше идёт список из нескольких строк и дальше мы видим конечные оператор in после которого видим что выводится изменённый тип что это такое каждая строка внутреннего кода начинается с какого-то текстового наименования После него идёт знак равенства и справа от знака равенство формул языка M например первая строка источник дальше равно и справа от знака равенства формула языка M Excel Workbook очевидно эта формула открывает рабочую книгу Excel она обращается вот по такому адресу где лежит Мой файл и настраивает подключение к этому файлу вторая строка исходник Shit то есть исходник лист Помните я говорила что во всплывающем окне навигатора можно выбрать либо листы книги Excel либо таблицы которые сконфигурированы как таблица Excel и по факту Этот шаг источник шит говорит нам что в открытый книги Excel нужно найти некий объект исходник item А с типом Т то есть типа лист следующая строка называется повышенные заголовки из названия очевидно что первую строчку полученных данных Power query превратил в заголовки столбцов и следующая строка изменённый тип каждому столбцу определяет свой тип данных про типы данных Я поговорю во втором уроке а сейчас нам главное понять что для того чтобы мы увидели адекватную копию данных конектор к Excel файлу произвёл некие действия И эти действия записал на языке м Кроме того каждому действию Power query дал какое-то название список этих названий мы как раз можем увидеть в правой боковой панели применённые шаги это пока всё что мы сделали с запросом поэтому далее следует выходной оператор in который выводит нам результат последнего шага То есть Выведи нам таблицу в которой уже Столбцы названы должным образом и имеют определённый тип то есть условно можно сказать что наши шаги это некие переменные как X или Y но только X Y содержат одно значение а шаг как некая переменная может содержать целую таблицу или целый датафрейм Да и разница между этими переменными заключается в том как наша таблица наш dataframe выглядит это условно Давайте проверим например поставим после последнего шага запятую и со следующей строчки напишем X = 2 + 3 и после оператора in напишем X готово Итак мы получили вывод пятёрки X здесь отражает классическое представление о том что такое переменная То есть это какое-то одно изменяемое значение но в Power query как и в Power Pi под переменной может пониматься не одно значение а целый список столбец значений или целая табли Давайте ещ раз откроем расширенный редактор шаг X Я здесь вообще удалю он мне для работы не нужен удалю запятую после последнего шага изменённый Тип и его название вынесу после оператора И к чему я говорила про Шаги а к тому что первый нас шаг - это подключение к источнику а следующие три шага исходник шит повышенные заголовки нный тип это преобразование полученной копии данных Давайте закроем наш расширенный редактор кода м и пощлравлкния таблица с метаданными запроса следующий шаг навигация это уже близко к моей итоговой таблице данных но посмотрите здесь название отображены в первой строчке самих данных а колонки называются просто колонка 1 колонка 2 Колонка 3 следующий шаг - это повышены заголовки то есть первая строчка стала названием столбцов И следующий шаг изменение типа при этом в строке формул мы видим формулу это формула языка и расч который соответствует каждому шагу если нам нужно подправить что-то в коде м мы можем это сделать прямо в строке формул либо открыть уже расширенный редактор если нам нужны большие преобразования кода и теперь когда мы определились что под каждым шагом у нас хранится какая-то переменная в данном случае это таблица очевидным напрашивается Вывод что чем меньше шагов будет в нашем запросе тем меньше кашированный данных будет попадать в оперативную память соответственно тем производительнее будет ваш код но как абсолютно жёсткое ограничение это воспринимать не надо я здесь имею в виду только то что после того как вы преобразовали данные в нужный вам вид посмотрите внимательно на код который получился хотя бы просто по шагам пройдитесь и подумайте можно этот код сократить или усовершенствовать самый частый косяк с которым я сталкиваюсь - это повторяющиеся шаги в разных местах кода например вы решили переместить столбец на первое место да потом вспомнили что дата должна иметь тип дата Или например что этот столбец должен иметь не числовой тип а текстовый Сказали ему здесь текст потом опять поменяли местами какие-то Столбцы потому что совсем другой столбец должен иметь первое место то есть потом ещё какой-то тип поменяли то есть своими действиями Я сейчас наплодила здесь уже некую кашу потому что у меня есть два шага изменённого типа два шага связанные с переу порядочным столбцов я могла бы сразу на шаге изменённый тип сделать нужный мне тип у столбца а потом а на одном шаге пере порядок в том порядке который мне нужно и чтобы вот такие косяки отследить программистом быть не нужно Нужно просто выстраивать свой алгоритм действий Без суеты так два последних шага мне не нужны я их удалю Я нажимаю правой клавишей мыши на нужный шаг и выбираю удалить до конца так соответственно изменённый тип я оставляю следующее вот это переу порядок конца Окей оставлю нужные шаги Ну и Давайте ещё посмотрим другие вкладки которые нам могут пригодиться в процессе преобразования данных собственно это вкладка преобразование здесь собраны инструменты по преобразованию столбцов например заменить значение переопределить тип данных переименовать свернуть или развернуть Столбцы и так далее про свёртывание и развёртывание столбцов Я наверное запишу отдельное видео потому что это важно инструмент но работа его не сразу понимается Здесь вы также можете заметить а раздел сценарии Где собраны запустить Script R и запустить Script Python то есть Power query поддерживает интеграцию а неких кодов написанных на языке R или Python прямо внутри программы Power Bi на вкладке добавление столбца как следует из названия а собранные инструменты для добавления столбца с какими-то определёнными расчётами есть вкладка просмотр где мы в том числе можем настроить интерфейс Power query например включить показ профиля столбца вот у меня выбранный столбец показывается его профиль есть здесь какой-нибудь пустой столбец Нет ну щёлкаю по столбцам мы выйдем разные профили столбцов также на вкладке просмотр вам доступен а просмотр зависимостей запроса а он особенно полезен Когда вы работаете со множеством источников или А много запросов создаёте и загружаете в модель чтобы посмотреть как один запрос может зависеть или взаимодействовать с другим запросом советую пользоваться просмотром зависимостей запросов мы его чуть позже Посмотрим сейчас у нас только один запрос Поэтому нам не пригодится Ну ещё есть вкладка инструменты и справка они нам в меньшей степени понадобятся Казалось бы есть инструменты по работе со столбцами Почему нет инструментов по работе со строками и здесь возникает отличие Power query от того же Excel заключается это Отличие в том что мы не можем изменить значение рандомной ячейки или строки мы можем изменять Столбцы таблицы целиком то есть изменять принцип расчёта целого столбца помните в Excel удобно Если какая-то ячейка заполнена неверно тык в неё мышко и нужное значение всё отлично в Power quy такого сде невозможно Ну и в Power 5 тоже мы можем изменять только целиком столбец либо принцип расчёта этого столбца например мы можем добавить столбец с условием Если значение в соседней ячейке в соседнем столбце чётное напиши двойку Если значение в соседнем столбце нечётное напиши единичку у нас получится столбец из едини и двоек То есть у нас будут заполнены строки нового столбца Но принцип расчёта целого столбца будет для каждой строки идентичен это на самом деле Большой Камень преткновения всех кто начинает осваивать Power Pi Power quy после долгой работы с Excel обычно не понимают С чем связано такое усложнение жизни в Power query поэтому сейчас будет небольшой блок о теории реляционных баз данных и моделировании я этот блог постаралась сделать минимальным и лаконичным оставить в нём только самое необходимое без чего действительно понять принцип работы с большими моделями данных будет невозможно Если меня сейчас смотрят разработчики со скила архитектора баз данных Им конечно будет чем меня дополнить и чем дополнить мой короткий экскурс поэтому отдельно Приглашаю всех тек впд в комментарии делитесь своими знаниями обязательно А мы переходим к корреляционный базам данных как я уже говорила в начале Power query позволяет подключаться к большим наборам данных ко многим источникам данных очевидно что такая задача масштабного подключения к данным стоит не сама по себе а служит какой-то цели приведу пример из практики например из продаж мы будем в принципе на курсе рассматривать а данные по продажам у Вас есть данные по продажам одна табличка и есть данные по клиентам Это другая табличка Там собраны города клиентов возраст клиента А и вы бы хотели из этих двух табличек получить отчёт о продажах по разным городам клиентов Для этого вам нужно эти две таблички как-то объединить связать Когда у вас появляется несколько табличек которые нужно связать друг с другом то мы уже можем говорить о модели данных и Сначала мы поговорим о том как эти таблички должны выглядеть а потом уже как мы их будем друг с другом связывать Не каждая табличка подходит для того чтобы увязать её в реляционную модель нужно проверить что лица не порождает несогласованной зависимости и не порождает избыточность данных классический пример с той же самой таблицей клиентов если у нас будет в одном столбце фамилия клиента в другом столбце имя клиента в третьем столбце город клиента то у нас при большом числе клиентов конечно же возникнет такая ситуация что один клиент имеет такую же фамилию как другой клиент некоторые клиенты будут из одних и тех же городов в столбце фамилия в столбце имя клиента в столбце город клиент у нас могут быть повторяющиеся данные и если мы будем обращаться если мы будем искать своего клиента например только по фамилии то у нас может быть отклик от этой таблички из двух клиентов из трх клиентов потому что мы не используем уникальный идентификатор клиента Либо вы можете просто ввести поле уникального идентификатора клиента это просто счётчик Да от одного до до бесконечности И каждый клиент у вас будет с каким-то уникальным номером в вашей базе в вашей табличке то есть столбец с неповторяющимися значениями не только по факту не повторяющимися но с теми которые в принципе не могут повториться Да этот столбец называется ключевым полем другие Поля с фамилией клиента с городом клиента они зависят от ключевого поля и не зависят друг от друга Вот такая форма таблица называется третьей нормальной формой то есть таблица соответствует третьей нормальной форме если выполняются следующий критерии У нас есть ключевое поле и все Столбцы зависят от ключевого поля и не зависят друг от друга Это если говорить условно простыми словами опять же архитекторы БД меня скорее всего дополнят и про другие формы таблиц всех жду в комментариях процесс в котором мы будем нашу таблицу приводить к третьей нормальной форме называется нормализацией таблиц в реальной практике как и часто в жизни не все формальные правила можно выполнить Я советую вам стремиться к тому чтобы приводить свои таблицы в нормальную форму Если вы отказываетесь от нормализации то делайте этот выбор осознанно и понимаете последствия сейчас Давайте посмотрим насколько моя таблица данных соответствует третьей нормальной форме и постараемся её нормализовать для наглядности я добавлю Шаг в котором получу профиль своей Таблицы я нажимаю на последний шаг изменённый тип вставить шаг после и в строке формул напишу формулу Table профиль Люсь на то что мне нужно обратиться к шагу изменённый тип О'кей Итак я получила некую таблицу в первой столбце у меня название всех колонок собрались дальше минимальные максимальные значения Ну текстовые данные он сортирует по алфавиту какие-то средние значения стандартное отклонение Число Вот это мне как раз и пригодится знание числа всех строк то есть 4172 строки в моей исходной таблице У меня нет нулевых значений и столбец дисти Count показывает число уникальных значений в каждом столбце Давайте пройдёмся по названием столбцов тестовые данные я готовила на основе примера продаж некоторых товаров у меня есть столпцы с заказами они называются с префикса Order например Order Date Close Order Date Create Order ID То есть дата создания заказа дата закрытия заказа идентификационный номер заказа общая сумма заказа есть столпцы характеризующие клиента они начинаются с префикса customer customer ID customer Custom C есть Столбцы характеризующие товар что в каждом заказе у меня может быть несколько товаров и Столбцы характеризующие менеджера заказа как я уже посмотрела все Столбцы у меня заполнены пустых значений нет но и нет уникальных значений потому что у меня нету равенство столбца C и столбца distinct Count То есть это Форма таблицы которая получена на шаге изменённый тип Она точно не соответствует третьей нормальной форме потому что нету ключевого поля Кроме того во многих столбцах у меня содержатся текстовые данные например это имя клиента имя менеджера название города сама по себе таблица длинная в ней больше 4.000 строк Да мы выяснили и соответственно на если на всю длину то есть на 4.000 строк имеется какой-то столбец с текстовыми данными Да ещё и не один да ещё и с пов то в этом точно нет смысла потому что Это увеличивает нагрузку на память и конечно текстовые данные хотелось бы организовать в отдельную таблицу коротенькую скорее всего она будет потому что у меня же нету 4.000 клиентов посмотрите у меня cer ID имеет список из 6 уникальных клиентов то есть я могу из таблицы в 4000 строк чить таблицу в 60 строк Где будут просто перечислены клиенты их имя город Пусть они будут в текстовом варианте но эта таблица будет существенно короче чем основная таблица на 4.000 строк а в основной таблице Я уже ставлю только числовые данные Судя по вторым названиям столбцов как минимум четыре столбца я могу сделать ключевыми это Столбцы с названием ID C Items ID Order ID и Manager ID эти поля я могу использовать как ключевые поля если я организую отдельные таблицы для клиентов для менеджеров для заказов и для товаров а плюс Мне нужно учесть что если я сейчас свою большую таблицу помогут этой связи То есть я оставляю поле ID оно числовое оно легко сворачивается в памяти и в одной таблице и в другой таблице и по этому полю Я буду устанавливать связь Итак Давайте попробуем сформировать таблицу клиенты последний шаг я здесь удалю дальше я создам ссылку на свой запрос исходник для этого я нажимаю на исходник правой клавише мыши и выбираю в меню ссылка у меня происходит организация второго запроса который также называется исходник 2 я его переименую потому что это должна быть таблица со списком клиентов клиенты и здесь мне нужно выбрать Столбцы которые я оставлю только в таблице клиентов То есть мне нужно оставить Столбцы которые относятся к клиентам очевидно эти Столбцы будут начинаться с названия камер могу их выделить нажимаю на Столбцы правой клавишей мыши выбираю вариант удалить другие Столбцы этот вариант удобен потому что смотрите у нас появился шаг другие удалённые Столбцы во-первых остались нужные Столбцы А во-вторых те Столбцы что остались Они у нас перечислены в строке формул Но если я не хочу ручками вбивать эти Столбцы я могу нажать вот на такую шестерёнку в названии своего шага которая позволит мне просто мышкой выбрать столбец который мне нужно оставить Например я хочу сюда менеджер ID добавить вот у меня появился менеджер ID я код не буду править давайте я всё-таки его уберу Если бы я здесь выбрала вариант удалить Столбцы просто удалить Столбцы которые мне не нужны то по-моему такой шестерёнки не возникает и по-моему этот такой вариант редактирования не очень удобный вот ну то есть по мере опыта работы с Power query вы наработать какие-то фишки которые вам удобны которые оптимизируют вашу работу Ну и дальше очевидно что у меня таблица по-прежнему содержит 4.000 строк и мне нужно её сократить оставив уникальный список клиентов то есть нужно удалить дубликаты и дубликаты я буду удалять по столбцу Custom ID потому что там точно значени не должны повторяться я нажимаю правой клавишей мыши на Custom ID и выбираю удалить дубликаты в правом нижнем углу у меня есть информация о таблице что столбцов Осталось четыре а строк всего лишь 60 как раз я смотрела в профиле своей основной табли что уникальных значений в столбце Custom ID 60 То есть в принципе моя таблица клиенты готова и она как раз отвечает третьей нормальной форме в этой таблице есть ключевое поле остальные поля зависят от ключевого поля и не зависят друг от друга похожие действия я могу повторить и создать таблицу менеджера Я просто продублируйте назову его менеджер на шаге другие удалённые Столбцы я выберу всё что относится к менеджерам это ID и имя менеджера А на шаге удалённые дубликаты Мне нужно будет удалять дубликаты не по столбцу customer ID А по столбцу менеджер Итак менеджеров У меня всего пять получилась такая коротенькая таблица Эта таблица тоже отвечает в третьей нормальной форме Но мне бы хотелось ещё получить таблицу в которой будет информация о продажах товара но чтобы эта таблица была всё-таки более компактной чем таблица исходник Я создам ссылку на таблицу исходник назову эту таблицу заказы и подумаю что бы я там оставила мне точно нужно всё что относится к заказу то есть ордер Мне нужен менеджер ID по этому поле я буду связывать менеджер name мне здесь не нужно от камера Мне нужен тоже C ID и всё про товар Я тоже оставлю моя таблица построена таким образом что в ней отражается но в заказе может быть несколько товаров соответственно покупка какого-то товара внутри какого-то заказа это будет одна строка моей таблицы покупка другого товара внутри того же заказа внутри того же ордера ID это будет следующая строка таблицы То есть у меня не получится сделать поле Order ID в этой таблице ключевым полем и соответственно нормализовать эту таблицу Я тоже не смогу ну я могла бы сделать составное ключевое поле из поля Order ID и Items ID но я не буду этого делать Я отдаю себе отчёт в том что я делаю я оставлю таблицу в таком виде так можно было бы ещё создать список товаров но в Power quy я этого тоже делать не буду а Посмотрим зависимости запроса в меню просмотр выбираем зави запроса здесь как раз видно что вот по этому адресу моего файлового хранилища подключается запрос исходник А из запроса исходник образуются три запроса клиенты менеджеры заказа для дальнейшей работы мне потребуются только три новых таблицы потому что они более хорошо для меня организованы а вот таблица исходник мне не понадобится но я не могу её удалить потому что она промежуточная без неё не будут эти три запроса работать но грузить в Power Bi мне её тоже не надо поэтому я просто отключу её загрузку правой клавишей мыши щёлкаю на исходник здесь как раз стоит Галка включить загрузку и включить в обновление отчёта в обновлении мне это нужно потому что вдруг у меня изменятся какие-то мои данные А вот саму загрузку я отключу и запись названия запроса стала таким курсивом То есть он не будет загружаться остальные три Таблицы я загружаю в Power Bi я нажимаю на вкладке главное раздел закрыть закрыть и применить Power Bi загружает данные и в итоге мы видим в правой боковой панели данные список из трёх таблиц заказы клиенты менеджеры здесь важно Уточнить что Power query при загрузке запросов Power Bi выполняет весь код запроса Выполняет все шаги которые мы видели а в списке применённые шагов То есть если мы сейчас попробуем переместить наш файл в какое-то другое расположение То есть у меня он был на рабочем столе я его оттуда уберу и попробую из Power query загрузить таблицу в Power Bi то у меня выдастся ошибка Потому что первый шаг давайте я вернусь в Power quy шаг моего запроса имеет чёткую директорию возьми файл вот по такому адресу соответственно если этот файл по такому адресу не будет найден то у меня поломается первый шаг запроса исходник соответственно Поломаю все остальные запросы и загрузка данных не случится это важно понимать потому что в больших проектах загрузка данных их преобразование на этапе Power quy может выполняться одним человеком а работа по построению отчётов Power Pi может выполняться другим человеком Например я люблю так работать потому что подключение к данным на этапе Power query - это не так интересно как работа в Power B и поэтому особенно важно чтобы все этапы построения отчёта Power Bi выполнялись качественно чтобы больше к ним не возвращаться на втором уроке мы рассмотрим один такой факап поподробнее кто уже имеет опыт работы с Power pii мог заметить что я одну вещь в Power query не сделала и мне к ней нужно будет вернуться но это удочка для второго урока Сейчас переходим в powerbi с интерфейсом Power Bi мы уже Немного познакомились вспоминаем левую боковую панель вкладка отчёт здесь пока визуальных элементов мы сегодня не создаём вкладка таблицы переходим в неё здесь мы видим справа опять же список наших таблиц если мы какую-то таблицу раскроем то увидим список полей этой таблицы Да с этой вкладкой таблиц Мы будем работать в следующем уроке Сейчас переходим на вкладку модель так сделаю её поменьше и посмотрите Power Bi уже связал наши таблицы между собой он нашл повторяющиеся Поля с одними и названиями и в таблице заказа и в таблице менеджер это поля медр ID он связал эти таблицы по менеджер ID Совершенно верно сделал также нашёл повторяющееся название полей и в таблице клиента и в таблице заказа тоже построил связи отлично эти связи имеют некоторую характеристику на одном конце связи расположена единичка на другом конце связи такая звёзда есть ещё какая-то стрелочка сейчас мы со всем с этим разберёмся единичка у нас обозначает то что на этом конце на этом конце у нас таблица клиента то есть на этом конце в таблице клиента у нас ключевым полем является то поле которое участвует в связи звёздочка обозначает что на конце где звёздочка в таблице поле участвующее в связи не является ключевым Ну что логично потому что в таблице клиента мы customer ID делали ключевым полем удаляли оттуда дубликаты А в поле заказы customer ID естественно не будет ключевым полем потому что один клиент мог сделать несколько заказов такая кратность связи называется один ко многим если мы говорим о связи клиенты заказа если мы говорим о связи заказа клиента то это будет многие к одному Что одно и то же кратности связи в Power Bi бывает три это соответственно один ко многим или многие к одному это один к одному когда у вас связаны две таблицы где поля участвующие в связи являются ключевыми в обоих в обеих таблицах и соответственно кратность связи многие ко многим Вы можете связать таблицы Абсолютно без ключевых полей но работать со связью многие ко многим конечно сложно и требует Ну учитывать определённую специфику этой связи связь один к одному говорит о том что в принципе Вы могли бы две таблицы объединить в одну и исключить связь один к одному потому что у вас и там уникальный список полей и там уникальный список полей чаще всего в своей практике вы конечно же будете работать со связью один ко многим Что обозначает стрелочка это стрелочка говорит нам о направлении кросфит мы можем фильтровать данные например в связи заказы клиенты а направление кросфит идёт от таблицы клиенты к таблицы заказа Мы можем в таблице клиенты выбрать например второго клиента и если в отчёт мы выводим значение из таблицы заказа то у нас все значения по второму клиенту который мы выбрали в таблице клиента если мы попробуем наоборот сделать То есть мы на отчёт выведем какие-то виджеты построенные по таблице клиенты А вот э фильтровать будем из таблицы заказа то у нас фильтр Не сработает потому что у нас нету стрелочки от таблицы заказа к таблице клиента в настройке связи Мы конечно же можем эту кросс фильтрацию включить мы наводим мышку на связь она становится активной нажимаем правой клавишей мыши свойства и вот здесь у нас есть блок направления кросс фильтрации мы здесь можем выбрать что связь может быть м иметь дву направленную кроссфит-клуб связи указывается что это многие к одному потому что на стороне заказа находятся многие на стороне клиента находится единственное значение ключевого поля у связи ещё есть статус в самом низу есть такая галочка активировать связь она у нас активна сейчас Если эту Галку отключу нажму Окей то связь у нас стала неактивной она помечена вот таким пунктиром но таблиц по связа для чего эта активация существует Когда у вас много таблиц Вы можете завязать их так что в итоге образуется какой-то Замкнутый контур и получается что в Power Bi возникает неоднозначность направления фильтрации результат расчётов может быть не тот чего вы ожидаете либо может быть вообще расчёт Не сработает не даст результата и в таком случае Power Bi сам Может деактивировать какую-то связь чтобы исключить эту неоднозначность с неактивными связями Мы тоже поработаем но в следующем уроке а пока вернёмся к теории реляционной модели данных так связь Я верну сделаю её активной Итак таблица у нас в нормальной форме по крайней мере две менеджеры клиенты что дальше дальше нам осталось разобрать несколько терминов связанных непосредственно с моделями данных Power Bi пока Power Bi сам выстроил за нас связи Да тут и таблиц немного но на практике вы столкнётся с тем что таблиц будет большое количество может будут какие-то даже лишние таблицы грузиться у вас из какой-нибудь там CRM системы и вам нужно во всей этой каше таблиц данных разобраться и грамотно связать одно с другим чтобы всё это эффективно работало Нам же по этим таблицам строить расчёты нам нужно чтобы модель точно была построена корректно и позволяла нам эти расчёты создать начинать построение связей между таблицами нужно с того чтобы распределить ваша таблица на две группы таблица фактов и таблица измерений Сейчас связь за нас создал powerbi сам но опять же Разбираем случаи когда этого не произошло либо вам нужно проверить как Power Pi выстроил связи Итак термин таблица фактов и таблица измерений - это устоявшиеся термины сообщества разработчиков Power Bi Поэтому если вы будете искать какие-то ответы на свои вопросы в интернете то вы легко сможете понять что имеет в виду Эксперт Power Bi апеллируя к терминам таблицы фактов и таблицы измерений Итак таблица фактов содержит набор наблюдений или действий или каких-то фактов это могут быть продажа заказов может быть значение температуры по дня может быть какое-то потраченное рабочее времени Ну то есть это факт чего-то что вот случилось в данном случае наша таблица фактов - это таблица заказа в ней описано что в таком-то заказе было продано столько-то товара по такой-то цене в том же заказе было продано такого-то товара с ID в таком-то количестве по другой цене это наши факты то что у нас случается наши менеджеры это как данность наша она они у нас не меняются у нас нету начала работы менеджера конец работы менеджера то есть мы не анализируем действия с менеджерами как с какими-то фактическими изменениями То есть у нас менеджеры являются просто характеристи нашей таблицы фактов и такие таблицы называются таблицами измерений то есть в них хранятся бизнес сущности то что мы описываем это могут быть товары это могут быть менеджеры клиенты подразделения категории товаров и тому подобное вашу модель можно считать Хорошо структурированной если таблицы которые вы туда загрузили чётко являются либо таблицами фактов либо таблицами измерений избегайте объединять два типа в одной таблице как правило таблицы измерений содержат небольшое количество строк как мы это убедились создавая таблицы клиенты таблицы менеджеры они у нас довольно короткие таблица фактов она напротив имеет большое количество строк там почти 4.000 строк и со временем таблица факто будет очень быстро расти поэтому важно чтобы в таблице фактов она у нас получилась длинной но чтобы она хорошо сворачивалась в память благодаря тому что там оптимизированы типы данных то есть там нет текстовых данных и там Нет данных которые можно вынести в таблицу измерений Ну как вы наверное уже догадались к одной таблице фактов может быть построено несколько таблиц измерений если визуально это себе представить то получится некое подобие звезды и я пожалуй открою эту схему даже в справочники Power Bi то есть вот у нас показана модель типа Звезда почему звезда потому что у нас таблица фактов огру таблицами измерений и на стороне связи где у нас проставлены единички у нас как бы одно единственное значение ключевого поля может соединяться со множеством значений не ключевого поля таблицы фактов визуально здесь постарались передать Это с помощью вот такого расходящемся луча кстати вот стрелочки Я бы тут убрала либо их убрала либо перерисовал потому что мы только что видели что наоборот фильтрация будет идти от одного ко многим как-то тут некорректно они направлены Ну в свою очередь измерения могут иметь свои таблицы измерений например наша таблица клиенты может э иметь поле customer City и которое содержит тоже повторяющиеся значения в текстовом формате я могла бы сделать например нумерованный справочник городов связать его с таблицей клиента и получилась бы вот такая веточка То есть у нас таблица звезда она бы превратилась в такую подобию таблицы снежин схемы снежинка эти термины схемы типа звезда таблица фактов таблица измерений вам нужно чётко для себя определить и запомнить потому что это устойчивые термины как я уже сказала которые используются сообществом разработчиков Power Bi Если вы уже имеете опыт работы с моделями данных в Power Bi Но эти термины раньше вам были незнакомые то я вам рекомендую открыть свои прошлые работы в Power Bi и постараться классифицировать А таблицы в модели данных как таблиц измерений или таблиц фактов проверите насколько эффективно вы строили модели в powerbi без знания основ моделирования также по теме работы с таблицами измерений Я советую вам посмотреть видео на моём канале про медленно меняющиеся измерения ссылку оставлю в описании и на этом первый урок Мы пожалуй завершаем Давайте подведём итоги первого урока за этот урок мы познакомились с интерфейсом Power Bi Power query к Power query Мы ещё вернёмся а подробно Power query в этом курсе я не разбираю я фокусируют по созданию отчётов Power Bi из них подробно брали этапы подключения к данным преобразования данных и моделирования разобрали понятие запрос режим подключения импорта Direct quy разобрали ша шаги запроса функции языка M редактор кода м связи между таблицами таблицу фактов таблицу измерений схему типа звезда чтобы закрепить материал сегодняшнего урока я приглашаю Вас на практику ссылка будет в описании к следующему уроку советую посмотреть видео на моём канале про основные понятия Дак ссылка тоже будет в описании на этом сегодня всё с вами была Анна Шестопалова эксперт по Power Bi Если вы хотите больше узнать о Power Bi присоединяйтесь к каналу созвездия Power Bi ставьте колокольчик чтобы не пропустить новые видео а также присоединяйтесь к моему блогу в дн и сообществу ВКонтакте До встречи щем уроке жду всех на практику