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

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

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

В этой статье

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

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

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

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

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

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

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

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

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

= SUMX (
фильтр («ResellerSales_USD», «ResellerSales_USD» [Количество] > 5 & &
«ResellerSales_USD» [ProductStandardCost_USD] > 100),
«ResellerSales_USD» [SalesAmt]
)

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

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

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

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

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

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

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

Дополнение к фильтрации для конкретных значений, вы можете вернуться уникальный набор значений из другой таблицы или столбца. Это может быть полезным при необходимости подсчет количества уникальных значений в столбце или список уникальных значений с помощью других операций. DAX содержит две функции для возвращения разных значений: РАЗЛИЧНЫЕ функции и Значения.

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание: В терминологии реляционных баз данных функция ALL возвращает натуральное левое внешнее соединение всех таблиц.

Предположим, например, что для таблиц Sales и Products нужно создать формулу, вычисляющую частное от объема продаж текущего товара и объема продаж всех товаров. Необходимо принять во внимание тот факт, что при использовании формулы в мере пользователь сводной таблицы может применить срез для фильтрации конкретных товаров, имена которых находятся в строках. Таким образом, для получения правильного значения знаменателя независимо от фильтров или срезов необходимо добавить функцию ALL для переопределения любых фильтров. Вот пример использования фунции ALL для переопределения примененных фильтров:

= СУММ (Sales [объем]) / SUMX (Sales [объем] (Sales, ALL(Products))) ФИЛЬТРА

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

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

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

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

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

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

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

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

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

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

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

×