Фильтрация данных в формулах DAX

В этом разделе объясняется, как создавать фильтры в формулах анализа данных (DAX). Вы можете создавать фильтры в формулах, чтобы ограничить значения исходных данных, используемых при вычислениях. Это можно сделать, указав таблицу в качестве входных данных для формулы и определив критерий фильтра. Выражение фильтра, которое вы задаете, используется для запроса данных и возврата только подмножества исходных данных. Фильтр применяется динамически каждый раз при обновлении результатов формулы, в зависимости от текущего контекста данных.

В этой статье

Создание фильтра для таблицы, используемой в формуле

Фильтры, удаляющие дубликаты

Влияние контекста на фильтры

Удаление фильтров

Переопределение всех фильтров с помощью функции "все"

Переопределение специальных фильтров с помощью функции ALLEXCEPT

Создание фильтра для таблицы, используемой в формуле

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

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

= SUMX (
     FILTER ("ResellerSales_USD"; "ResellerSales_USD" [количество] > 5 &&
     "ResellerSales_USD" [ProductStandardCost_USD] > 100),
     "ResellerSales_USD" [Салесамт]
     )

  • В первой части формулы указывается одна из функций статистической обработки Power Pivot, которая принимает в качестве аргумента таблицу. SUMX вычисляет сумму по таблице.

  • Вторая часть формулы FILTER(table, expression),указывает SUMX какие данные следует использовать. дляSUMX требуется таблица или выражение, которое приводит к таблице. Вместо того, чтобы использовать все данные в таблице, вы можете указать, какие строки из нее используются, с помощью функции FILTER .

    Выражение фильтра состоит из двух частей: имя первой части таблицы, к которой применяется фильтр. Вторая часть определяет выражение, которое будет использоваться в качестве условия фильтра. В этом случае вы фильтруете торговых посредников, продающих более 5 единиц товара и изделий, стоимость которых превышает $100. Оператор && является логическим оператором AND, который указывает на то, что обе части условия должны быть истинными, чтобы строка принадлежала отфильтрованному подмножеству.

  • Третья часть формулы указывает SUMX функцию, для которой должны суммироваться значения. В этом случае вы используете только сумму продаж.

    Обратите внимание, что такие функции, как фильтр, возвращающие таблицу, никогда не возвращают таблицу или строки напрямую, но всегда внедрены в другую функцию. Дополнительные сведения о ФИЛЬТРе и других функциях, используемых для фильтрации, в том числе дополнительные примеры, описаны в разделе функции фильтрации (DAX).

    Примечание: На выражение фильтра влияет контекст, в котором он используется. Например, если вы используете фильтр в измерении, а измерение используется в сводной таблице или сводной диаграмме, к подмножеству возвращаемых данных могут повлиять дополнительные фильтры или срезы, примененные пользователем в сводной таблице. Дополнительные сведения о контексте можно найти в разделе контекст в формулах DAX.

Фильтры, удаляющие дубликаты

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

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

  • Функция VALUES также возвращает список уникальных значений, но также возвращает неизвестный элемент. Это полезно, если вы используете значения из двух таблиц, Соединенных отношением, и в одной таблице нет значения и есть в другой. Дополнительные сведения о неизвестном члене можно найти в разделе контекст в формулах DAX.

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

= COUNTROWS (DISTINCT ("ResellerSales_USD" [ProductKey]))

К началу страницы

Влияние контекста на фильтры

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

Дополнительные сведения см. в статье Контекст в формулах DAX.

К началу страницы

Удаление фильтров

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

Переопределение всех фильтров с помощью функции "все"

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

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

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

= СУММ (продажи [сумма])/СУМКС (продажи [сумма], фильтр (продажи, все (товары)))

  • Первая часть формулы, SUM (Sales [Amount]), вычисляет числитель.

  • Сумма учитывает текущий контекст, что означает, что при добавлении формулы в вычисляемый столбец применяется контекст строки, и если вы добавляете формулу в сводную таблицу как меру, применяются любые фильтры, примененные в сводной таблице (контекст фильтра).

  • Вторая часть формулы вычисляет знаменатель. Функция ALL переопределяет все фильтры, которые могут быть применены к Products таблице.

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

Переопределение специальных фильтров с помощью функции ALLEXCEPT

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

К началу страницы

Примечание:  Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Совершенствование навыков работы с Office
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

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

×