Функція DAX COLUMNSTATISTICS у LuckyTemplates

Я хотів би продовжити вивчення динамічного використання функції DAX COLUMNSTATISTICS() – нової, майже повністю незадокументованої функції DAX, доданої до LuckyTemplates у серпні 2021 року, яка має деякі дуже унікальні аспекти, з якими, на мою думку, буде дуже цікаво познайомитися. Ви можете переглянути повне відео цього підручника внизу цього блогу.

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

Зміст

Як працює функція DAX COLUMNSTATISTICS

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

Функція DAX COLUMNSTATISTICS у LuckyTemplates

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

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

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

Отже, для цього прикладу давайте спробуємо додати таблицю до цієї моделі даних, над якою я працюю. У Power Query ми підемо New Source , а потім Blank Query . Потім ми зайдемо в розширений редактор і просто вставимо функцію під назвою List.Dates . Ми збираємося використати це, щоб створити таблицю потужності 10 000, тож це 10 000 унікальних дат.

Він поверне список із 10 000 елементів, і ми можемо просто перетворити його на таблицю, а потім перейменувати цю таблицю.

Ми можемо змінити поле тут до дати. І якщо ми натиснемо «Закрити та застосувати», ми побачимо, що наш інтелектуальний наратив оновлюватиметься динамічно, без необхідності оновлювати всю модель (як ми це робили в минулому).

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

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

Пам’ятайте, що запит DAX повертає таблиці, а не масштабувальники. Отже, якщо ми візьмемо цю міру і скопіюємо це в a, він показує помилку, оскільки результат тут все ще є масштабувальником. Ми можемо використати підхід до налагодження, замінивши цей результат RETURN окремими компонентами міри.

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

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

Спочатку ми виберемо стовпці в нашій таблиці ColStats і просто повернемо це поле імені таблиці. Як правило, у вимірюванні DAX або запиті DAX потрібно повернути ім’я поля з назвою таблиці перед ним. Але в цьому випадку ми не знаємо, на що посилається відповідна назва таблиці, оскільки вона існує лише віртуально. Здається, ім’я змінної не приймається як ім’я таблиці.

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

А потім для результату ми просто підраховуємо окремі стовпці таблиці. Отже, якщо ми замінимо це на DISTINCT(TabsCol) , ми отримаємо наші сім таблиць.

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

Отже, давайте подивимося на MaxCardinality . Незважаючи на те, що це масштабувальник, ми можемо перетворити його на таблицю з однією коміркою, просто поставивши її в дужки. І якщо ми досягнемо п’яти, ми побачимо, що це кардинальність 10 000.

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

Для цього ми використовуємо цей дуже поширений шаблон. Потім ми копіюємо його в наш оператор RETURN, і він дасть нам рядок, який ми очікували отримати, тобто стовпець 10 000 дат. Замість того, щоб отримати один рядок (оскільки це TOPN), ми отримуємо два, оскільки є нічия.

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

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

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

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




Висновок

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

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

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


Фінансова інформаційна панель LuckyTemplates: повні поради щодо налаштування таблиці

Фінансова інформаційна панель LuckyTemplates: повні поради щодо налаштування таблиці

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

Рекомендації щодо потоку мови Power Query

Рекомендації щодо потоку мови Power Query

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

Спеціальні значки 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.