Робота з ітераційними функціями в DAX

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

Коли ви більше ознайомитеся з формулами DAX , ви будете використовувати ці ітераційні функції набагато частіше, ніж ви думаєте. Вони набагато універсальніші, ніж прості функції агрегації, такі як SUM або AVERAGE .

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

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

Зміст

Проста ітерація з використанням SUMX

Робота з ітераційними функціями в DAX

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

Робота з ітераційними функціями в DAX

І потім у кожному окремому рядку я хочу запустити цю конкретну логіку тут.

Робота з ітераційними функціями в DAX

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

Робота з ітераційними функціями в DAX

Ціни в цій таблиці немає. І для цієї конкретної моделі він фактично є в таблиці Product.

Робота з ітераційними функціями в DAX

Наступне, що мені потрібно зробити, це повернутися до своєї таблиці Product, і я зможу це зробити за допомогою RELATED . Коли ми обчислюємо кількість, помножену на відповідну ціну, ми робимо це для кожного окремого рядка. Це саме те, що відбувається всередині цієї формули.

Це ключові поняття, про які слід пам’ятати, коли ми починаємо робити більш складні речі.

Альтернативний підхід до отримання продажів за допомогою SUMX

Робота з ітераційними функціями в DAX

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

Робота з ітераційними функціями в DAX

Тут ви побачите, що цей результат точно такий самий, як результати в першому прикладі (підручник SUMX 2) або загальні продажі.

Ви можете розмістити тут цілу низку різних речей – це може бути міра, а ви можете розгалужуватися за допомогою функції ітерації. Вам не обов’язково посилатися на певні стовпці, щоб справді отримати правильні обчислення.

Робота з ітераційними функціями в DAX

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

SUMX і логічні функції

Робота з ітераційними функціями в DAX

Я використовую тут SUMX , але це також актуально для, MINX і MAXX . Вони всі дуже схожі речі.

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

Після того, як усі ці значення збережено в пам’яті, виконується загальний обчислення – наприклад, SUM або AVERAGE .

Робота з ітераційними функціями в DAX

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

Робота з ітераційними функціями в DAX

За допомогою функції ітерації SUMX я хочу пройти кожен окремий рядок у таблиці Sales. І в кожному окремому рядку я хочу підрахувати, чи цей конкретний продаж перевищує 2000 доларів США. Якщо так, я хочу обчислити загальний обсяг продажів для цього рядка. Але якщо загальна сума продажу була меншою за 2000 доларів США, я хочу повернути нуль. Тому я хочу обчислити лише більші обсяги продажів.

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

Ітерація по таблицях

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

Робота з ітераційними функціями в DAX

Ми думатимемо, що кожен окремий результат тут має певний контекст. У цьому конкретному випадку ми маємо контекст клієнта.

Робота з ітераційними функціями в DAX

У цьому контексті я хочу переглянути кожну окрему локацію та побачити, чи досяг конкретний клієнт обсяг продажів понад 5000 доларів США.

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

Робота з ітераційними функціями в DAX

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

Робота з ітераційними функціями в DAX

Щоробить тут це створює віртуальну таблицю. Отже, SUMX тут навіть не працює над чимось фізичним. Це насправді робота над чимось абсолютно віртуальним.

Проста ітерація з використанням MINX

Робота з ітераційними функціями в DAX

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

Робота з ітераційними функціями в DAX

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

Робота з ітераційними функціями в DAX

Потім ми хочемо повернути мінімальну суму з місця, де вони придбали.

Проста ітерація з використанням MAXX

Робота з ітераційними функціями в DAX

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

Висновок

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

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

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

Якщо вам сподобалося вивчати ці функції ітерації , ви можете переглянути ці посилання, щоб отримати більше інформації на цю тему:

Ключові поняття для ітерації функцій у LuckyTemplates

Ітерація логіки за допомогою віртуальних таблиць – розширені концепції DAX у LuckyTemplates

Насолоджуйтесь роботою над цим.


Спеціальні значки LuckyTemplates | Техніка візуалізації PBI

Спеціальні значки LuckyTemplates | Техніка візуалізації PBI

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

Створення таблиць LuckyTemplates за допомогою функції UNION & ROW

Створення таблиць LuckyTemplates за допомогою функції UNION & ROW

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

Локальний шлюз даних у Power Automate

Локальний шлюз даних у Power Automate

Дізнайтеся, як локальний шлюз даних дозволяє Power Automate отримувати доступ до настільних програм, коли користувач знаходиться поза комп’ютером.

Відкрийте для себе унікальні ідеї за допомогою функції TOPN LuckyTemplates

Відкрийте для себе унікальні ідеї за допомогою функції TOPN LuckyTemplates

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

Моделювання даних у LuckyTemplates за допомогою допоміжних таблиць

Моделювання даних у LuckyTemplates за допомогою допоміжних таблиць

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

Розширений DAX для LuckyTemplates: впровадження логіки ранжування в унікальній статистиці

Розширений DAX для LuckyTemplates: впровадження логіки ранжування в унікальній статистиці

Тут ми зануримося в LuckyTemplates Advanced DAX і запровадимо логіку ранжирування, щоб отримати дуже унікальну інформацію. У цьому прикладі я також демонструю розгалуження міри.

Функція параметра LuckyTemplates «Що, якщо».

Функція параметра LuckyTemplates «Що, якщо».

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

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

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

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

Параметри LuckyTemplates через редактор запитів

Параметри LuckyTemplates через редактор запитів

Дізнайтеся та зрозумійте, як можна створювати та використовувати параметри LuckyTemplates, які є потужною функцією редактора запитів.

Кругла гістограма – візуалізація для вашої інформаційної панелі

Кругла гістограма – візуалізація для вашої інформаційної панелі

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