Динамическое отключение нескольких столбцов в LuckyTemplates

В этом руководстве мы вернемся к рассмотренной ранее теме о том, как развернуть несколько столбцов в Power Query с помощью List.Zip. Участник LuckyTemplates спросил на , как сделать этот метод динамическим. Вы можете посмотреть полное видео этого урока в нижней части этого блога.

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

С учетом сказанного давайте перейдем к Power Query.

Оглавление

Данные в табличном формате

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

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

В Applied Steps вы можете увидеть остальные шаги. Мы удалили несколько верхних строк, удалили пустые столбцы, очистили наши текстовые значения и заполнили их. Затем мы перенесли наши данные, удалили пустую запись, объединили столбцы один и два, снова очистили наши текстовые значения и переместили наши данные обратно.

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

Динамическое отключение нескольких столбцов в LuckyTemplates

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

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

Затем List.Zip берет элемент из каждого из этих трех списков и объединяет их в соответствии с их положением в новом списке. Например, каждый первый элемент из этих списков объединяется в новый список. То же самое происходит для всех значений, перечисленных вторыми в этом списке, и так далее.

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

Изменение кода для динамического разведения нескольких столбцов

Так как же нам сделать это динамичным?

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

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

Поэтому щелкните правой кнопкой мыши этот заголовок и внизу выберите «Добавить как новый запрос» .

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

Давайте начнем с удаления этих нулей. Итак, внутри строки формул мы добавим List.RemoveNulls . Как видите, все элементы повторяются, и это из-за пар значений. Он указан один раз для часов.

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

В примере запроса откройте расширенный редактор и создайте новое имя переменной. Назовем его AttributeList . Затем вставляем код и ставим запятую.

Динамическое отключение нескольких столбцов в LuckyTemplates

Теперь давайте вернемся к нашему пользовательскому шагу. Внутри List.Zip мы можем заменить этот первый список именем нашей переменной (AttributeList).

Динамическое отключение нескольких столбцов в LuckyTemplates

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

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

Динамическое отключение нескольких столбцов: добавление пользовательской логики столбцов

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

Динамическое отключение нескольких столбцов в LuckyTemplates

Чтобы изменить значения в списке, мы можем использовать функцию List.Transform . Нам нужно преобразовать значения в нашем AttributeList , поэтому я собираюсь вставить это.

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

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

Динамическое отключение нескольких столбцов в LuckyTemplates

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

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

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

В нашей строке формул мы выбираем наш второй список и заменяем его нашей логикой.

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates

Тогда вместо часов давайте изменим это на контакты .

Динамическое отключение нескольких столбцов в LuckyTemplates

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

Динамическое отключение нескольких столбцов в LuckyTemplates


LuckyTemplates Unpivot Columns — Учебное пособие по Power Query.
Как развернуть столбцы
в LuckyTemplates.

Заключение

Вот как вы динамически разворачиваете несколько столбцов в с помощью List.Zip.

Если появится новый атрибут, он будет автоматически выбран AttributeList. И когда элемент больше не существует, он не будет присутствовать в этом списке.

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

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

Мелисса

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

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

Что такое 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 для своих бизнес-отчетов.