Итераторы и переходы контекста в запросах DAX

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

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

Оглавление

Вложенные итераторы по сравнению с CALCULATE

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

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

Итераторы и переходы контекста в запросах DAX

Следующая мера предназначена для среднего значения больших продаж с вложенными итераторами.

Итераторы и переходы контекста в запросах DAX

Последняя мера получает среднее значение Big Sales без вложенного итератора и CallBackDataID.

Итераторы и переходы контекста в запросах DAX

Запустите меру с помощью вложенного итератора. Обязательно очистите кеш перед запуском, а затем включите параметры времени сервера и план запроса.

Итераторы и переходы контекста в запросах DAX

Вы можете видеть, что он сгенерировал 3 сканирования, 2 идентификатора CallBackDataID и 15 003 строки. Это вызывает беспокойство, поскольку для вывода имеется только 101 строка. Это произошло из-за того, что мера имеет два итератора или X-функции.

Это полностью развернутая форма выполненной меры:

Итераторы и переходы контекста в запросах DAX

Он выполняет итерацию таблицы Fact Sales с . Затем он снова повторяется с CallBackDataID , используя . Укороченный формат этой меры имеет подразумеваемую функцию , которая вызывает переход контекста и материализует таблицу. Вот почему он извлек 15 003 строки, даже если на выходе имеется только 101 строка.

Запустите другую меру, не имеющую вложенных итераторов. Он по-прежнему выполняет итерацию таблицы Fact Sales с использованием AVERAGEX , но текущая цена находится вне функции. Он отфильтровывает продукты, текущая цена которых больше или равна 500, а затем вычисляет среднее значение.

Итераторы и переходы контекста в запросах DAX

Вы можете видеть, что он имеет только 2 сканирования, 104 строки и не имеет CallBackDataID. Поэтому, если вы используете CALCULATE , вы можете избавиться от вложенных итераторов и идентификаторов CallBackDataID .


Функции DAX в LuckyTemplates: использование итераторов
Как использовать итерирующую функцию в LuckyTemplates
Расчет DAX — фильтрация переходов контекста

Заключение

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

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

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

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

Что такое 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 для своих бизнес-отчетов.