Filtrar dados em fórmulas DAX

Aplica-se a
Excel para Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Esta secção descreve como criar filtros em fórmulas DAX (Data Analysis Expressions). Pode criar filtros dentro de fórmulas, para restringir os valores dos dados de origem utilizados nos cálculos. Para tal, especifique uma tabela como entrada para a fórmula e, em seguida, defina uma expressão de filtro. A expressão de filtro que fornecer é utilizada para consultar os dados e devolver apenas um subconjunto dos dados de origem. O filtro é aplicado dinamicamente sempre que atualizar os resultados da fórmula, consoante o contexto atual dos seus dados.

Neste artigo

Criar um Filtro numa Tabela utilizada numa Fórmula

Pode aplicar filtros em fórmulas que assumem uma tabela como entrada. Em vez de introduzir um nome de tabela, utilize a função FILTER para definir um subconjunto de linhas da tabela especificada. Esse subconjunto é então transmitido para outra função, para operações como agregações personalizadas.

Por exemplo, suponha que tem uma tabela de dados que contém informações de encomenda sobre revendedores e pretende calcular quanto é que cada revendedor vendeu. No entanto, quer mostrar o montante de vendas apenas para os revendedores que venderam várias unidades dos seus produtos de valor superior. A seguinte fórmula, com base no livro de exemplo DAX, mostra um exemplo de como pode criar este cálculo com um filtro:

=SOMAX(
     FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Quantidade] > 5 &&
     'ResellerSales_USD'[ProductStandardCost_USD] > 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • A primeira parte da fórmula especifica uma das funções de agregação do Power Pivot, que utiliza uma tabela como argumento. SUMX calcula uma soma sobre uma tabela.

  • A segunda parte da fórmula indica FILTER(table, expression),SUMX os dados a utilizar. SUMX requer uma tabela ou uma expressão que resulta numa tabela. Aqui, em vez de utilizar todos os dados numa tabela, utilize a FILTER função para especificar quais das linhas da tabela são utilizadas.
    A expressão de filtro tem duas partes: a primeira parte dá o nome à tabela à qual o filtro se aplica. A segunda parte define uma expressão a utilizar como condição de filtro. Neste caso, está a filtrar os revendedores que venderam mais de 5 unidades e produtos que custam mais de $100. O operador, &&, é um operador AND lógico, que indica que ambas as partes da condição têm de ser verdadeiras para que a linha pertença ao subconjunto filtrado.

  • A terceira parte da fórmula indica à função quais os SUMX valores que devem ser somados. Neste caso, está a utilizar apenas o montante de vendas.
    Tenha em atenção que funções como FILTER, que devolvem uma tabela, nunca devolvem diretamente a tabela ou linhas, mas são sempre incorporadas noutra função. Para obter mais informações sobre FILTER e outras funções utilizadas para filtragem, incluindo mais exemplos, veja Funções de Filtro (DAX).

    Observação

    A expressão de filtro é afetada pelo contexto em que é utilizada. Por exemplo, se utilizar um filtro numa medida e a medida for utilizada numa Tabela Dinâmica ou gráfico dinâmico, o subconjunto de dados devolvido pode ser afetado por filtros ou Segmentações de Dados adicionais que o utilizador aplicou na Tabela Dinâmica. Para obter mais informações sobre o contexto, veja Context in DAX Formulas (Contexto em Fórmulas DAX).

Filtros que removem duplicados

Além de filtrar valores específicos, pode devolver um conjunto exclusivo de valores de outra tabela ou coluna. Isto pode ser útil quando quer contar o número de valores exclusivos numa coluna ou utilizar uma lista de valores exclusivos para outras operações. O DAX fornece duas funções para devolver valores distintos: Função DISTINCT e Função VALUES.

  • A função DISTINCT examina uma única coluna que especificar como um argumento para a função e devolve uma nova coluna que contém apenas os valores distintos.
  • A função VALORES também devolve uma lista de valores exclusivos, mas também devolve o membro Desconhecido. Isto é útil quando utiliza valores de duas tabelas associadas por uma relação e um valor está em falta numa tabela e está presente na outra. Para obter mais informações sobre o membro Desconhecido, veja Context in DAX Formulas (Contexto em Fórmulas DAX).

Ambas as funções devolvem uma coluna inteira de valores; Por conseguinte, utiliza as funções para obter uma lista de valores que são depois transmitidos para outra função. Por exemplo, pode utilizar a seguinte fórmula para obter uma lista dos produtos distintos vendidos por um revendedor específico, utilizando a chave de produto exclusiva e, em seguida, contar os produtos nessa lista com a função COUNTROWS:

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

