Фильтрация данных в формулах 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 , какие значения нужно просуммировать. В данном случае это только объемы продаж.

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

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

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

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

  • Функция 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 .

Дополнительные сведения и подробные примеры см. в разделе Функция ALL.

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

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

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

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

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

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

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

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

×