Функция CROSSJOIN DAX: тайминги сервера и план запроса

В этом руководстве вы узнаете, как функция работает в DAX, используя панель Server Timings и ее план запроса.

Функция CROSSJOIN может использоваться для создания декартова произведения двух таблиц. Декартово произведение — это множество всех возможных комбинаций строк из двух или более таблиц.

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

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Вы можете видеть, что функция ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ приводит к комбинации Марки и Цвета продукта, даже если некоторые из этих комбинаций не существуют в таблице фактов . В результате получается таблица, содержащая в общей сложности 176 строк.

На вкладке «Время сервера» первый запрос извлекает марку из таблицы «Продукты», тогда как второй запрос извлекает цвет.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Функция CROSSJOIN DAX: тайминги сервера и план запроса

В Logical Query Plan первая строка возвращает результат в виде таблицы. Вторая и третья строки в таблице товаров сканируют цвет и марку соответственно.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

После получения данных обработчик формул выполняет итерацию по таблице и создает комбинацию обоих столбцов. CrossApply в строке 2 соответствует функции CROSSJOIN.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Оглавление

Фильтрация результатов CROSSJOIN в DAX

Вы можете использовать функцию для фильтрации результатов CROSSJOIN. Например, вы можете использовать его, чтобы показывать только товары с красным цветом.

Однако помните, что вы не можете поместить функцию CROSSJOIN в аргумент FILTER .

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Теперь, если вы запустите этот код и проверите вкладку Server Timings, вы увидите, что контекст фильтра не отображается как предложение WHERE в запросе.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Функция CROSSJOIN может быть разрешена только модулем Formula Engine . Код не работает, так как он находится между FILTER и , которые являются функциями, которые могут быть разрешены только механизмом хранения . Таким образом, CROSSJOIN вызвал разрыв цикла между этими двумя функциями.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Поэтому вам нужно поместить функцию FILTER в аргумент CROSSJOIN, чтобы фильтр работал.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Теперь, если вы запустите этот код и проверите вкладку Server Timings, вы увидите, что функция FILTER теперь представлена ​​предложением WHERE.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

В плане логического запроса видно, что вместо оператора фильтра используется фильтр VertiPaq .

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Это связано с тем, что новое условие фильтра в коде может быть передано в подсистему хранения. После возврата результата аргумент CROSSJOIN выполняется внутри механизма формул.

Оператор IN

Вы также можете использовать оператор вместо знака равенства в аргументе FILTER.

Оператор IN можно использовать в аргументе выражения функции FILTER для фильтрации таблицы на основе того, содержится ли значение в списке значений или в таблице.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Когда вы используете комбинацию FILTER — IN , механизм DAX должен выполнить фильтр IsEmpty , который подтверждает, является ли цвет продукта красным или черным.

Добавить столбец «Общий объем продаж» в результат CROSSJOIN DAX

Вместе с CROSSJOIN можно использовать и другие функции.

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

В этом примере давайте добавим столбец Total Sales.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Когда вы запустите код, результаты все равно вернут 176 строк. Однако некоторые комбинации будут иметь пустые значения в столбце «Общий объем продаж». Это связано с тем, что для этих комбинаций нет соответствующей строки в таблице "Продажи".

Функция CROSSJOIN DAX: тайминги сервера и план запроса

На вкладке Server Timings код сначала выбирает марку и цвет. Затем он суммирует произведение количества и чистой цены продажи.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

В этом случае механизм DAX сначала извлекает все комбинации марки и цвета, существующие в таблице «Продукты», а также комбинации с соответствующей строкой в ​​таблице «Продажи». Затем он извлекает столбцы марки и цвета отдельно.

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

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Затем выполняется поиск по этим 176 строкам, чтобы увидеть, есть ли у них соответствующее значение в таблице «Продажи». Вы можете видеть, что только 111 строк имеют значения. Остальные 65 строк вернут пробелы.

Более того, если вы добавите больше столбцов в аргумент CROSSJOIN, результат также вернет больше строк.

Функция CROSSJOIN DAX: тайминги сервера и план запроса

Заключение

Функция DAX CROSSJOIN создает новую таблицу, объединяя строки из одной таблицы со строками из другой. Эта функция аналогична предложению CROSS JOIN в SQL и может использоваться для создания более сложных запросов в вашей модели данных.

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

В целом, функция CROSSJOIN — удобный инструмент в сценариях, где вам нужно объединить данные из нескольких таблиц или создать список всех возможных комбинаций.

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

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