Функция DAX COLUMNSTATISTICS в LuckyTemplates

Функция DAX COLUMNSTATISTICS в LuckyTemplates

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

Я провел много экспериментов и узнал кое-что действительно интересное о том, как работает эта функция и что с ней можно делать. В своем первом блоге об этой функции я рассказывал о некоторых статических применениях. Сегодня я собираюсь рассказать о некоторых действительно удивительных динамических способах использования этой функции, которые даже IntelliSense еще не обновлены.

Оглавление

Как работает функция DAX COLUMNSTATISTICS

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

Функция DAX COLUMNSTATISTICS в LuckyTemplates

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

Метаданные для сложного набора данных становятся намного более важными с точки зрения количества элементов, то есть количества уникальных значений в поле. Это оказывает большое влияние на размер вашей модели, а также, возможно, на скорость обработки.

Кроме того, при построении модели полезно знать не только количество таблиц, но и диапазон дат этих таблиц. По мере того, как вы строите таблицу Dates, вы обязательно охватываете весь диапазон данных в таблице фактов.

И так, для этого примера попробуем добавить таблицу в эту модель данных, над которой я работаю. В Power Query мы выберем New Source , затем Blank Query . А затем мы перейдем в расширенный редактор, и я просто вставлю функцию, которая называется List.Dates . Мы собираемся использовать это для создания таблицы кардинальности 10 000, то есть 10 000 уникальных дат.

Он вернет список из 10 000 элементов, и мы можем просто преобразовать его в таблицу, а затем переименовать эту таблицу.

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

Причина, по которой это полностью динамично, заключается в том, что мы делаем все это с помощью показателей. Интересно то, что он показывает много ошибок, а функция настолько новая, что IntelliSense ее не подхватывает должным образом, но она действительно работает.

Давайте перейдем к табличному редактору 3, который, я думаю, является лучшим способом выяснить, что на самом деле делают сложные меры DAX.

Помните, что запрос DAX возвращает таблицы, а не масштабаторы. Итак, если мы возьмем эту меру и скопируем ее в запрос DAX , она покажет ошибку, потому что результат здесь по-прежнему является масштабатором. Мы можем использовать подход к отладке, заменив этот RETURN Result отдельными компонентами меры.

В этом случае мы заменим его на ColStats , что мы сделали в начале, просто поместив эту функцию COLUMNSTATISTICS DAX в переменную. При этом мы получаем именно то, что ожидаем, а именно стандартную таблицу статистики столбцов.

И теперь мы хотим просто посмотреть на столбец «Имя таблицы», и мы хотим взять из него отдельные значения и подсчитать их. Это будет количество таблиц в нашей модели данных.

Сначала мы выберем столбцы в нашей таблице ColStats и просто вернем поле имени этой таблицы. Как правило, в мере DAX или запросе DAX вы хотите вернуть имя поля с именем таблицы перед ним. Но в этом случае мы не знаем, на что ссылается соответствующее имя таблицы, потому что оно существует только виртуально. Кажется, он не принимает имя переменной в качестве имени таблицы.

Так что в этом случае мы должны остаться с тем, что выглядит как мера, но на самом деле это ссылка на столбец без ссылки на таблицу перед ней. И это все еще работает, даже несмотря на путаницу в номенклатуре. Теперь, если мы заменим этот оператор RETURN на наш TabCol , мы получим именно то, что ожидаем, а именно это поле таблицы модели.

А затем для результата мы просто подсчитываем отдельные столбцы таблицы. Итак, если мы заменим это на DISTINCT(TabsCol) , мы получим наши семь таблиц.

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

Итак, давайте взглянем на MaxCardinality . Несмотря на то, что это масштабатор, мы можем превратить его в таблицу с одной ячейкой, просто заключив его в скобки. И если мы нажмем пять, мы увидим, что это кардинальное значение равно 10 000.

Итак, теперь вопрос в том, как мы можем взять это и вернуть таблицу, связанную с этой кардинальностью.

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

ColStats также создает для каждой таблицы индекс в скрытой строке индекса с именем RowNumber , который является уникальным идентификатором для каждой строки таблицы. Так что MaxCardinality всегда будет отражаться RowNumber, если это уникальный идентификатор.

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

Затем, если мы поместим MaxCardinality в наш оператор RETURN и поместим его в скобки, чтобы вернуть таблицу, а не масштабатор, он вернет значение Test.

Этот шаблон TOPN DAX — действительно хороший шаблон, который нужно помнить, когда вы хотите в основном выяснить максимальное или минимальное значение, а затем вернуть атрибут, связанный с этим минимальным или максимальным значением.


Оптимизация формул LuckyTemplates с помощью расширенного
анализа показателей DAX DAX: анализ длинных показателей DAX
Показатели DAX в LuckyTemplates с использованием ветвления показателей

Заключение

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

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

Всего наилучшего!


Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать

Что такое шлюз LuckyTemplates? Все, что тебе нужно знать