Início da Página

Como o Contexto Afeta os Filtros

Quando adiciona uma fórmula DAX a uma Tabela Dinâmica ou gráfico dinâmico, os resultados da fórmula podem ser afetados pelo contexto. Se estiver a trabalhar numa tabela do Power Pivot, o contexto é a linha atual e os respetivos valores. Se estiver a trabalhar numa Tabela Dinâmica ou num Gráfico Dinâmico, o contexto significa o conjunto ou subconjunto de dados definido por operações como a segmentação ou a filtragem. A estrutura da Tabela Dinâmica ou do Gráfico Dinâmico também impõe o seu próprio contexto. Por exemplo, se criar uma tabela dinâmica que agrupa as vendas por região e ano, apenas os dados que se aplicam a essas regiões e anos são apresentados na Tabela Dinâmica. Por conseguinte, todas as medidas que adicionar à Tabela Dinâmica são calculadas no contexto dos cabeçalhos de coluna e linha, bem como todos os filtros na fórmula de medida.

Para obter mais informações, consulte Contexto em fórmulas DAX.

Início da Página

Remover Filtros

Ao trabalhar com fórmulas complexas, poderá querer saber exatamente quais são os filtros atuais ou pode querer modificar a parte de filtro da fórmula. O DAX fornece várias funções que lhe permitem remover filtros e controlar que colunas são mantidas como parte do contexto de filtro atual. Esta secção fornece uma descrição geral de como estas funções afetam os resultados numa fórmula.

Substituir Todos os Filtros com a Função ALL

Pode utilizar a ALL função para substituir todos os filtros que foram aplicados anteriormente e devolver todas as linhas na tabela à função que está a executar a agregação ou outra operação. Se utilizar uma ou mais colunas, em vez de uma tabela, como argumentos para ALL, a ALL função devolve todas as linhas, ignorando quaisquer filtros de contexto.

Observação

Se estiver familiarizado com a terminologia da base de ALL dados relacional, pode considerar que está a gerar a associação externa à esquerda natural de todas as tabelas.

Por exemplo, suponha que tem as tabelas Vendas e Produtos e pretende criar uma fórmula que calculará a soma das vendas do produto atual dividido pelas vendas de todos os produtos. Tem de ter em consideração o facto de que, se a fórmula for utilizada numa medida, o utilizador da Tabela Dinâmica poderá estar a utilizar uma Segmentação de Dados para filtrar um determinado produto, com o nome do produto nas linhas. Por conseguinte, para obter o valor verdadeiro do denominador, independentemente de quaisquer filtros ou Segmentações de Dados, tem de adicionar a função ALL para substituir quaisquer filtros. A fórmula seguinte é um exemplo de como utilizar ALL para substituir os efeitos dos filtros anteriores:

=SOMA (Vendas[Montante])/SUMX(Vendas[Montante], FILTRO(Vendas, ALL(Produtos)))

  • A primeira parte da fórmula, SOMA (Vendas[Montante]), calcula o numerador.
  • A soma tem em conta o contexto atual, o que significa que, se adicionar a fórmula a uma coluna calculada, o contexto de linha é aplicado e, se adicionar a fórmula a uma tabela dinâmica como medida, todos os filtros aplicados na Tabela Dinâmica (o contexto de filtro) são aplicados.
  • A segunda parte da fórmula calcula o denominador. A função ALL substitui todos os filtros que possam ser aplicados à Products tabela.

Para obter mais informações, incluindo exemplos detalhados, veja Função ALL.

Substituir Filtros Específicos com a Função ALLEXCEPT

A função ALLEXCEPT também substitui os filtros existentes, mas pode especificar que alguns dos filtros existentes devem ser preservados. As colunas que nomeou como argumentos para a função ALLEXCEPT especificam as colunas que continuarão a ser filtradas. Se quiser substituir filtros da maioria das colunas, mas não de todas, ALLEXCEPT é mais conveniente do que ALL. A função ALLEXCEPT é particularmente útil quando cria tabelas dinâmicas que podem ser filtradas em muitas colunas diferentes e quer controlar os valores que são utilizados na fórmula. Para obter mais informações, incluindo um exemplo detalhado de como utilizar ALLEXCEPT numa Tabela Dinâmica, veja Função ALLEXCEPT.

Início da Página