Пользовательские функции запросов LuckyTemplates

Пользовательские функции запросов LuckyTemplates

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

Это продолжение урока, который я недавно сделал, где мы имели дело с распространенным сложным для обработки форматом сложенных данных и использовали Modulo, Pivot и некоторые функции очистки с Power Query для преобразования этих данных в организованный и функциональный формат.

Пользовательские функции запросов LuckyTemplates

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

Оглавление

Как создавать и отлаживать пользовательские функции запросов LuckyTemplates

Давайте перейдем к Power Query. Если мы перейдем к нашей таблице данных в расширенном редакторе, у нас будет M-код того, как мы в конечном итоге перешли от данных стека к желаемому формату.

Пользовательские функции запросов LuckyTemplates

Если мы хотим использовать это повторно, мы просто щелкаем правой кнопкой мыши на Data и говорим «Создать функцию» .

Пользовательские функции запросов LuckyTemplates

Он говорит, что не будет ссылаться ни на один параметр, но можно создать функцию без параметров. Мы собираемся ответить «Да», потому что мы собираемся добавлять параметры по ходу работы в расширенном редакторе. Мы назовем эту функцию Unstack — 3 Elements только потому, что у нас есть три строки в необработанном формате. Если бы у нас был формат с двумя строками, мы бы, вероятно, построили отдельный формат, состоящий из двух или четырех элементов.

Пользовательские функции запросов LuckyTemplates

Итак, теперь у нас есть этот Invoke, у нас нет параметров, и давайте перейдем в расширенный редактор и начнем работать над этим.

Пользовательские функции запросов LuckyTemplates

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

Пользовательские функции запросов LuckyTemplates

Мы хотим определить параметр, который будет входить. Мы делаем это с помощью открывающей скобки, а затем имени параметра. Давайте назовем это Stack , который будет тем одним столбцом данных, который представляет собой неформатированные данные стека, полученные из вставки адресов электронной почты.

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

Пользовательские функции запросов LuckyTemplates

Мы назовем его ConvertStack , и он будет использовать функцию с именем Table.FromList . Как и многие М-функции, она делает именно то, что говорит. Он просто принимает список. В этом случае список будет нашим списком стека. И затем нам нужно заменить здесь Source нашим ConvertStack. Это выглядит довольно хорошо! У нас нет синтаксических ошибок, поэтому давайте нажмем «Готово».

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

Пользовательские функции запросов LuckyTemplates

Затем мы собираемся выбрать TestData, то есть данные с неправильным форматом. Мы выберем столбец «Значение» и нажмем «ОК». После этого нажимаем Invoke.

Пользовательские функции запросов LuckyTemplates

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

Пользовательские функции запросов LuckyTemplates

Вместо того, чтобы запускать это на данный момент как функцию, мы собираемся запустить его как запрос. Мы просто собираемся вручную инициировать этот вызов стека. Мы должны определить, что такое стек, потому что мы не рисуем его посредством взаимодействия, выбирая его в Invoke. Итак, у нас есть Stack, равный TestData, и столбец Value TestData.

Пользовательские функции запросов LuckyTemplates

Теперь он разбивает его на Прикладные Шаги. Это поможет нам понять, почему это не работает. Обратите внимание на одну интересную вещь, когда мы извлекаем Stack. Первоначально он извлекает TestData[Value], но когда мы преобразуем его в таблицу, заголовок столбца вместо Value становится Column1.

Пользовательские функции запросов LuckyTemplates

Помните сообщение об ошибке, оно заключалось в том, что не удалось найти столбец «Значение». Причина, по которой не удалось найти столбец Value, заключается в том, что функция Table.FromList переименовывает его в Column1.

Если мы перейдем к Applied Steps, вы увидите, что именно на добавленном пользовательском этапе мы получаем ошибку. Здесь значение записи не было найдено.

Пользовательские функции запросов LuckyTemplates

Итак, если мы заходим в расширенный редактор, мы находим это поле Custom и видим, что оно находится в Text.Remove, где мы удаляем те ненужные символы, которые нам не нужны, но это все еще относится к поле Значение. Мы изменим это на Column1. Точно так же в поле «Удаленные столбцы» он ссылается на «Значение», поэтому мы также изменим его на «Столбец1».

Пользовательские функции запросов LuckyTemplates

И когда мы доходим до конца Прикладных шагов, это дает идеальный конечный результат.

Пользовательские функции запросов LuckyTemplates

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

Пользовательские функции запросов LuckyTemplates


Создание пользовательской функции очистки текста в
M-коде Power Query В пользовательских столбцах Power Query | Запрос функции LuckyTemplates
и операторы в редакторе запросов

Заключение

В этом руководстве мы создали эту пользовательскую функцию, отладили ее, протестировали, и она отлично работает. Итак, теперь, когда у нас есть стек из трех элементов, мы можем просто выбрать эту таблицу, выбрать этот столбец в таблице и запустить эту пользовательскую функцию. Затем примените Modulo, unpivot и очистите.

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

Всего наилучшего!


Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

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

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать