Динамічно скасуйте зведення кількох стовпців у LuckyTemplates

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

Я назвав це розширеним, тому що ми будемо писати кілька функцій M, і деякі з них можуть бути навіть новими для вас.

З огляду на це, давайте перейдемо до Power Query.

Зміст

Дані в табличному форматі

Як ви бачите, ці дані вже перетворено в правильний формат планшета, придатний для аналізу. Цей процес, хоч і дуже важливий, не буде описано тут, але ми коротко розглянемо кожен крок.

Динамічно скасуйте зведення кількох стовпців у LuckyTemplates

На кроці джерела ми бачимо постійне повторення пар значень, якими є години та контакти для кожного з перелічених вище атрибутів.

Динамічно скасуйте зведення кількох стовпців у LuckyTemplates

У Застосованих кроках ви можете побачити решту кроків. Ми видалили деякі верхні рядки, видалили порожні стовпці, очистили наші текстові значення та заповнили їх. Потім ми транспонували наші дані, видалили порожній запис, об’єднали стовпці один і два, знову очистили наші текстові значення та транспонували наші дані назад.

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

Динамічно скасуйте зведення кількох стовпців у LuckyTemplates

Давайте розглянемо весь код. Нас тут цікавить функція List.Zip . Короткий підсумок: він приймає один список як a, а потім повертає список. У результаті ми бачимо, що цей єдиний список у цьому випадку містить три окремих списки.

Якщо ми перевіримо перший список, він містить жорстко закодовані назви атрибутів, лише текстові значення, які було введено. Другий список містить жорстко закодовані посилання на стовпці для значень годин. Остаточний список містить жорстко закодовані посилання на стовпці для значень контактів.

Потім 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




Висновок

Ось як ви динамічно скасовуєте кілька стовпцівза допомогою List.Zip.

Якщо з’явиться новий атрибут, він автоматично буде підібраний AttributeList. І коли елемент більше не існує, він не буде присутній у цьому списку.

Сподіваюся, вам сподобався цей. Перегляньте повне відео нижче, щоб дізнатися більше про цей навчальний посібник, і перегляньте посилання нижче, щоб дізнатися більше про те, як скасувати зведення кількох стовпців у LuckyTemplates.

Все найкраще

Меліса


Поле пошуку PowerApps: як додати та налаштувати

Поле пошуку PowerApps: як додати та налаштувати

Дізнайтеся, як створити поле пошуку PowerApps з нуля та налаштувати його відповідно до загальної теми вашої програми.

Приклад SELECTEDVALUE DAX – вибір розділювача врожаю

Приклад SELECTEDVALUE DAX – вибір розділювача врожаю

Збирайте або фіксуйте значення в мірі для повторного використання в іншій мірі для динамічних обчислень за допомогою SELECTEDVALUE DAX у LuckyTemplates.

Історія версій у списках SharePoint

Історія версій у списках SharePoint

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

Вибір шістнадцяткових кодів кольорів для звітів LuckyTemplates

Вибір шістнадцяткових кодів кольорів для звітів LuckyTemplates

Ось інструмент для створення звітів і візуальних матеріалів, засіб вибору шістнадцяткових кодів кольорів, за допомогою якого можна легко отримати кольори для звітів LuckyTemplates.

Динамічний роздільник дат у LuckyTemplates із використанням таблиці Менделєєва

Динамічний роздільник дат у LuckyTemplates із використанням таблиці Менделєєва

Ви можете легко відобразити діапазон дат як роздільник у своєму звіті за допомогою таблиці періодів. Використовуйте M-код, щоб створити динамічний роздільник дат у LuckyTemplates.

Таблиці пропорцій і частот в Excel

Таблиці пропорцій і частот в Excel

Збирався зануритися в частотні таблиці в Excel, а також у таблиці пропорцій. Добре подивіться, що це таке і коли їх використовувати.

Як інсталювати DAX Studio та табличний редактор у LuckyTemplates

Як інсталювати DAX Studio та табличний редактор у LuckyTemplates

Дізнайтеся, як завантажити та інсталювати DAX Studio та Tabular Editor 3 і як налаштувати їх для використання в LuckyTemplates і Excel.

Візуалізація карти форми LuckyTemplates для просторового аналізу

Візуалізація карти форми LuckyTemplates для просторового аналізу

Цей блог містить візуалізацію Shape Map для просторового аналізу в LuckyTemplates. Я покажу вам, як ви можете ефективно використовувати цю візуалізацію з її функціями та елементами.

Фінансова звітність LuckyTemplates: розподіл результатів за шаблонами в кожному окремому рядку

Фінансова звітність LuckyTemplates: розподіл результатів за шаблонами в кожному окремому рядку

У цьому підручнику я демонструю унікальну ідею щодо фінансової звітності, яка полягає в розподілі результатів для попереднього визначення шаблонів таблиць у LuckyTemplates.

Вимірювання DAX у LuckyTemplates за допомогою розгалуження вимірювання

Вимірювання DAX у LuckyTemplates за допомогою розгалуження вимірювання

Створіть показники DAX у LuckyTemplates, використовуючи наявні показники або формули. Це те, що я називаю технікою розгалуження міри.