Комбінаторний аналіз за допомогою 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




Висновок

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

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

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

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


Змініть формати дати за допомогою редактора Power Query

Змініть формати дати за допомогою редактора Power Query

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

Power Query: об’єднайте файли з кількох папок

Power Query: об’єднайте файли з кількох папок

Дізнайтеся, як об’єднати файли з кількох папок у мережі, робочому столі, OneDrive або SharePoint за допомогою Power Query.

Обчисліть місячне ковзне середнє з початку року (з початку року) у LuckyTemplates

Обчисліть місячне ковзне середнє з початку року (з початку року) у LuckyTemplates

Цей підручник пояснює, як обчислити місячне ковзне середнє на базі даних з початку року за допомогою функцій AVERAGEX, TOTALYTD та FILTER у LuckyTemplates.

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

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

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

Мобільні звіти LuckyTemplates. Поради та методи

Мобільні звіти LuckyTemplates. Поради та методи

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

Звіти про професійну аналітику послуг у LuckyTemplates

Звіти про професійну аналітику послуг у LuckyTemplates

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

Оновлення Microsoft Power Platform | Microsoft Ignite 2021

Оновлення Microsoft Power Platform | Microsoft Ignite 2021

Ознайомтеся з основними оновленнями для Power Apps і Power Automate, а також їх перевагами та наслідками для Microsoft Power Platform.

Загальні функції SQL: огляд

Загальні функції SQL: огляд

Відкрийте для себе деякі поширені функції SQL, які ми можемо використовувати, наприклад String, Date і деякі розширені функції для обробки та маніпулювання даними.

Створення шаблону LuckyTemplates: керівництво та поради

Створення шаблону LuckyTemplates: керівництво та поради

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

Параметри полів і малі кратні в LuckyTemplates

Параметри полів і малі кратні в LuckyTemplates

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