Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

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

У цьому підручнику я покажу вам, як це зробити за допомогою Power Query у LuckyTemplates.

Зміст

Приклад комбінаторного аналізу

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

Правильна відповідь тут: 216, 120, 56 або 20. Отже, залежно від того, як ви визначаєте цей унікальний набір і встановлених вами правил, ви можете відхилитися в 10 разів, якщо ви не отримаєте набір правильно.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Отже, тут є два виміри, які мають значення. Перше: « чи порядок має значення ?» Отже, коли ми говоримо про три набори з трьох, чи ABC еквівалентно BCA? То чи порядок має значення? І якщо порядок має значення , ми говоримо про перестановки .

Хорошим прикладом перестановок, де порядок може мати значення, є (ми говоримо про контекст складу) у випадку часу в дорозі. Цілком можливо, що якщо ви відвідаєте склад A, потім склад B, а потім склад C, час у дорозі через потік транспорту з рухом проти руху, час, коли ви прибули до кожного складу, може бути досить різним залежно від замовлення. в якому ви їх відвідуєте.

Зворотний бік цього полягає в тому, що « порядок не має значення », і в цьому випадку ми говоримо про комбінації , а не про перестановки. Тут загальним варіантом використання є відстань. Наприклад, по прямій відстань від A до B до C нічим не відрізнятиметься від відстані від B до C до A. Їх розглядатимуть у контексті комбінації.

Комбінації вважаються дублікатами одна одної. Тоді як у контексті перестановки вони вважатимуться унікальними.

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

Друге важливе запитання чи параметр: « коли предмет вибрано, чи можна його вибрати знову ?» Наприклад, якщо ми виберемо A як наш перший склад, чи можемо ми вибрати A ще раз, чи нам потрібно кожного разу вибирати унікальні елементи?

Тут ми використовуємо термін « із заміною » або « без заміни ». Отже, якщо предмет можна вибрати знову, це відбувається із заміною, тобто ви вибираєте його. І в певному сенсі він повертається в кошик для вибору, щоб бути вибраним знову. Якщо відповідь «ні», це без заміни.

Отже, ви можете побачити в цьому рішенні, що перестановки із заміною є найменш обмеженими. Тож це той, який дає нам 216 унікальних наборів. А комбінації без заміни є найбільш обмеженими, тобто 20.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Ми просто збираємося використовувати ці формули як спосіб перевірити наші результати. Отже, ми запам’ятаємо 216, 120, 56 і 20. Тепер перейдемо до Power Query і подивимось, як цей комбінаторний аналіз працює.

Комбінаторний аналіз: перестановки в Power Query

У Power Query я маю тут дуже простий випадок із шістьма названими складами.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

І я розробив цю функцію Power Query M, яку використовував для обробки комбінацій і перестановок.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

По-перше, я збираюся розробити той перший варіант використання, який є перестановками із заміною , найменш обмежувал��ним із групи. Спосіб зробити це в Power Query — взяти цю таблицю Warehouses і посилатися на неї (у DAX ми використовуємо CROSSJOIN ).

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Я назву це Per w Rep (перестановки із заміною).

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

У Power Query існує кілька способів перехресного з’єднання. Найпростіший спосіб, який я знайшов, це просто перейти «Додати стовпець» , а потім «Налаштувати стовпець» . У формулі спеціального стовпця зверніться до таблиці Склади .

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

І що ми побачимо, коли ми натиснемо OK, це те, що він генерує вкладену таблицю.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Потім ми розгортаємо його та знімаємо клацання Використовувати оригінальні назви стовпців як префікс .

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

І ми отримуємо Location.1 , що є будь-якою можливою комбінацією двох. Отже, перші шість посилань порівнюються з іншими шістьма комбінаціями. Друга шість робить те ж саме, поки ми не отримаємо 36 різних наборів.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Ми можемо зробити третій, зробивши це ще раз. Отже, ми переходимо до стовпця «Додати», потім до спеціального стовпця, а потім до «Складів».

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

І ми матимемо 216 рядків як перестановки з заміною.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

І ви можете побачити звідси, 3 стовпці, 216 рядків.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Наступний варіант використання - перестановки без заміни . Те, про що ми тут думаємо, це в основному все, що має повторюваний елемент. Отже, у цій таблиці ми розглянемо рядок 1 до рядка 8.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Для цього ми розглянемо функцію fxSortAndIsDistinct .

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

У розширеному редакторі ви бачите, що в основному запитується таблиця, а потім виконується SortLocs . Але важливою частиною для «із заміною» або «без заміни» є те, що це функція IsDistinct . Це просто бере список елементів і визначає істинний або хибний, чи є він окремим, чи має дублікати в списку елементів.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Отже, переходимо сюди, вибираємо Perm w Rep і натискаємо Invoke .

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Це дасть нам ці два нові стовпці, SortLocs і IsDistinct . Тепер пам’ятайте, що перші вісім записів мали дублікати, а дев’ятий запис був першим випадком, коли ми побачили відмінний . Ось чому дев'ятий рядок тут є першим, який виявляється істинним.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Якщо ми повернемося до чисел, які ми отримали під час розрахунків факторіалу, ми очікуємо 120 записів, якщо вилучити нерозрізнені записи. Отже, давайте спробуємо відфільтрувати тут і видалити FALSE.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Зробивши це, ми отримаємо саме ті 120 рядків, які ми очікуємо. Тепер давайте перейменуємо це на Perm wo Rep (перестановка без заміни).

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Комбінаторний аналіз: комбінації в Power Query

Тепер ми зробимо комбінації з заміною . Для цього ми просто виконуємо процес ще раз і повторюємо крок (викликана функція). Тож це нормально, що ми маємо дублікати, але ми не хочемо, щоб набори мали однакові елементи , але в іншому порядку.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

У цьому випадку, коли ми говоримо про комбінації. Якщо ви пам’ятаєте, що ABC дорівнює BCA дорівнює CAB, усі вони вважаються дублікатами один одного. Ми визначаємо це за допомогою функції Sort ( fxSortAndIsDistinct ).

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

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Тепер, якщо ми повернемося до цієї викликаної функції, пам’ятайте, що ми шукаємо тут 56 записів. Отже, ми беремо таке розташування ( SortLocs ) і видаляємо наші дублікати .

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Таким чином, ми отримуємо 56 рядів.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Отже, це наш третій варіант використання. Перейменуємо це на CC w Rep (комбінації із заміною).

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Давайте закінчимо це, знову взявши цю таблицю перестановок із заміною (Perm w Rep) і виконавши той самий шаблон (викликати). Потім ми видалимо дублікати (стовпець SortLocs), оскільки це комбінація, і порядок не має значення. Це без заміни, тому нам також потрібен лише окремий список . Отже, ми клацаємо FALSE у стовпці IsDistinct.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates

Таким чином ми отримуємо 20 записів. І тепер у нас є всі чотири варіанти використання.

Комбінаторний аналіз за допомогою Power Query у LuckyTemplates




Висновок

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

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

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

Все найкраще!


Труба в R: підключення функцій за допомогою Dplyr

Труба в R: підключення функцій за допомогою Dplyr

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

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX Deep Dive: функція LuckyTemplates DAX

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

Вилучення тем і зображень LuckyTemplates із PBIX

Вилучення тем і зображень LuckyTemplates із PBIX

Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Python у LuckyTemplates: як встановити та налаштувати

Python у LuckyTemplates: як встановити та налаштувати

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

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

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

Сортування стовпців таблиці дат у LuckyTemplates

Сортування стовпців таблиці дат у LuckyTemplates

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

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

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

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

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