PooHkrd
Пользователь
Сообщений: 6602
Регистрация: 22.02.2017
Excel x64 О365 / 2016 / Online / Power BI
#2
17.03.2020 16:21:24
Честно говоря, разницы в скорости расчетов при включении этой галки лично я не ощутил. Но при её активации вы не видите с каким файлом в данный момент работает запрос. В результате, если точно знаешь что обработка обычно занимает 15 минут, то не видя этих названий файлов слишком поздно понимаешь, что запрос тупо завис.
Вот горшок пустой, он предмет простой…
Hi ,
very much appreciate your help with this
i have a workbook with 50 power queries, of which 30 need to refresh ALL, at the same time.
some of them time out (i get the popular «this query doesn’t load with 100 secs», but not always, which is strange?
i have been informed that if i DESELECT «allowing data preview in the background» then this could help.
could anyone inform me why this is?, and if its a good idea. — i don’t need to work on the file whilst its refreshing.
the next point to improve speeds i have read, was to add Table.Buffer to my source code?
but where do i put this ?
my code to my query (where all others are pointing to is)
= Table.NestedJoin(Class, {«Column2»}, myid, {«Trnid»}, «myid», JoinKind.LeftOuter).
so how should this code read if i inserted the table.buffer?
thanks for your help on this, its much appreciated as its taken so much time to get all the PQ’s working and is just so frustrating that now it doesn’t refresh properly on a consistent basis.
thanks
steve reeves
Power Query — это технология подключения к данным для их последующего анализа. Power Query – инструмент бизнес-анализа (BI), который ранее могли использовать только подготовленные ИТ-специалисты. Сегодня Microsoft стремится сделать BI доступным обычному пользователю Excel. Power Query способен подключаться к нескольким источникам данных, объединять их и помещать в одну электронную таблицу. Power Query управляет данными еще до того, как они попадут в Excel. Данные Power Query можно загрузить непосредственно на лист Excel или в модель данных Excel. При загрузке данных на лист Excel они отображаются в виде таблицы, которую можно обновить (она повторно подключается к источнику и извлекает новые данные). Работа с моделью данных описана в Марк Мур. Power Pivot.
Скачать заметку в формате Word или pdf, примеры в архиве. Оригинальные рабочие файлы можно также скачать здесь.
Установка Power Query
Функции Power Query доступны в версиях Excel 2016 и 2019 на вкладке Данные в области Получить и преобразовать данные (рис. 1).
Рис. 1. Функции Power Query доступны в Excel 2016 или 2019 на вкладке Данные
Если вы используете Excel 2010 или 2013 загрузите Power Query с сайта Microsoft (выберите 32- или 64-битный вариант). Не все конфигурации поддерживают Power Query (например, на одном из ПК у меня установлен MS Office для дома и учебы 2013; на нем Power Query не запустился). В более ранних версиях Excel Power Query не работает. Для установки Power Query закройте Excel, загрузите msi-файл, запустите его, следуйте подсказкам. Если установка прошла успешно, вы увидите новую вкладку в Excel (рис. 2).
Рис. 2. Вкладка Power Query в Excel 2010 или 2013; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке
Подключение к источникам данных
Power Query может подключаться к различным типам источников данных:
- Из Интернета. При нажатии на эту кнопку, появится окно ввода URL-адреса для извлечения данных.
- Из файла. Именно этому варианту посвящена основная часть настоящей заметки.
- Из базы данных. Иногда ИТ-специалисты защищают свои базы данных и не предоставляют к ним доступ. Скажите, что вам нужен доступ только для чтения.
- Из облака Azure, где вы можете хранить собственные данные, или через Azure Marketplace приобрести доступ к наборам данных. Существуют наборы данных, связанные с демографией, статистикой занятости и погодными условиями.
- Из других источников. Например, из Facebook.
Извлечение данных из Интернета
Откройте Excel. Перейдите на вкладку Power Query или Данные (в зависимости от версии Excel). Нажмите на кнопку Из интернета. В появившемся окне введите URL-адрес http://markmoorebooks.com/powerquery-capitals/ После подключения Power Query появится окно навигатора (рис. 3). В левой части окна отображаются таблицы, доступные на веб-странице. Эта конкретная веб-страница на сайте Майка Мура имеет только одну таблицу.
Рис. 3. Окно навигатора
Щелкните по Table 0. В правой части окна появится предварительный просмотр несколько записей из всего массива данных с веб-страницы. Пока данные не загружены в Excel, и вы можете просто их изучить (нет необходимости загружать сотни или тысячи записей в Excel только для того, чтобы узнать, что вы выбрали неверную таблицу. Можно также обновить запрос, нажав пиктограмму маленькой страницы в правом верхнем углу окна навигатора. Это удобно, если вы подключаетесь к таблице, которая часто меняется, например, это данные валютного курса или цены на акции. Если вы выбрали верную таблицу, нажмите Загрузить. Excel подключится к веб-странице и загрузит данные (рис. 4).
Рис. 4. Загруженная таблица
Загруженные данные можно обновить несколькими способами:
- Щелкните правой кнопкой мыши на ячейке таблицы. Выберите в меню Обновить.
- Выберите ячейку в таблице. Пройдите по меню Данные –> Запросы и подключения –> Обновить всё -> Обновить.
Это самый простой способ загрузки данных в Excel с помощью Power Query. Вы подключились к источнику и извлекли необработанные данные. Иногда этого недостаточно. Но даже в этом простом примере есть ошибка. Обратите внимание, что заголовки столбцов рассматриваются как строки данных, а не как строки заголовков. Чтобы исправить это, необходимо сформировать данные.
Запросы книги Excel
Power Query запоминает, как он ранее загружал данные. Каждая загрузка хранится в пакете запроса. Пакет запроса отображается на панели Запросы и подключения. Давайте поправим наш запрос. Наведите курсор мыши на Table 0. Вы увидите информацию о запросе (рис. 5). Кликните Изменить. Откроется редактор запросов.
Рис. 5. Информация о запросе
Редактор запросов
Рассмотрим работу редактора на примере CSV-файла. Перейдите на вкладку Данные, кликните на кнопке Из текстового/CSV файла. Выберите тестовый файл StatesAndCapitals.csv. Нажмите Импорт. В окне импорта кликните Изменить. Откроется окно Редактора запросов. Здесь очень много функций, которые позволяют подготовить данные к импорту.
Рис. 6. Редактор Power Query
Книга может содержать несколько запросов. Если кликнуть на стрелке 1 (см. рис. 6) можно переключаться между запросами. Автофильтр (2) был создан автоматически. Можно нажать кнопки для фильтрации данных. Кнопка 3 дает доступ к тем же функциям, что и на ленте. Если вам нужно изменить порядок столбцов, щелкните заголовок столбца и перетащите в нужное место. Вы можете задать имена столбцов по своему усмотрению. Щелкните правой кнопкой мыши по столбцу и выберите Переименовать.
Обратите внимание, что без Power Query вам нужно было бы импортировать все данные в Excel, а затем применить автофильтр. Что произойдет, если весь набор данных не помещается на листе? Вам нужно будет придумать, как разделить данные на меньшее количество строк. С помощью Power Query можно использовать редактор запросов для просмотра данных, их фильтрации и импорта в Excel только интересующих вас записей. Кроме того, Power Query запоминает все выполненные действия. Вы можете обновить запрос, и все шаги будут выполнены повторно.
Параметры запроса
Справа в окне редактора расположены Параметры запроса. Вы можете переименовать запрос (см. цифру 4 на рис. 6). Сейчас запрос называется StatesAndCapitals. Ниже записываются действия в рамках запроса. Таким образом Power Query запоминает, что вы сделали, и повторно применяет все шаги при нажатии кнопки Обновить. Здесь вы также можете изменить порядок шагов.
Подробнее о функциях ленты Редактора Power Query. На вкладке Главная крайняя слева группа Закрыть представлена одной кнопкой Закрыть и загрузить (рис. 7).
Рис. 7. Кнопка Закрыть и загрузить
Кнопка закрывает Редактор и помещает данные в электронную таблицу. По умолчанию, данные будут загружены на текущий лист и представлены в форме Таблицы. Если вы нажмете на стрелку, то получите доступ к дополнительной опции Закрыть и загрузить в…, позволяющей загрузить результат запроса на другой лист и в другом формате (рис. 8).
Рис. 8. Дополнительные опции кнопки Закрыть и загрузить
Группа Запрос включает 4 кнопки (рис. 9).
Рис. 9. Группа Запрос
Если исходные данные, загруженные в Редактор, постоянно изменяются (например, это котировки акций или база данных), кнопка Обновить предварительный просмотр подсоединится к источнику данных и обновит данные в Редакторе.
Кнопка Свойства (рис. 10) открывает окно, в котором можно переименовать запрос, добавить описание или задать опцию Быстрая загрузка данных (при этом Excel может подвиснуть).
Рис. 10. Свойства запроса
Кнопка Расширенный редактор позволяет редактировать запрос на уровне кода (рис. 11). Power Query использует новый язык программирования под названием M.
Рис. 11. Расширенный редактор
Кнопка Управление позволяет (рис. 12):
- удалить запрос;
- создать идентичный запрос (продублировать), с тем чтобы сохранить текущий запрос, а дубль продолжить редактировать;
- создать запрос, ссылающийся на текущий запрос.
Рис. 12. Кнопка Управление
Группа Управление столбцами.
Рис. 13. Группа Управление столбцами
Опция Выбор столбцов открывает окно, в котором можно выбрать столбцы для импорта в Excel. Опция Перейти к столбцу также открывает новое окно, в котором представлен список всех столбцов, и есть окно поиска. Эти опции удобнее обычных средств, если таблица очень большая, и ее сложно обозреть на экране. Опция Удалить столбцы удаляет выбранный столбец из запроса. А опция Удалить другие столбцы удаляет все остальные столбцы, кроме выбранного.
Для следующего небольшого упражнения должен быть открыт Редактор запросов с данными StatesAndCapitals. Щелкните столбец Column2, чтобы выделить его (рис. 14).
Рис. 14. Выделение столбца в Редакторе запросов
Щелкните кнопку Удалить столбцы. Column2 теперь нет. На самом деле, нам еще понадобится этот столбец. Чтобы вернуть его перейдите в окно Параметры запроса и отмените удаление столбца, щелкнув значок рядом с пунктом Удаленные столбцы (рис. 15). Column2 восстановится. Вы можете рассматривать записанные шаги как пункты множественной отмены.
Рис. 15. Отмена последнего шага Удалить столбцы
Группа Сократить строки позволяет сохранить или удалить заданное число строк, начиная с выбранной (рис. 16). Опция Удалить чередующиеся строки позволяет выполнить систематическую выборку. Например, вы хотите сохранить каждую N-ю запись. Если вы добавили вычисляемые столбцы в Power Query, некоторые из вычислений могут приводить к ошибке. Такие строки можно удалить опцией Удалить ошибки.
Рис. 16. Группа Сократить строки
Следующая группа позволяет отсортировать данные по возрастанию или убыванию на основе выбранного столбца.
Группа Преобразование (рис. 17). Это, наверное, самое мощное средство Power Query. Рассмотрим пример. Если у вас был открыт Редактор запросов, закройте его.
Рис. 17. Группа Преобразование
В качестве источника используем файл Excel, содержащий отчасти некорректные записи. В меню Данные кликните Получить данные –> Из файла –> Из книги. Выберите SalesData.xlsx. Выберите Table1 в окне Навигатора. Предварительный просмотр таблицы появится в правой части окна (рис. 18).
Рис. 18. Окно навигатора с предварительным просмотром данных из Table1
Поскольку вы хотите изменить данные перед загрузкой в Excel, не нажимайте кнопку Загрузить, вместо этого нажмите кнопку Изменить. Откроется Редактор запросов. Структура этого файла не соответствует принятым стандартам базы данных. Столбец Регион содержит собственно регион и через дефис имя продавца. Разделим этот столбец на два. Щелкните на столбце Регион, чтобы выбрать его. Нажмите кнопку Разделить столбец, а затем по разделителю. Откроется окно Разделить столбец по разделителю (рис. 19). Excel сообразил и подставил в первое поле —Пользовательский—, а во второе знак дефиса. Если этого не произойдет, сделайте установки вручную. Нажмите OK. Столбец разделится на два. Переименуйте новые столбцы.
Рис. 19. Окно разделения столбца по разделителю
Обратите внимание на три варианта в поле Разделение по. Вы можете столкнуться с проблемой, если разделитель используется также внутри данных. Например, North-East-Lisa, или West-Jean-Paul. Расширенные параметры позволяют в качестве разделителя указать специальный символ.
Замените регион Intl на International. Для этого выделите столбец Регион, щелкните на кнопке Замена значений. В открывшемся окне заполните поля (рис. 20). Нажмите Ok.
Рис. 20. Замена значений
Обратите внимание, если вы поместите art в поле Значение для поиска, замена выполнится для фрагментов слов artist, part, rampart и т.д. Воспользуйтесь опцией Ячейки целиком в поле Расширенные параметры (рис. 21). Здесь также можно добавить некоторые специальные символы в поля Найти и Заменить.
Рис. 21. Расширенные параметры окна Замена значений
Кнопка Тип данных. Большую часть времени пользователям Excel не нужно беспокоиться о типах данных. Excel (и Power Query) сами определяют, что перед ними: число, текст или дата. Однако, поскольку вы собираетесь выполнять анализ импортированных данных или включать их в диаграмму, лучше убедиться, что данные соответствуют ожиданиям, сразу при импорте, а не изменять их позже. Изменение типов данных при импорте также поможет выявить неточности. Продолжим работу с текущим запросом.
Щелкните заголовок столбца Дата, чтобы выбрать столбец. Нажмите кнопку Тип данных. Выберите в меню Дата (рис. 22). Первая строка содержит ошибку. Что-то пошло не так с изменением типа данных. Удалите последний шаг преобразований, чтобы увидеть предыдущее значение (его также можно увидеть на рис. 20). База данных содержит ошибку – 6/32/2016.
Рис. 22. Задание типа данных
У вас есть несколько способов исправить ошибку:
- Можно удалить строки, содержащие ошибку (пройдите в Редакторе по меню Сократить строки –> Удалить строки –> Удалить ошибки)
- Можно добавить вычисляемый столбец, который проверяет ошибки и заменяет их датой по умолчанию.
- Можно исправить данные (в исходном файле).
Способ, которым вы решите исправить ошибку, зависит от вас. Задача примера – показать, что внимание в отношении правильных типов данных помогает обнаружить ошибки.
Название опции Использовать первую строку в качестве заголовка говорит само за себя.
Кнопка Группировать по позволяет суммировать данные по мере необходимости. Закройте текущий запрос, нажав Закрыть и загрузить. Начнем работу с новым запросом. Перейдите на новый лист Excel. Пройдите по меню Данные –> Получить данные –> Из файла –> Из книги. Импортируйте файл GroupBy.xlsx. Выберите Table2. Нажмите Изменить, чтобы перейти в Редактор запросов. Предположим, вам нужно отобразить среднее кол-во проданных изделий в разрезе регионов. Нажмите кнопку Группировать по. В открывшемся окне введите значения, как на рис. 23. Нажмите Ok.
Рис. 23. Параметры группировки
Ваш набор данных изменяется, и теперь у вас есть только регионы и среднее кол-во проданных изделий (рис. 24). Для красоты замените регион Intl на International, отсортируйте регионы по алфавиту, назначьте формат для среднего кол-ва – Целое число.
Рис. 24. Среднее кол-во проданных изделий по регионам
Также можно сгруппировать несколько столбцов. Если вы остались в Редакторе запросов, перейдите к области Параметры запроса и щелкните значок x рядом с Сгруппированные строки, чтобы удалить группировку.
Рис. 25. Отмена группировки
Выделите столбец Region. Нажмите кнопку Группировать по. Включите режим Подробнее (рис. 26). Нажмите кнопку Добавление группирования, чтобы добавить еще один столбец. Измените установки, как показано на рис. 26. Нажимать Ok.
Рис. 26. Группировка по двум столбцам
В наборе данных теперь есть среднее количество проданных товаров для каждой комбинации региона и продавца (рис. 27).
Рис. 27. Исходные данные, сгруппированные по регионам и продавцам
Вы можете спросить, зачем всё это нужно? Ведь Excel уже имеет сводные таблицы… Excel предоставляет различные способы выполнить одну и туже работу. Power Query может быть лучше, чем сводная таблица (или формулы) в следующих ситуациях:
- Кол-во строк более 1 млн, что не позволит разместить всю базу данных на одном листе.
- Файл Excel и так подтормаживает. Еще одна сводная таблица еще более замедлит расчеты.
- Вам нужно очистить данные, прежде чем собрать их в сводную таблицу. Поскольку данные в последующем будут обновляться, это может потребовать постоянной их «чистки».
Добавление запроса
Речь о добавлении второго запроса. Чтобы это было возможно, два источника данных должны иметь идентичные структуры: одинаковое количество столбцов, одинаковые типы данных в каждом столбце, одинаковые имена столбцов, одинаковый порядок столбцов.
Рассмотрим, например, файлы JanSales.xlsx и FebSales.xlsx. Они имеют одинаковую структуру, в них просто содержатся данные за разные месяцы. Задача – объединить данные из этих файлов. Создайте запрос для JanSales.xlsx. Оставаясь в Редакторе запросов создайте новый запрос, пройдя по меню Главная –> Новый запрос –> Создать источник –> Файл –> Excel (рис. 28).
Рис. 28. Новый запрос
Выберите FebSales.xlsx. Теперь у вас есть два запроса в книге (рис. 29).
Рис. 29. Два запроса
Нажмите на ленте кнопку Добавить запросы. Выберите таблицу, которая не является текущей (рис. 30). Нажмите Ok. Теперь оба запроса объединены в один – FebSales. Нажмите Закрыть и загрузить. Данные по продажам за два месяца отразятся на одном листе Excel. На их основе можно построить сводную таблицу или дашборд.
Рис. 30. Добавление новой таблицы к текущей
При добавлении запросов источники данных не обязательно должны быть одного типа. Можно объединить файл CSV с файлом Excel, если они имеют одинаковую структуру. Даже если первоначально у них разная структура, вы можете привести их к единой структуре в процессе обработки данных в Редакторе запросов.
Объединение запросов
Эта опция описывает ситуацию, когда у вас есть две таблицы, и у них есть одно общее поле, которое можно использовать для создания связи между таблицами и извлечения записей из обеих таблиц на основе общего значения. Например, у вас есть таблица с клиентами, и другая таблица со счетами клиентов. Каждый клиент может иметь один или несколько счетов-фактур (это один ко многим). Вы можете использовать Power Query для агрегирования счетов по клиентам.
Перейдите на новый лист. Импортируйте Companies.csv. Оставаясь в Редакторе запросов, пройдите по меню Создать источник –> Файл –> Текстовый или CSV-файл. Откройте CompanyInvoice.csv. У вас два запроса в одном файле (рис. 31).
Рис. 31. Клиенты и счета
Каждая компания имеет свой идентификатор и продавца (левая таблица). Справа показано, что каждая компания имеет несколько счетов. Цель – создать запрос, который будет возвращать информацию по компании и сумму всех счетов-фактур. Щелкните на запрос Company, чтобы выбрать его. Щелкните Объединить запросы. Появится окно Слияние (рис. 32). Выберите запрос для слияния – CompanyInvoice и установите Тип соединения. Кликните на поле CompanyID в обеих таблицах (это создает связь между таблицами). Нажмите Ok.
Рис. 32. Окно Слияние
Вы связали исходные файлы. В окне Редактора отображается новый столбец. Вам нужно нажать на новый столбец и сообщить Power Query, какие записи нужно вернуть и что вы хотите выполнить агрегацию. Нажмите на двойную стрелку в NewColumn (рис. 33). Выберите Агрегирование (при этом параметры изменятся). Выберите Сумма Invoice Total. Кликните Ok. Вы создали запрос, который объединяет два CSV-файла и вычисляет общую сумму счетов по клиенту (рис. 34).
Рис. 33. Завершение агрегации двух таблиц
Рис. 34. Агрегированная таблица
Типы соединений
Power Query позволяет определить несколько типов соединений между таблицами (рис. 35):
- Внешнее соединение слева. Запрос вернет все записи из левой таблицы и только совпадающие записи из правой таблицы.
- Внешнее соединение справа. Запрос вернет все записи из правой таблицы и только совпадающие записи из левой таблицы.
- Полное внешнее. Запрос вернет все записи из обеих таблиц.
- Внутреннее. Это наиболее распространенный тип. Запрос вернет записи из обеих таблиц, где общее поле равно.
- Анти-соединение слева. Запрос вернет записи из левой таблицы, в которой нет совпадений в правой таблице.
- Анти-соединение справа. Запрос вернет записи из правой таблицы, где нет совпадения в левой таблице.
Рис. 35. Типы соединений
Вкладка Преобразование
До сих пор вы рассмотрели кнопки Редактора запросов на вкладке Главная. Перейдем на вкладку Преобразование. Часть кнопок совпадает, но есть и целый ряд новых (рис. 36). Группа Таблица. Транспонирование: переключение столбцов и строк. Обратить строки: обратный порядок сортировки записей. Считать строки: подсчитывает количество строк и дает одну запись с количеством строк (это хороший способ увидеть, поместятся ли все записи на листе).
Рис. 36. Вкладка Преобразование; показаны только оригинальные кнопки; для удобства лента представлена в виде двух рядов
Группа Любой столбец. Заменить ошибки: заменяет ошибки в выбранных столбцах указанным значением (рис. 37). Заполнить: заполняет пустые ячейки данными из других строк. Это не перезапишет непустые ячейки. Полезно, когда ради украшательства таблицы не заполняют по всем строкам, а группируют, внося повторяющиеся значения один раз.
Рис. 37. Заменить ошибки
Отменить свертывание столбцов. Давайте сделаем небольшое упражнение. Закройте все открытые окна запросов. Импортируйте файл Unpivot.csv (рис. 38). Вы часто будете получать файлы в таком формате. Отдельный столбец для каждого месяца неудобен для аналитических целей. Сводную таблицу по не сделаешь. Решение – преобразовать данные внутри запроса перед импортом в Excel.
Рис. 38. Таблица в формате неудобном для дальнейшей обработки
Кликните на столбец Jan, затем нажмите Shift и кликните на столбце Dec, чтобы выбрать все столбцы месяцев. Нажмите кнопку Отменить свертывание столбцов на вкладке Преобразования. Запрос отобразит все месяцы в одном столбце и значения в следующем столбце (рис. 39). Можно переименовать столбец Атрибут в Месяц.
Рис. 39. Вид запроса после отмены свертывания столбцов
Столбец сведения: это противоположная операция. Вернитесь к запросу из предыдущего примера (рис. 39), выделите столбец Атрибут, кликните кнопку Столбец сведения, Редактор запросов создаст один столбец для каждого месяца.
Группа Столбец «Текст». Кнопку Формат можно использовать для форматирования текстовых значений в столбце (рис. 40).
Рис. 40. Кнопка Формат
Усечь: удаляет начальные и конечные пробелы из столбца (но не трогает лишние пробелы между словами). Очистить: удаляет все непечатные символы из столбца. У вас когда-нибудь была ситуация, когда вы вставляете данные в Excel, и данные переходят к следующей строке? Это потому, что исходные данные имели непечатные (и невидимые) возвраты каретки.
Извлечь: извлекает значения из столбца и заменяет их усеченными/измененными значениями (рис. 41). Например, если у вас есть столбец с полным названием месяцев – январь, февраль и т.д., – и вы использовали опцию Извлечь –> Первые символы –> 3 символа, то столбец будет преобразован в янв, фев и т.д. (с помощью опции Формат –> Добавить суффикс вы можете снабдить записи точкой на конце – янв., фев.). Опция Длина возвращает число символов в ячейке.
Рис. 41. Кнопка Извлечь
Выполнить анализ: используется для парсинга веб-сайтов, которые возвращают данные в формате XML или JSON (рис. 42).
Рис. 42. Кнопка Выполнить анализ
Группа Столбец «Количество». Команды в этой группе недоступны, пока вы не выберите столбец, содержащий числа. Все функции в этой группе изменят содержимое столбца и применят указанное вычисление (рис. 43). Например, если требуется округлить числа в столбце, щелкните Округление, а затем Округление с увеличением (вверх), Округление с уменьшением или Округление… до заданного числа знаков после запятой.
Рис. 43. Кнопки группы Столбец «Количество»
Вкладка Добавление столбца
На этой вкладке вы также увидите много знакомых кнопок. Но есть и новые (рис. 44).
Рис. 44. Новые кнопки на вкладке Добавление столбца
Настраиваемый столбец: позволяет добавлять столбцы с пользовательским расчет. Например, импортируйте файл Salesdata.xlsx (если вы выполняли примеры выше, то файл уже импортирован; данные сохранены в Table1, так что просто выберите в Редакторе соответствующий запрос и нажмите кнопку Изменить). Перейдите в Редакторе на вкладку Добавление столбца. Кликните на кнопке Настраиваемый столбец. Откроется окно Настраиваемый столбец. Переименуйте новый столбец. Кликните после знака равенства и введите формулу, как показано на рисунке (можно выбрать имя столбца, затем нажать кнопку Вставить, или дважды щелкнуть имя столбца, чтобы вставить его в поле формулы). Нажимать Ok.
Рис. 45. Окно Настраиваемый столбец
Новый столбец Сумма добавляется в запрос данных (рис. 46).
Рис. 46. Настраиваемый столбец Сумма добавляется в запрос
Столбец индекса: в новый столбец вставляет счетчик для каждой строки. Это полезно, если вам нужно запомнить или сохранить исходный порядок сортировки данных (рис. 47).
Рис. 47. Столбец индекса
Трюки в Power Query
Импорт метаданных в Excel. Метаданные – информация о файле, такая, как имя, расширение, время создания, размер и др. Откройте новую книгу Excel. Перейдите на вкладку Данные. Кликните Получить данные –> Из файла –> Из папки (рис. 48).
Рис. 48. Получение метаданных файлов
Выберите папку (рис. 49). Нажимать Ok.
Рис. 49. Выбор папки для импорта метаданных
Power Query возвращает следующие данные:
Рис. 50. Метаданные
Нажмите кнопку Закрыть и загрузить. Данные отразятся в Excel в виде таблицы. Чтобы увидеть, как это работает в проводнике Windows перейдите к выбранной папке. Создайте новый файл (любого типа) и сохраните его в эту папку. Я поместил в ней файл с картинкой. Вернитесь в Excel. Кликните правой кнопкой мыши на таблице и выберите Обновить. Новый файл появится в таблице (рис. 51).
Рис. 51. После обновления таблица содержит новый файл
В Редакторе запросов есть столбец с именем Attributes (он есть на рис. 50, но не на рис. 51). В столбце есть иконка с двумя стрелками. Если вы нажмете на эту стрелку, вы получите всплывающее окно, где вы можете включить дополнительные метаданные обо всех файлах (рис. 52).
Рис. 52. Перечень всех доступных метаданных
Загрузка нескольких файлов одной командой. Воспользуемся папкой MonthlySales, в которой имеется два файла: JanSales.csv и FebSales.csv. Откройте новую книгу Excel. Перейдите на вкладку Данные. Кликните Получить данные –> Из файла –> Из папки. Выберите папку MonthlySales. Нажимать Ok. Пока мы в точности повторили первые шаги процедуры загрузки метаданных. Однако, обратите внимание на значок в первом столбце (рис. 53). Кликните на него, и начнется загрузка содержимого файлов.
Рис. 53. Пиктограмма загрузки содержимого файлов
Откроется окно Объединить файлы (рис. 54). Нажмите Ok. Данные из двух файлов объединены в одном запросе.
Рис. 54. Окно Объединить файлы
Можете удалить столбец Sourse.Name. Нажмите Закрыть и загрузить.
Рис. 55. Запрос, объединяющий все файлы в папке
Когда вы получите файл данных за следующий месяц, просто сохраните его в той же папке и обновите таблицу. Power Query снова прочитает содержимое папки, и новый месяц будет включен в таблицу Excel. Другими словами, при нажатии кнопки Обновить Power Query будет обрабатывать все файлы в папке.
Больше информации о Power Query см. Кен Пульс и Мигель Эскобар. Язык М для Power Query.
Время на прочтение
7 мин
Количество просмотров 194K
В данной статье я хочу рассказать о некоторых возможностях бесплатной и крайне полезной, но пока еще мало известной надстройки над MS Excel под названием Power Query.
Power Query позволяет забирать данные из самых разных источников (таких как csv, xls, json, текстовых файлов, папок с этими файлами, самых разных баз данных, различных api вроде Facebook opengraph, Google Analytics, Яндекс.Метрика, CallTouch и много чего еще), создавать
повторяемые последовательности обработки
этих данных и загружать их внутрь таблиц Excel или самого data model.
И вот под катом вы можете найти подробности всего этого великолепия возможностей.
Совместимость и технические подробности
Power Query доступен бесплатно для всех версий Windows Excel 2010, 2013 и встроен по умолчанию в Windows Excel 2016. Для пользователей MacOS X Power Query недоступен (впрочем, даже без этого маковский Excel отвратителен на ощупь и продвинутые пользователи, включая меня, чаще всего работают с нормальным Excel через Parallels или запуская его на удаленной виндовой машинке).
Также, Power Query встроен в новый продукт для бизнес аналитики — Power BI, а еще, ходят слухи, что Power Query будет появляться и в составе других продуктов от Microsoft. Т.е. Power Query ждет светлое будущее и самое время для адептов технологий Microsoft (и не только) заняться его освоением.
Как оно работает
После установки Power Query в интерфейсе Excel 2010–2013 появляется отдельная одноименная вкладка.
В новом Excel 2016 функционал Power Query доступен на вкладке Data (данные), в блоке “Get & Transform”.
Сначала, в интерфейсе Excel мы выбираем конкретный источник данных, откуда нам их нужно получить, и перед нами открывается окошко самого Power Query с предпросмотром первых строчек загруженных данных (область 1). В верхней части окошка располагается Ribbon с командами по обработке данных (область 2). И в правой части экрана (область 3) у нас расположена панель с последовательностью всех действий, которые применяются к данным.
Возможности Power Query
У Power Query очень много возможностей и я хочу остановиться на некоторых из числа моих любимых.
Как я уже писал выше, Power Query замечателен тем, что позволяет подключаться к самым разным источникам данных. Так он позволяет загружать данные из CSV, TXT, XML, json файлов. Притом процесс выбора опций загрузки тех-же CSV файлов гибче и удобнее, чем он реализован штатными средствами Excel: кодировка автоматически выбирается часто правильно и можно указать символ разделителя столбцов.
Объединение файлов лежащих в папке
Power Query умеет забирать данные из указанной папки и объединять их содержимое в единые таблицы. Это может быть полезно, например, если вам периодически приходят какие-то специализированные отчеты за отдельный промежуток времени, но данные для анализа нужны в общей таблице. Гифка
Текстовые функции
К столбцам из текста в Power Query по нажатию на кнопки на Ribbon можно применять такие функции как:
- Разделить столбец по символу или по количеству символов. И в отличие от Excel можно задать максимальное количество столбцов, а также направление откуда нужно считать символы — слева, справа.
- Изменить регистр ячеек в столбце
- Подсчитать количество символов в ячейках столбца.
Числовые функции
К столбцам с числовыми значениями по нажатию на кнопки на Ribbon можно применять:
- Арифметические операции
- Возводить в степени, вычислять логарифмы, факториалы, корни
- Тригонометрические операции
- Округлять до заданных значений
- Определять четность и т.д.
Функции для работы с датами, временем и продолжительностью
К столбцам со значениями даты и времени по нажатию на кнопки на Ribbon можно применять:
- Автоматическое определение формата вписанной даты (в excel c этим большая боль)
- Извлекать в один клик номер месяца, дня недели, количество дней или часов в периоде и т.п.
Unpivot — Pivot
В интерфейсе Power Query есть функция “Unpivot”, которая в один клик позволяет привести данные с одной метрикой разложенные по столбцам по периодам к форме, которая будет удобна для использования в сводных таблицах (понимаю что трудно написал — смотрите пример). Также, есть функция с обратным действие Pivot. Гифка
Операция Merge — смерть ВПР
Функция ВПР (VLOOKUP) одна из наиболее используемых функций в MS Excel. Она позволяет подтягивать данные в одну таблицу из другой таблицы по единому ключу. И вот как раз для этой функции в Power Query есть гораздо более удобная альтернатива — операция Merge. При помощи этой операции соединение таблиц нескольких таблиц в одну по ключу (по простому или по составному ключу, когда соответствие нужно находить по нескольким столбцам) выполняется буквально в 7 кликов мыши без ввода с клавиатуры.
Операция Merge — это аналог join в sql, и ее можно настроить чтобы join был разных типов — Inner (default), Left Outer, Right Outer, Full Outer.
Upd.Мне тут подсказали, что Power Query не умеет делать Aproximate join, а впр умеет. Чистая правда, из коробки альтернатив нет. Гифка
Подключение к различным базам данных. Query Folding.
Power Query также замечателен тем, что умеет цепляться к самым разным базам данных — от MS SQL и MySQL до Postgres и HP Vertica. При этом, вам даже не нужно знать SQL или другой язык базы данных, т.к. предпросмотр данных отображается в интерфейсе Power Query и все те операции, которые выполняются в интерфейсе прозрачно транслируются в язык запросов к базе данных.
А еще в Power Query есть понятие Query Folding: если вы подключены к совместимой базе данных (на текущий момент это MS SQl), то тяжелые операции по обработке данных Power Query будет стараться выполнить на серверной стороне и забирать к себе лишь обработанные данные. Эта возможность радикально улучшает быстродействие многих обработок.
Язык программирования “М”
Надстройка Power Query — это интерпретатор нового, скриптового, специализированного для работы с данными, языка программирования М.
На каждое действие, которое мы выполняем с данными в графическом интерфейсе Power Query, в скрипт у нас пишется новая строчка кода. Отражая это, в панели с последовательностью действий (область 3), создается новый шаг с говорящим названием. Благодаря этому, используя панель с последовательностью действий, мы всегда можем посмотреть как выглядят у нас данные на каждом шаге обработки, можем добавить новые шаги, изменить настройки применяемой операции на конкретном шаге, поменять их порядок или удалить ненужные шаги. Гифка
Также, мы всегда можем посмотреть и отредактировать сам код написанного скрипта. И выглядеть будет он примерно так:
Язык M, к сожалению, не похож ни на язык формул в Excel, ни на MDX и, к счастью, не похож на Visual Basic. Однако, он очень прост в изучении и открывает огромные возможности по манипуляции данными, которые недоступны с использованием графического интерфейса.
Загрузка данных из Яндекс.Метрики, Google Analytics и прочих Api
Немного овладев языком “M” я смог написать программки в Power Query, которые умеют подключаться к API Яндекс.Метрики и Google Analytics и забирать оттуда данные с задаваемыми настройками. Программки PQYandexMetrika и PQGoogleAnalytics я выложил в опенсорс на гитхаб под лицензией GPL. Призываю пользоваться. И я буду очень рад, если эти программы будут дорабатываться энтузиастами.
Для Google Analytics подобного рода экспортеров в разных реализациях достаточно много, но вот для Яндекс.Метрики, насколько я знаю, мой экспортер был первым публично доступным, да еще и бесплатным
Power Query умеет формировать headers для post и get запросов и забирать данные из интернета. Благодаря этому, при должном уровне сноровки, Power Query можно подключить практически к любым API. В частности, я для своих исследований дергаю данные по телефонным звонкам клиентов из CallTouch API, из API сервиса по мониторингу активности за компьютером Rescuetime, занимаюсь парсингом нужных мне веб-страничек на предмет извлечения актуальной информации.
Еще раз про повторяемость и про варианты применения
Как я уже писал выше, скрипт Power Query представляет собой повторяемую последовательность манипуляций, применяемых к данным. Это значит, что однажды настроив нужную вам обработку вы сможете применить ее к новым файлам изменив всего один шаг в скрипте — указав путь к новому файлу. Благодаря этому можно избавиться от огромного количества рутины и освободить время для продуктивной работы — анализа данных.
Я занимаюсь веб-аналитикой и контекстной рекламой. И так уж получилось, что с момента, как я познакомился с Power Query в ее интерфейсах я провожу больше времени, чем в самом Excel. Мне так удобнее. Вместе с тем возросло и мое потребление другой замечательной надстройки в MS Excel — PowerPivot.
Вот часть задач, которые я делаю с использованием Power Query:
- разбираю семантику для Толстых проектов,
- Делаю частотные словари,
- Создаю веб-аналитические дашборды и отчеты для анализа конкретных срезов,
- Восстанавливаю достижение целей в системах веб-аналитики, если они не настроены на проекте,
- Сглаживаю прогноз вероятности методами Андрея Белоусова (+Байеса:),
- Делаю аудит контекстной рекламы на данных из K50 статистика,
- И много других разных ad-hoc analysis задач, которые нужно сделать лишь однажды
Вот bi систему, про которую я рассказывал на Yac/M 2015 (видео) я делал полнстью при помощи Power Query и загружал данные внутрь PowerPivot.
Пару слов про локализацию
На сайте Microsoft для пользователей из России по умолчанию скачивается Power Query с переведенным на русским язык интерфейсом. К счастью, локализаторы до перевода на русский языка программирования (как это сделано с языком формул в excel) не добрались, однако жизнь пользователям неоднозначными переводами сильно усложнили. И я призываю вас скачивать, устанавливать и пользоваться английской версией Power Query. Поверьте, она будет гораздо понятнее.
Ссылки по теме
Официальные ресурсы на английском:
- Скачать Английскую версию Power Query
- Справка по формулам языка M
- Ветка Форума Microsoft Technet про Power Query
На момент написания статьи на русском языке информации по Power Query практически нет, и то что мной найдено приведено ниже:
- Импорт данных из таблиц в Google Spreadsheets
- Power BI. Получаем данные из REST API
- Сообщество продвинутых пользователей Excel, Power Pivot и Power Query в Facebook
- Обновляемая страничка в Marketing-wiki про Power Query
На английском:
- Видео с демонстрацией возможностей Power Query на конференции TechEd North America
- Блог Chris Webb, пожалуй наиболее полный ресурс с примерами использования Power Query
- Книга Chris Webb — Power Query for Power BI and Excel
- Блог Ken Puls
- Курс «Excel для интернет-маркетинга»
- Курс «Power BI для интернет-маркетинга»
- Книга Ken Puls и Miguel Escobar — M is for Data Monkey
Create, load, or edit a query in Excel (Power Query)
Excel for Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 More…Less
Power Query offers several ways to create and load Power queries into your workbook. You can also set default query load settings in the Query Options window.
Tip To tell if data in a worksheet is shaped by Power Query, select a cell of data, and if the Query context ribbon tab appears, then the data was loaded from Power Query.
Know which environment you’re in Power Query is well-integrated into the Excel user interface, especially when you import data, work with connections, and edit Pivot Tables, Excel tables, and named ranges. To avoid confusion, it’s important to know which environment you are currently in, Excel or Power Query, at any point in time.
The familiar Excel worksheet , ribbon, and grid |
The Power Query Editor ribbon and data preview |
For example, manipulating data in an Excel worksheet is fundamentally different than Power Query. Furthermore, the connected data that you see in an Excel worksheet, may or may not have Power Query working behind the scenes to shape the data. This only occurs when you load the data to a worksheet or Data Model from Power Query.
Rename worksheet tabs It’s a good idea to rename worksheet tabs in a meaningful way, especially if you have a lot of them. It’s particularly important to clarify the difference between a worksheet of data, and a worksheet loaded from the Power Query Editor. Even if you have only two worksheets, one with an Excel table, called Sheet1, and the other a query created by importing that Excel table, called Table1, it’s easy to get confused. It’s always good practice to change the default names of worksheet tabs to names that make more sense to you. For example, rename Sheet1 to DataTable and Table1 to QueryTable. Now it’s clear which tab has the data and which tab has the query.
You can either create a query from imported data or create a blank query.
Create a query from imported data
This is the most common way to create a query.
-
Import some data. For more information, see Import data from external data sources.
-
Select a cell in the data and then select Query > Edit.
Create a blank query
You may want to just start from scratch. There are two ways to do this.
-
Select Data > Get Data > From Other Sources > Blank Query.
-
Select Data > Get Data > Launch Power Query Editor.
At this point, you can manually add steps and formulas if you know the Power Query M formula language well.
Or you can select Home and then select a command in the New Query group. Do one of the following.
-
Select New Source to add a data source. This command is just like the Data > Get Data command in the Excel ribbon.
-
Select Recent Sources to select from a data source you have been working with. This command is just like the Data > Recent Sources command in the Excel ribbon.
-
Select Enter Data to manually enter data. You might choose this command to try out the Power Query Editor independent of an external data source.
Assuming your query is valid and has no errors, you can load it back to a worksheet or Data Model.
Load a query from the Power Query Editor
In the Power Query Editor, do one of the following:
-
To load to a worksheet, select Home > Close & Load > Close & Load.
-
To load to a Data Model, select Home > Close & Load > Close & Load To.
In the Import Data dialog box, select Add this data to the Data Model.
Tip Sometimes the Load To command is dimmed or disabled. This can occur the first time you create a query in a workbook. If this occurs, select Close & Load, in the new worksheet, select Data > Queries & Connections > Queries tab, right click the query, and then select Load To. Alternatively, on the Power Query Editor ribbon select Query > Load To.
Load a query from the Queries and Connections pane
In Excel, you may want to load a query into another worksheet or Data Model.
-
In Excel, select Data > Queries & Connections, and then select the Queries tab.
-
In the list of queries, locate the query, right click the query, and then select Load To. The Import Data dialog box appears.
-
Decide how you want to import the data, and then select OK. For more information about using this dialog box, select the question mark (?).
There are several ways to edit a query loaded to a worksheet.
Edit a query from data in Excel worksheet
-
To edit a query, locate one previously loaded from the Power Query Editor, select a cell in the data, and then select Query > Edit.
Edit a query from the Queries & Connections pane
You may find the Queries & Connections pane is more convenient to use when you have many queries in one workbook and you want to quickly find one.
-
In Excel, select Data > Queries & Connections, and then select the Queries tab.
-
In the list of queries, locate the query, right click the query, and then select Edit.
Edit a query from the Query Properties dialog box
-
In Excel, select Data > Data & Connections > Queries tab, right click the query and select Properties, select the Definition tab in the Properties dialog box, and then select Edit Query.
Tip If you are in a worksheet with a query, select Data > Properties, select the Definition tab in the Properties dialog box, and then select Edit Query.
A Data Model typically contains several tables arranged in a relationship. You load a query to a Data Model by using the Load To command to display the Import Data dialog box, and then selecting the Add this data to the Data Model check box. For more information about Data Models, see Find out which data sources are used in a workbook data model, Create a Data Model in Excel, and Use multiple tables to create a PivotTable.
-
To open the Data Model, select Power Pivot > Manage.
-
At the bottom of the Power Pivot window, select the worksheet tab of the table you want.
Confirm that the correct table displays. A Data Model can have many tables.
-
Note the name of the table.
-
To close the Power Pivot window, select File > Close. It may take a few seconds to reclaim memory.
-
Select Data > Connections & Properties > Queries tab, right click the query, and then select Edit.
-
When finished making changes in the Power Query Editor, select File > Close & Load.
Result
The query in the worksheet and the table in the Data Model are updated.
If you notice that loading a query to a Data Model takes much longer than loading to a worksheet, check your Power Query steps to see if you are filtering a text column or a List structured column by using a Contains operator. This action causes Excel to enumerate again through the entire data set for each row. Furthermore, Excel can’t effectively use multithreaded execution. As a workaround, try using a different operator such as Equals or Begins With.
Microsoft is aware of this problem and it is under investigation.
You can load a Power Query:
-
To a worksheet. In the Power Query Editor, select Home > Close & Load > Close & Load.
-
To a Data Model. In the Power Query Editor, select Home > Close & Load > Close & Load To.
By default, Power Query loads queries to a new worksheet when loading a single query, and loads multiple queries at the same time to the Data Model. You can change the default behavior for all your workbooks or just the current workbook. When setting these options, Power Query doesn’t change query results in the worksheet or the Data Model data and annotations.
You can also dynamically override the default settings for a query by using the Import dialog box which displays after you select Close & Load To.
Global settings that apply to all your workbooks
-
In the Power Query Editor, select File > Options and settings > Query Options.
-
In the Query Options dialog box, on the left side, under the GLOBAL section, select Data Load.
-
Under the Default Query Load Settings section, do the following:
-
Select Use standard load settings.
-
Select Specify custom default load settings, and then select or clear Load to worksheet or Load to Data Model.
-
Tip At the bottom of the dialog box, you can select Restore Defaults to conveniently return to the default settings.
Workbook settings that only apply to the current workbook
-
In the Query Options dialog box, on the left side, under the CURRENT WORKBOOK section, select Data Load.
-
Do one or more of the following:
-
Under Type Detection, select or clear Detect column types and headers for unstructured sources.
The default behavior is to detect them. Clear this option if you prefer to shape the data yourself.
-
Under Relationships, select or clear Create relationships between tables when adding to the Data Model for the first time.
Before loading to the Data Model, the default behavior is to find existing relationships between tables, such as foreign keys in a relational database and import them with the data. Clear this option if you prefer to do this on your own.
-
Under Relationships, select or clear Update relationships when refreshing queries loaded to the Data Model.
The default behavior is to not update relationships. When refreshing queries already loaded to the Data Model, Power Query finds existing relationships between tables such as foreign keys in a relational database and updates them. This might remove relationships created manually after the data was imported or introduce new relationships. However, if you want to do this, select the option.
-
Under Background Data, select or clear Allow data previews to download in the background.
The default behavior is to download data previews in the background. Clear this option if you can want to see all the data right away.
-
See Also
Power Query for Excel Help
Manage queries in Excel
Need more help?
Want more options?
Explore subscription benefits, browse training courses, learn how to secure your device, and more.
Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.