Excel DAX - Contexto de avaliação

No DAX, contexto é um termo importante que você deve conhecer ao escrever fórmulas DAX. Também conhecido comoevaluation context, O contexto DAX é usado para determinar a avaliação de uma fórmula DAX e o resultado correspondente. Isso significa que os resultados de uma fórmula DAX podem variar de acordo com o contexto. Você deve compreender claramente como um contexto DAX específico é usado e como os resultados podem ser diferentes.

O contexto de avaliação permite que você execute uma análise dinâmica, na qual os resultados de uma fórmula DAX podem ser alterados para refletir a linha atual ou a seleção de uma célula e também quaisquer dados relacionados. Compreender o contexto e usar o contexto de maneira eficaz são muito importantes para criar fórmulas DAX poderosas, realizar análises dinâmicas de dados e solucionar problemas em fórmulas DAX. Os contextos de avaliação são a base de todos os recursos avançados do DAX que você precisa dominar para criar relatórios de análise de dados complexos.

Como você continua fazendo referência às funções DAX para uso relevante em fórmulas DAX, você precisa consultar este capítulo sobre o contexto DAX para obter clareza sobre os resultados.

Tipos de contexto em DAX

DAX suporta os seguintes contextos de avaliação -

  • Contexto de linha
  • Contexto de filtro

Quando uma fórmula DAX é avaliada, todos os contextos são considerados e aplicados conforme a relevância. Os contextos existem juntos e o resultado da fórmula será diferente com base no contexto que é usado ao calcular um valor. Por exemplo, quando você seleciona campos para linhas, colunas e filtros em uma Tabela Dinâmica, os subtotais são calculados dinamicamente com base em qual linha e coluna o subtotal / total está associado e os valores nas linhas e colunas são determinados pelos filtros usava.

Contexto de linha

O contexto de linha significa que a fórmula DAX ou a função DAX sabe a qual linha da tabela ela está se referindo em qualquer momento. Você pode considerar o contexto da linha como a linha atual. A fórmula será calculada linha por linha com o contexto da linha.

Algumas funções DAX (por exemplo, as funções X, FILTER ()) e todas as colunas calculadas têm um contexto de linha. Por exemplo, se você criar uma coluna calculada Ano com a fórmula DAX = YEAR ([Data]), os valores da coluna calculada serão obtidos aplicando a fórmula DAX fornecida na coluna fornecida na tabela, linha por linha.

Isso significa que, se você criou uma coluna calculada, o contexto da linha consiste nos valores de cada linha individual e nos valores das colunas relacionadas à linha atual, conforme determinado pela fórmula DAX usada. Embora a fórmula DAX não contenha a referência a uma linha, o DAX entende implicitamente o contexto da linha ao calcular os valores.

O DAX cria um contexto de linha automaticamente quando você define uma coluna calculada e todos os valores calculados com a fórmula DAX usada aparecerão na coluna calculada.

Em contraste, quando você tem uma função DAX, como SUMX, os valores calculados linha por linha são somados e apenas o resultado final será exibido. Ou seja, os valores intermediários são descartados.

Quando você tem tabelas relacionadas, o contexto da linha determina quais linhas da tabela relacionada estão associadas à linha atual. No entanto, o contexto de linha não se propaga por meio de relacionamentos automaticamente. Você deve usar as funções DAX - RELATED e RELATEDTABLE para isso.

Contexto de várias linhas

DAX tem funções de iterador como SUMX. Você pode usar essas funções para aninhar contextos de linha. Com isso, programaticamente, você pode ter uma recursão em um loop interno e um loop externo, onde você pode ter várias linhas atuais e contextos de linha atuais.

Por exemplo, você pode usar a função DAX Earlier () que armazena o contexto de linha da operação que precedeu a operação atual. Esta função armazena dois conjuntos de contexto na memória - um conjunto de contexto representa a linha atual para o loop interno da fórmula e outro conjunto de contexto representa a linha atual para o loop externo da fórmula. O DAX alimenta automaticamente os valores entre os dois loops para que você possa criar agregados complexos.

Para obter um exemplo, consulte o cenário - Criação de uma fórmula DAX que classifica valores dinamicamente no capítulo Cenários - Classificação e comparação de valores.

Contexto de filtro

O contexto de filtro se refere a qualquer filtragem aplicada ao modelo de dados no DAX. O contexto de filtro é criado por uma tabela dinâmica e também pelas funções DAX.

Contexto de filtro criado por uma tabela dinâmica

O contexto de filtro criado por uma tabela dinâmica é a filtragem natural aplicada pelas seleções feitas nos campos da tabela dinâmica a partir de:

  • Rows
  • Columns
  • Filters
  • Slicers

O contexto de filtro criado por uma Tabela Dinâmica filtra as tabelas subjacentes no Modelo de Dados. Se as tabelas estiverem relacionadas, os filtros fluem das tabelas de pesquisa para as tabelas de dados. Isso significa que você pode filtrar as tabelas de dados com base nos resultados das tabelas de pesquisa. A propagação do filtro não acontece ao contrário. No entanto, você pode usar fórmulas DAX para filtrar as tabelas de pesquisa com base nos resultados das tabelas de dados.

Contexto de filtro criado por funções DAX

Você pode usar funções de filtro DAX para definir campos calculados e colunas calculadas, contendo expressões de filtro que controlam os valores usados ​​pela fórmula DAX. Esses campos calculados e colunas calculadas tornam-se então parte da lista de campos da tabela dinâmica e você pode adicioná-los à tabela dinâmica. Você também pode limpar seletivamente os filtros em colunas específicas com essas funções de filtro DAX. Um exemplo de uma função de filtro DAX poderosa para criar contexto de filtro é CALCULATE (). Para obter um exemplo, consulte o capítulo Cenários - Executando cálculos complexos.

Contexto de filtro como uma adição ao contexto de linha

O contexto de linha não cria automaticamente um contexto de filtro. Você pode conseguir o mesmo com as fórmulas DAX que contêm funções de filtro DAX.