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