power query код символа
Power Query. Погружение в М. Текстовый (строковый) тип данных
Только двойные кавычки
В Power Query можно использовать только двойные кавычки в отличие от многих других языков, где допускаются и одинарные и двойные.
Подстрока в кавычках
Чтобы заключить в кавычки подстроку нужно ввести два символа кавычек вначале подстроки и два символа кавычек в конце.
Перенос строки и возврат каретки
Чтобы ввести символ переноса строки нужно воспользоваться командой «#(lf)», а для возврата каретки используется «#(cr)». lf означает line feed, а cr — carriage return.
Табуляция
Чтобы ввести символ табуляции можно воспользоваться командой «#(tab)».
Unicode
Power Query понимает Unicode. Мы можем вместо «#(lf)» использовать,например, «#(000A)».
Помимо символов возврата каретки, переноса строки и табуляции мы можем ввести любой символ Unicode.
В данном примере в конце строки добавим сердечко.
Сравнение строк
Мы можем сравнивать текстовые значения.
Чем дальше символ от начала алфавита, тем он больше.
Маленькие символы больше больших, например, маленькая «a» больше большой «Z».
В данном примере получится TRUE.
Конкатенация строк
Чтобы конкатенировать два строковых значения используется символ &.
Конкатенация строки и числа
Чтобы объединить строку и число нужно сначала число преобразовать в текст, например, с помощью функции Text.From.
Если мы попытаемся конкатенировать текстовое значение с null, то получим в результате null.
То же самое будет и если мы попытаемся сравнить текстовое значение с null.
Power Query: стероиды для MS Excel и Power BI
В данной статье я хочу рассказать о некоторых возможностях бесплатной и крайне полезной, но пока еще мало известной надстройки над 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 умеет забирать данные из указанной папки и объединять их содержимое в единые таблицы. Это может быть полезно, например, если вам периодически приходят какие-то специализированные отчеты за отдельный промежуток времени, но данные для анализа нужны в общей таблице. Гифка
Текстовые функции
Числовые функции
К столбцам с числовыми значениями по нажатию на кнопки на Ribbon можно применять:
Функции для работы с датами, временем и продолжительностью
К столбцам со значениями даты и времени по нажатию на кнопки на Ribbon можно применять:
Unpivot — Pivot
В интерфейсе Power Query есть функция “Unpivot”, которая в один клик позволяет привести данные с одной метрикой разложенные по столбцам по периодам к форме, которая будет удобна для использования в сводных таблицах (понимаю что трудно написал — смотрите пример). Также, есть функция с обратным действие Pivot. Гифка
Функция ВПР (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.
Вот bi систему, про которую я рассказывал на Yac/M 2015 (видео) я делал полнстью при помощи Power Query и загружал данные внутрь PowerPivot.
Пару слов про локализацию
На сайте Microsoft для пользователей из России по умолчанию скачивается Power Query с переведенным на русским язык интерфейсом. К счастью, локализаторы до перевода на русский языка программирования (как это сделано с языком формул в excel) не добрались, однако жизнь пользователям неоднозначными переводами сильно усложнили. И я призываю вас скачивать, устанавливать и пользоваться английской версией Power Query. Поверьте, она будет гораздо понятнее.
Оставить цифры или текст при помощи PowerQuery
Удаление цифр или текста в Power Query.xlsx (57,2 KiB, 943 скачиваний)
Если поставить эту строку в самое начало кода в расширенном редакторе, то далее можно использовать при вставке пользовательского столбца.
Теперь по шагам.
Предположим, что изначально был создан запрос из Таблицы1 на листе(пример таблицы приведен выше). Просто подключились к таблице и все. Код в расширенном редакторе будет выглядеть примерно так:
let //подключаемся к таблице Таблица1 Источник = Excel.CurrentWorkbook()<[Name="Таблица1"]>[Content], #»Измененный тип» = Table.TransformColumnTypes(Источник,<<"Данные", type text>>) in #»Измененный тип»
Теперь необходимо здесь добавить в самом начале строку создания списка символов:
let //формируем массив символов для замены CharsToRemove = List.Transform(<33..45,47,58..126>, each Character.FromNumber(_)), //подключаемся к таблице Таблица1 Источник = Excel.CurrentWorkbook()<[Name="Таблица1"]>[Content], #»Измененный тип» = Table.TransformColumnTypes(Источник,<<"Данные", type text>>) in #»Измененный тип»
В принципе это практически решает задачу, если список задать следующими символами:
CharsToRemove = List.Transform(<0..45,47,58..2000>, each Character.FromNumber(_)),
Статья помогла? Поделись ссылкой с друзьями!
Глава 19. Объекты Power Query
Это продолжение перевода книги Кен Пульс и Мигель Эскобар. Язык М для Power Query. Главы не являются независимыми, поэтому рекомендую читать последовательно.
Прежде чем мы продолжим изучение языка M, сначала подробнее рассмотрим доступные объекты и функции. Обратите внимание, что все ключевые объекты в этой главе (таблицы, списки, записи, значения, двоичные файлы и ошибки) отображаются в столбцах редактора Power Query зеленым шрифтом. Кроме того, каждый объект можно просмотреть, щелкнув пробел рядом с ним.
Рис. 19.1. Единственная таблица в просматриваемой книге
Скачать заметку в формате Word или pdf, примеры в формате архива
Таблицы
Объекты таблицы могут отображаться во многих местах в Power Query, и это весьма ценно, так как с ними очень легко работать. Выполните следующие действия, чтобы убедиться в этом. Откройте Power Query Objects.xlsx. Пройдите по меню Данные –> Получить данные –> Из других источников –> Пустой запрос. Введите в строке формул: =Excel.CurrentWorkbook(). Нажмите Enter. В книге есть одна таблица (цифра 1 на рис. 19.1). Если кликнуть в пустое место рядом со словом Table, в нижней части окна появится предварительный просмотр таблицы (2).
Давайте завершим запрос, прежде чем двигаться дальше. Переименуйте запрос – Table. Главная –> Закрыть и загрузить в… –> Только создать подключение.
Списки
Создание списков
Создайте новую книгу Excel. Пройдите по меню Данные –> Получить данные –> Из других источников –> Пустой запрос. В строке формул введите: =<1,2,3>. Нажмите Enter.
Рис. 19.2. Создание списка с нуля
Обратите внимание, появилась контекстная вкладка Средства для списков –> Преобразование. В этот момент почти все команды на других вкладках будут неактивны.
Рис. 19.3. Список из имен авторов книги
Преобразование списков в таблицы
Если вы хотите разделить список на несколько столбцов, сначала преобразуйте его в таблицу. Для этого нажмите кнопку В таблицу (на рис. 19.2 слева). Появится диалог:
Рис. 19.4. Какой знак использовать в качестве разделителя?
Установить в качестве разделителя запятую, второй оставьте по умолчанию, нажмите Ok:
Рис. 19.5. Данные, загруженные из списка, разделенного запятыми
Завершить этот запрос. Измените имя запроса на List_Authors. Главная –> Закрыть и загрузить в… –> Только создать подключение.
Создание списков из столбцов таблицы
Иногда может возникнуть задача извлечь данные из одного столбца запроса в список. Давайте посмотрим, как это работает. Откройте файл Power Query Objects.xlsx. Перейдите на лист Sales. Кликните на любую ячейку Таблицы. Пройдите по меню Данные –> Из таблицы/диапазона:
Рис. 19.6. Исходная таблица запроса; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке
Если вам нужен уникальный список Inventory Item, вы можете удалить все остальные столбцы, а затем перейти на вкладку Главная –> Удалить строки –> Удалить дубликаты. Проблема в том, что объект все еще будет в форме таблицы, и вы не сможете передать его в функцию, если вам это нужно. Вы можете получить уникальные элементы в виде списка, что даст вам требуемую гибкость. Если вы экспериментировали с таблицей, удалите шаги, вернувшись к ситуации, как на рис. 19.6 – только два примененных шага. Щелкните правой кнопкой мыши столбец Inventory Item –> Детализация. Вы получите список всех запасов:
Рис. 19.7. Столбец, извлеченный из таблицы в список
Обратите внимание на строку кода: = #»Измененный тип»[Inventory Item]. В общем виде она может быть записана так = #Источник[Столбец]. Это шаблон языка M для извлечения всех значений столбца в список без использования команд пользовательского интерфейса. Запомните на будущее.
Теперь на вкладке Средства для списков кликните Удалить дубликаты. У вас останется список уникальных элементов, которые вы можете использовать в другой функции. Переименуйте запрос – List_FromColumn. Главная –> Закрыть и загрузить в… –> Только создать подключение.
Список списков
Это может показаться странной концепцией, поэтому давайте рассмотрим пример. Предположим, что у вас есть ID менеджеров по продажам (от 1 до 4), а именно: Фреда, Джона, Джейн и Мэри. Было бы неплохо иметь возможность конвертировать эти значения в их имена, не создавая отдельную таблицу. Пройдите по меню Данные –> Получить данные –> Из других источников –> Пустой запрос. В строке формул создайте список с нуля:
Обратите внимание, что здесь у вас есть четыре списка, которые, в свою очередь, объединены в основной список. Нажмите Enter:
Рис. 19.8. Список, состоящий из списков
Предварительный просмотр первого списка показывает, что он содержит значения 1 и Fred. Нажмите кнопку В таблицу. Таблицу по-прежнему содержит списки, но появилась стрелка Развернуть:
Рис. 19.9. Список списков, преобразованный в таблицу
Нажмите на стрелку Развернуть. Вам будут предоставлены две опции:
Рис. 19.10. Можно развернуть в новые строки или извлечь значения
При извлечении значений Power Query запросит вид разделителя. Я ввел запятую:
Рис. 19.11. Результаты: (1) разворачивания в новые строки, (2) извлечения значений
Переименуйте запрос List_of_Lists. Главная –> Закрыть и загрузить в… –> Только создать подключение.
При работе со списками необходимо учитывать два ключевых момента: списки могут содержать другие списки; развертывание списков списков не меняет их ориентацию.
Запись
Хотя список можно описать как один вертикальный столбец данных, на самом деле, запись является горизонтальным, многоколоночным аналогом списка. Запись может быть визуализирована как одна строка базы данных, содержащая всю соответствующую информацию, относящуюся к конкретному клиенту или транзакции. В Power Query записи могут отображаться в столбцах таблицы или в списках при получении данных. Они также могут быть созданы на лету, если это необходимо.
Синтаксис
Записи немного сложнее списков, так как они должны иметь какие-то значения, и вы должны определить имена столбцов, например:
Имена полей (столбцов) не нуждаются в какой-либо пунктуации вокруг них, независимо от того, включают ли они пробелы или нет.
Что происходит, когда вам нужно создать несколько записей сразу? Вы создаете список из записей:
Создание записи с нуля
Вернемся к примеру в разделе Список списков (рис. 19.11). Данные –> Получить данные –> Из других источников –> Пустой запрос. В строке формул создайте запись:
Рис. 19.12. Ваша первая запись
Как вы можете видеть, имена полей записи перечислены слева, а соответствующие данные –справа. Интересно, что данные расположены вертикально, а не горизонтально, как можно было бы ожидать. К этому нужно просто привыкнуть. Появилась контекстная вкладка Средства для записей –> Преобразовать. Правда, на ней лишь одна кнопка, а большинство кнопок на других вкладках ленты не активны.
Преобразование записи в таблицу
Поскольку очевидно, что с записью мало что можно сделать, преобразуем ее в таблицу:
Рис. 19.13. Одна запись, преобразованная в таблицу
Возможно, вы ожидали, что таблица будет содержать имена полей в качестве заголовков столбцов. Хотя это и не так, исправить ситуацию не сложно. Перейдите на вкладку Преобразование –> Транспонировать. Главная –> Использовать первую строку в качестве заголовков. Именно на это вы надеялись с самого начала?
Рис. 19.14. Запись выглядит как правильная таблица
Сейчас это нормально, но что произойдет, если у вас есть множество записей, которые вы хотите преобразовать в таблицу? Завершите запрос, чтобы вы могли пойти дальше и узнать ответ на этот вопрос. Переименуйте запрос Record_Single. Главная –> Закрыть и загрузить в… –> Только создать подключение.
Создание нескольких записей с нуля
Если вам нужна таблица, которая охватывает всех сотрудников, создайте список записей. Данные –> Получить данные –> Из других источников –> Пустой запрос. В строке формул введите:
Обратите внимание, что вы используете синтаксис для одной записи, а записи разделили запятыми. Все записи взяли в фигурные скобки, показывая, что они элементы списка. Нажмите Enter. Формула возвращает список записей:
Рис. 19.15. Список записей с предварительным просмотром
Стрелка в правом верхнем углу (2) позволяет развернуть строку формул, чтобы показать сразу несколько строк.
Преобразование нескольких записей в таблицу
Теперь вы можете преобразовать этот список записей в таблицу. Пройдите по меню Средства для списков –> Преобразование –> В таблицу. Оставьте установки в окне В таблицу без изменений:
Рис. 19.16. Настройка параметров преобразования списка в таблицу
Если в качестве разделите выбрать любой символ, преобразование в таблицу не удастся, и Power Query вернет ошибку:
Рис. 19.17. Ошибка преобразования в таблицу при попытке указать разделить
Итак, после преобразования в таблицу на основе установок, как на рис. 19.16, вы опять получаете не то, что могли бы ожидать:
Рис. 19.18. Таблица включает список записей
Кликните на значке Развернуть. Выберите все столбцы, снимите галочку Использовать исходное имя столбца как префикс:
Рис. 19.19. Наконец то получен правильный результат
Вы только что построили таблицу с нуля!
Теперь вы можете сохранить эту таблица, и даже объединить ее с другими запросами. Переименуйте запрос Table_From_Records. Главная –> Закрыть и загрузить в… –> Только создать подключение.
Создание записи из строки таблицы
Когда вы работали со списками, вы видели, как можно преобразовать столбец в список. Вы также можете преобразовать строку в запись. Для этого можно начать с нового запроса. В файле Excel перейдите на лист Sales и выберите любую ячейку в Таблице. Пройдите по меню Данные –> Из таблицы/диапазона. Чтобы извлечь первую запись, необходимо создать пустой шаг запроса. В области ПРИМЕНЕННЫЕ ШАГИ нажмите на первый шаг Источник (цифра 1 на рис. 19.20). Нажмите кнопку fx слева от строки формул (2):
Рис. 19.20. Создание пустого шага запроса
Появится окно предупреждения о вставке шага. Подтвердите. В строке формул появится заготовка:
Измените эту формулу на =Источник
Рис.19.21. Из таблицы выделена первая запись
При первоначальном импорте Таблицы Excel исходный шаг возвращает список записей. Поскольку для Power Query базовым значением является ноль, формула =Источник <0>возвращает первое значение в списке.
Вы можете извлечь только одно поле первой записи, например, цену. Измените этот шаг запроса на: =Источник<0>[Price]
Рис. 19.22. Извлечение цены из первой записи
Это очень важно, и пригодится во многих ситуациях, например, при управлении фильтрами (подробнее см. главу 20).
Завершите запрос. Переименуйте его Record_From_Table. Главная –> Закрыть и загрузить в… –> Только создать подключение.
Создание записей из каждой строки таблицы
Чтобы преобразовать все строки таблицы запроса в записи, вам нужно использовать небольшой трюк. В файле Excel перейдите на лист Sales и выберите любую ячейку в Таблице. Пройдите по меню Данные –> Из таблицы/диапазона. Таблица целиком загрузится в Power Query. Для создания записей вам нужен индекс каждой строки. Перейдите на вкладку Добавление столбца –> Столбец индекса. Переименуйте этот шаг (а не столбец) в области ПРИМЕНЕННЫЕ ШАГИ – AddedIndex (без пробела):
Рис. 19.23. Добавлен столбец индекса и переименован шаг
Теперь вы можете создать пользовательский столбец для преобразования строк в записи. Хитрость заключается в создании формулы, использующей индекс. столбца индекса, так как теперь у вас есть значение, необходимое для извлечения записей. Зачем тебе этот трюк? Вы не собираетесь работать на текущей строке, а скорее на выходе шага AddedIndex. Таким образом, вместо получения определенного значения (например, первой строки), вы можете динамически подавать его в запрос, чтобы получить каждую строку. Выполнить следующие действия:
Перейдите на вкладку Добавление столбца –> Настраиваемый столбец. Назовите его Records. Используйте формулу: =AddedIndex<[Индекс]>.
Рис. 19.24. Столбец записей
Строго говоря, переименовывать шаг, на котором был добавлен столбец индекса, было необязательным. Просто отсутствие пробела в имени шага упрощает синтаксис формулы. Удалите все остальные столбцы, оставив только столбец записей. Переименовать запрос Records_From_Table. Главная –> Закрыть и загрузить в… –> Только создать подключение.
Значение (Value)
При работе с базами данных иногда отображаются столбцы, содержащие Значение:
Рис. 19.25. Неуловимый объект Значение
Чтобы обнаружить этот объект, необходимо работать с базой данных, в которой между таблицами установлены связи. Значение – это способ, которым база данных возвращает связанную запись. Т.е., запись хранящуюся в другой таблице, а не в той, с которой вы сейчас работаете. Таблица на рис. 19.25 расположена в базе данных Adventureworks2012, к которой вы подключились в главе 8. Направление связи определяет, что возвращается в связанный столбец при работе с базой данных. Если вы находитесь в таблице фактов, и ссылка идет в таблицу измерений, вы получите значение (запись). Если вы находитесь в таблице измерений и ссылка идет в таблицу фактов, вы получите таблицу (подробнее см. Power Pivot. Мышление в нескольких таблицах).
Двоичные данные
Двоичные данные являются файлами. Некоторые из них можно объединять и читать с помощью функции Csv.Document(). В тоже время двоичные книги Excel нельзя объединять, а для чтения данных используется функция Excel.Workbook(). Процесс извлечения данных подробно рассмотрен ранее в главе 3 и главе 4. Мы упоминаем их здесь, поскольку они являются объектом Power Query.
Ошибки
Существует два типа сообщений об ошибках: ошибки уровня шага и ошибки уровня строки.
Ошибки на уровне строк обычно возникают при попытке преобразовать данные в неверный тип или при попытке оперировать данными до их преобразования в правильный тип. Вы уже видели несколько примеров таких ошибок ранее:
Рис. 19.26. Ошибка уровня строки, вызванная попыткой преобразовать страны в тип данных даты
Эти ошибки, как правило, не являются блокирующими, и они даже могут быть полезны при очистке данных, так как их можно обрабатывать двумя способами:
Несмотря на то, что в Power Query нет механизма отладки, эти ошибки, как правило, идентифицируются и часто (хотя и не всегда) связаны с неверными типами данных.
Ошибки уровня шага
Эти ошибки серьезнее. Такие сообщения блокируют запрос, и в окне вывода ничего не отображается, кроме ошибки:
Рис. 19.27. Синтаксическая ошибка, вызванная отсутствием закрывающей скобки в конце формулы
Рис. 19.28. Вызывается функция SQL.Database; правильно Sql.Database
К сожалению, средства отладки Power Query особенно слабы в следующей ситуации:
Рис. 19.29. Синтаксическая ошибка, вызванная отсутствием >, но сообщающая об ожидании запятой
В самом конце строки находится полезный символ ^, который указывает, где Power Query считает, что нужна запятая. Однако, проблема в том, что не хватает фигурной скобки для закрытия списка » YTD Sales » в месте, на которое указывает красная стрелка. Жаль, что в редакторе нет встроенной подсветки ошибок. Но Power Query часто обновляется, и мы надеемся увидеть прогресс в этой области в будущем. Сейчас же, отладка заключается в просмотре строки, открывающих и закрывающих символов, запятых и т.п.
Функции
Функции используются в двух местах:
Об использовании и вызове функций мы расскажем позже. Сейчас же покажем один трюк, который покажет, как функции проявляются, а также откроет список функций Power Query. Данные –> Получить данные –> Из других источников –> Пустой запрос. В строке формул введите: =#shared. Появится список записей. Перейдите на вкладку Средства для записей –> Преобразовать –> В таблицу. Power Query генерирует таблицу всех элементов Power Query в текущей книге, а также список всех функций, включенных в продукт.
Рис. 19.30. Таблица функций
Вы можете получить доступ к документации для любой функции из этого списка, если кликните на слово Function, например:
Рис. 19.31. Синтаксис функции Table.Last
Более того, на переднем плане появится диалоговое окно вызова функции:
Рис. 19.32. Диалоговое окно функции Table.Last
Здесь можно протестировать функцию, а при нажатии кнопки Отмена окно исчезает.
Вам не обязательно создавать пустой запрос для вызова описания функции Power Query. Вы также можете в любой момент, когда вам это потребуется, кликнуть на fx слева от строки формул, чтобы добавить новый шаг. Замените код в новом шаге на =#shared. Нажмите Enter. Преобразуйте записи в таблицу. Можете использовать фильтр, чтобы найти функцию по имени. Кликните на слово Function напротив той функции, которую хотите изучить. Затем вы можете вернуться к другим шагам и продолжить формирование запроса. После того, как информация об этой или иной функции более не требуется, можете удалить шаги =#shared.