В DAX контекст — это важный термин, который вы должны знать при написании формул DAX. Также называется контекстом оценки, контекст DAX используется для определения оценки формулы DAX и соответствующего результата. Это означает, что результаты формулы DAX могут варьироваться в зависимости от контекста. Вы должны четко понимать, как используется конкретный контекст DAX и как могут отличаться результаты.
Контекст оценки позволяет выполнять динамический анализ, в котором результаты формулы DAX могут изменяться в зависимости от текущей строки или выбора ячейки, а также любых связанных данных. Понимание контекста и эффективное использование контекста очень важны для построения мощных формул DAX, выполнения динамического анализа данных и устранения проблем в формулах DAX. Контексты оценки являются основой всех расширенных функций DAX, которые необходимо освоить для создания сложных отчетов анализа данных.
Поскольку вы продолжаете ссылаться на функции DAX для соответствующего использования в формулах DAX, вам необходимо обратиться к этой главе по контексту DAX, чтобы получить ясность в результатах.
Типы контекста в DAX
DAX поддерживает следующие контексты оценки —
- Контекст строки
- Контекст фильтра
Когда формула DAX оценена, все контексты будут приняты во внимание и применены как соответствующие. Контексты существуют вместе, и результат формулы будет отличаться в зависимости от контекста, который используется при вычислении значения. Например, когда вы выбираете поля для строк, столбцов и фильтров в сводной таблице, промежуточные итоги рассчитываются динамически на основе того, с какой строкой и каким столбцом связан промежуточный итог / итог, а значения в строках и столбцах определяются фильтрами. используемый.
Контекст строки
Контекст строки означает, что формула DAX или функция DAX знает, на какую строку таблицы она ссылается в любой момент времени. Вы можете рассматривать контекст строки как текущую строку. Формула будет вычисляться построчно с контекстом строки.
Некоторые функции DAX (например, X-функции, FILTER ()) и все вычисляемые столбцы имеют контекст строки. Например, если вы создаете вычисляемый столбец Year с формулой DAX = YEAR ([Дата]), значения вычисляемого столбца получаются путем применения заданной формулы DAX к указанному столбцу в таблице, строка за строкой.
Это означает, что если вы создали вычисляемый столбец, контекст строки состоит из значений в каждой отдельной строке и значений в столбцах, которые относятся к текущей строке, как определено используемой формулой DAX. Хотя формула DAX не содержит ссылку на строку, DAX неявно понимает контекст строки при вычислении значений.
DAX автоматически создает контекст строки при определении вычисляемого столбца, и все вычисленные значения с использованием формулы DAX появятся в вычисляемом столбце.
Напротив, если у вас есть функция DAX, такая как SUMX, значения, вычисленные построчно, суммируются, и отображается только конечный результат. То есть промежуточные значения отбрасываются.
Если у вас есть связанные таблицы, контекст строки определяет, какие строки в связанной таблице связаны с текущей строкой. Однако контекст строки не распространяется через отношения автоматически. Для этого вы должны использовать функции DAX — RELATED и RELATEDTABLE.
Многострочный контекст
DAX имеет функции итератора, такие как SUMX. Вы можете использовать эти функции для вложения контекстов строк. При этом программно вы можете иметь рекурсию по внутреннему циклу и внешнему циклу, где вы можете иметь несколько текущих строк и текущих контекстов строк.
Например, вы можете использовать функцию DAX Earlier (), которая сохраняет контекст строки из операции, предшествующей текущей операции. Эта функция хранит два набора контекста в памяти: один набор контекста представляет текущую строку для внутреннего цикла формулы, а другой набор контекста представляет текущую строку для внешнего цикла формулы. DAX автоматически передает значения между двумя циклами, чтобы вы могли создавать сложные агрегаты.
Для примера обратитесь к сценарию — Создание формулы DAX, которая динамически оценивает значения в главе Сценарии — ранжирование и сравнение значений.
Контекст фильтра
Контекст фильтра относится к любой фильтрации, которая применяется к модели данных в DAX. Контекст фильтра создается сводной таблицей, а также функциями DAX.
Контекст фильтра, созданный с помощью сводной таблицы
Контекст фильтра, созданный с помощью сводной таблицы, — это естественная фильтрация, которая применяется при выборе полей в сводной таблице из следующих элементов:
- Ряды
- Колонны
- фильтры
- Срезы
Контекст фильтра, созданный сводной таблицей, фильтрует базовые таблицы в модели данных. Если таблицы связаны, то фильтры переходят от таблиц поиска к таблицам данных. Это означает, что вы можете фильтровать таблицы данных на основе результатов из таблиц поиска. Распространение фильтра не происходит наоборот. Однако вы можете использовать формулы DAX для фильтрации справочных таблиц на основе результатов таблиц данных.
Контекст фильтра, созданный функциями DAX
Вы можете использовать функции фильтра DAX для определения вычисляемых полей и вычисляемых столбцов, содержащих выражения фильтра, которые управляют значениями, используемыми формулой DAX. Эти вычисляемые поля и вычисляемые столбцы затем становятся частью списка полей сводной таблицы, и вы можете добавить их в сводную таблицу. Вы также можете выборочно очистить фильтры для определенных столбцов с помощью этих функций DAX Filter. Пример мощной функции фильтра DAX для создания контекста фильтра — CALCULATE (). Для примера, обратитесь к главе Сценарии — Выполнение сложных вычислений.
Фильтр контекста как дополнение к контексту строки
Контекст строки не создает автоматически контекст фильтра. Вы можете достичь того же с формулами DAX, содержащими функции фильтра DAX.