Contexto em Fórmulas do DAX

O contexto permite-lhe realizar uma análise dinâmica, na qual os resultados de uma fórmula podem mudar para refletir a atual seleção de linhas ou células e também quaisquer dados relacionados. Compreender o contexto e utilizar o contexto de forma eficaz são muito importantes para a construção de fórmulas de alto desempenho, análises dinâmicas e para problemas de resolução de problemas em fórmulas.

Esta secção define os diferentes tipos de contexto: contexto de linha, contexto de consulta e contexto de filtro. Explica como o contexto é avaliado para fórmulas em colunas calculadas e em Tabelas De Pivôs.

A última parte deste artigo fornece ligações a exemplos detalhados que ilustram como os resultados das fórmulas mudam de acordo com o contexto.

Contexto de compreensão

As fórmulas em PowerPivot podem ser afetadas pelos filtros aplicados num PivotTable, por relações entre mesas e filtros utilizados em fórmulas. O contexto é o que torna possível realizar uma análise dinâmica. Compreender o contexto é importante para a construção e para as fórmulas de resolução de problemas.

Existem diferentes tipos de contexto: contexto de linha, contexto de consulta e contexto de filtro.

O contexto da linha pode ser considerado como "a linha atual". Se criou uma coluna calculada, o contexto da linha consiste nos valores de cada linha individual e valores em colunas relacionadas com a linha atual. Existem também algumas funções (ANTERIOR e PRIMEIRA) que obtêm um valor da linha atual e depois usam esse valor enquanto executam uma operação sobre uma mesa inteira.

O contexto de consulta refere-se ao subconjunto de dados que é implicitamente criado para cada célula numa Tabela Dinâmica, dependendo da linha e cabeçalhos da coluna.

O contexto do filtro é o conjunto de valores permitidos em cada coluna, com base em restrições de filtro que foram aplicadas à linha ou que são definidas por expressões de filtro dentro da fórmula.

Início da Página

Contexto de linha

Se criar uma fórmula numa coluna calculada, o contexto da linha para essa fórmula inclui os valores de todas as colunas da linha atual. Se a tabela estiver relacionada com outra tabela, o conteúdo também inclui todos os valores dessa outra tabela que estão relacionados com a linha atual.

Por exemplo, suponha que crie uma coluna calculada, =[Frete] + [Imposto],

, que junta duas colunas da mesma mesa. Esta fórmula comporta-se como fórmulas numa tabela Excel, que automaticamente referencia valores da mesma linha. Note que as tabelas são diferentes das gamas: não é possível referir um valor da linha antes da linha atual utilizando notação de gama, e não pode fazer referência a qualquer valor único arbitrário numa tabela ou célula. Deve sempre trabalhar com mesas e colunas.

O contexto da linha segue automaticamente as relações entre as tabelas para determinar quais as linhas em tabelas relacionadas que estão associadas à linha atual.

Por exemplo, a seguinte fórmula utiliza a função RELATED para obter um valor fiscal de uma tabela relacionada, com base na região para a a que a encomenda foi enviada. O valor fiscal é determinado utilizando o valor para a região na tabela atual, olhando para a região na tabela conexa, e, em seguida, obtendo a taxa de imposto para aquela região a partir da tabela conexa.

= [Frete] + RELATED('Região'[Taxa de Imposto])

Esta fórmula recebe simplesmente a taxa de imposto para a região atual, a partir da tabela Região. Não precisa de saber ou especificar a chave que liga as tabelas.

Contexto de várias linhas

Além disso, o DAX inclui funções que iteram cálculos sobre uma tabela. Estas funções podem ter múltiplas linhas atuais e contextos de linha atuais. Em termos de programação, pode criar fórmulas que reamaldiçoem sobre um loop interior e externo.

Por exemplo, suponha que o seu livro contém uma tabela de produtos e uma tabela de vendas. Você pode querer passar por toda a tabela de vendas, que está cheia de transações envolvendo vários produtos, e encontrar a maior quantidade encomendada para cada produto em qualquer transação.

No Excel, este cálculo requer uma série de resumos intermédios, que teriam de ser reconstruídos se os dados mudassem. Se é um utilizador de energia do Excel, poderá ser capaz de construir fórmulas de matriz que fariam o trabalho. Em alternativa, numa base de dados relacional, pode escrever subselecções aninhadas.

No entanto, com o DAX pode construir uma única fórmula que dereta o valor correto, e os resultados são automaticamente atualizados sempre que adicionar dados às tabelas.

=MAXX (FILTER(Sales,[ProdKey]=EARLIER([ProdKey]);Vendas[OrderQty])

Para uma passagem detalhada desta fórmula, consulte o EARLIER.

Em suma, a função EARLIER armazena o contexto da linha da operação que precedeu a operação atual. Em todos os momentos, a função armazena na memória dois conjuntos de contexto: 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 exterior da fórmula. O DAX alimenta automaticamente os valores entre os dois ciclos para que possa criar agregados complexos.

Início da Página

Contexto de consulta

O contexto de consulta refere-se ao subconjunto de dados que é implicitamente recuperado para uma fórmula. Quando se deixa cair uma medida ou outro campo de valor numa célula numa Tabela Dinâmica, o motor PowerPivot examina os cabeçalhos da linha e da coluna, os Slicers e os filtros de relatório para determinar o contexto. Em seguida, PowerPivot faz os cálculos necessários para povoar cada célula na Tabela Pivot. O conjunto de dados que é recuperado é o contexto de consulta para cada célula.

Como o contexto pode mudar dependendo de onde coloca a fórmula, os resultados da fórmula também mudam dependendo se você usa a fórmula em um PivotTable com muitos agrupamentos e filtros, ou em uma coluna calculada sem filtros e contexto mínimo.

Por exemplo, suponha que crie esta fórmula simples que resume os valores na coluna de lucro da tabela Sales:=SUM('Sales'[Profit]). Sales

Se utilizar esta fórmula numa coluna calculada dentro da tabela Sales, os resultados da fórmula serão os mesmos para toda a tabela, porque o contexto de consulta para a fórmula é sempre todo o conjunto de dados da tabela De Vendas. Os seus resultados terão lucro para todas as regiões, todos os produtos, todos os anos, e assim por diante.

No entanto, normalmente não quer ver o mesmo resultado centenas de vezes, mas em vez disso quer obter o lucro de um determinado ano, um determinado país ou região, um produto particular, ou alguma combinação destes, e depois obter um total total.

Numa Tabela Dinâmica, é fácil alterar o contexto adicionando ou removendo cabeçalhos de coluna e linha e adicionando ou removendo Slicers. Pode criar uma fórmula como a de cima, numa medida, e depois deixá-la cair numa Tabela Pivot. Sempre que adiciona colunas ou rubricas de linha à Tabela Dinâmica, altera-se o contexto de consulta no qual a medida é avaliada. As operações de corte e filtragem também afetam o contexto. Portanto, a mesma fórmula, usada num PivotTable, é avaliada num contexto de consulta diferente para cada célula.

Início da Página

Contexto de filtro

O contexto do filtro é adicionado quando especifica as restrições de filtro no conjunto de valores permitidos numa coluna ou tabela, utilizando argumentos para uma fórmula. O contexto do filtro aplica-se em cima de outros contextos, como o contexto da linha ou o contexto de consulta.

Por exemplo, um PivotTable calcula os seus valores para cada célula com base nas rubricas da linha e da coluna, conforme descrito na secção anterior sobre o contexto de consulta. No entanto, dentro das medidas ou colunas calculadas que adiciona à Tabela Dinâmica, pode especificar expressões de filtro para controlar os valores utilizados pela fórmula. Também pode limpar seletivamente os filtros em colunas específicas.

Para obter mais informações sobre como criar filtros dentro das fórmulas, consulte as funções do Filtro.

Para um exemplo de como os filtros podem ser limpos para criar totais grandiosos, consulte o ALL.

Por exemplo, como limpar seletivamente e aplicar filtros dentro de fórmulas, consulte a Função ALLEXCEPT.

Por isso, deve rever a definição de medidas ou fórmulas utilizadas num PivotTable para que esteja ciente do contexto do filtro ao interpretar os resultados das fórmulas.

Início da Página

Contexto determinante em Fórmulas

Quando cria uma fórmula, PowerPivot para o Excel primeiro verifica a sintaxe geral, e depois verifica os nomes das colunas e tabelas que fornece contra possíveis colunas e tabelas no contexto atual. Se PowerPivot não encontrar as colunas e tabelas especificadas pela fórmula, terá um erro.

O contexto é determinado como descrito nas secções anteriores, utilizando as tabelas disponíveis no livro, quaisquer relações entre as tabelas e quaisquer filtros que tenham sido aplicados.

Por exemplo, se acabou de importar alguns dados para uma nova tabela e não tiver aplicado quaisquer filtros, todo o conjunto de colunas na tabela faz parte do contexto atual. Se tiver várias tabelas que estão ligadas por relacionamentos e estiver a trabalhar numa Tabela Dinâmica que foi filtrada adicionando títulos de colunas e utilizando os Slicers, o contexto inclui as tabelas relacionadas e quaisquer filtros nos dados.

O contexto é um conceito poderoso que também pode dificultar a resolução de fórmulas. Recomendamos que comece com fórmulas e relacionamentos simples para ver como o contexto funciona, e depois comece a experimentar fórmulas simples em Tabelas De Pivôs. A secção seguinte também fornece alguns exemplos de como as fórmulas usam diferentes tipos de contexto para retorno dinâmico dos resultados.

Exemplos de Contexto em Fórmulas

  • A função RELATED expande o contexto da linha atual para incluir valores numa coluna relacionada. Isto permite-lhe fazer procuras. O exemplo neste tópico ilustra a interação da filtragem e do contexto da linha.

  • A função FILTER permite especificar as linhas a incluir no contexto atual. Os exemplos neste tópico também ilustram como incorporar filtros dentro de outras funções que desempenham agregados.

  • A função ALL define o contexto dentro de uma fórmula. Pode usá-lo para substituir filtros que são aplicados como resultado do contexto de consulta.

  • A função ALLEXCEPT permite remover todos os filtros exceto um que especifica. Ambos os tópicos incluem exemplos que o percorrem através de fórmulas de construção e compreensão de contextos complexos.

  • As funções EARLIER e EARLIEST permitem-lhe passar pelas tabelas executando cálculos, ao mesmo tempo que referencia um valor de um laço interno. Se estiver familiarizado com o conceito de recursição e com laços internos e externos, apreciará o poder que as funções ANTERIOR e EARLIEST proporcionam. Se você é novo nestes conceitos, você deve seguir os passos no exemplo cuidadosamente para ver como os contextos internoe e externo são usados em cálculos.

Início da Página

Integridade Referencial

Esta secção discute alguns conceitos avançados relacionados com valores em falta em tabelas PowerPivot que estão ligadas por relacionamentos. Esta secção pode ser útil para si se tiver livros com múltiplas tabelas e fórmulas complexas e quiser ajuda na compreensão dos resultados.

Se você é novo em conceitos de dados relacionais, recomendamos que você li pela primeira vez o tópico introdutório, Relationships Overview.

Integridade Referencial e relações PowerPivot

PowerPivot não exige que a integridade referencial seja aplicada entre duas tabelas, a fim de definir uma relação válida. Em vez disso, uma linha em branco é criada na extremidade "um" de cada relação de um a muitos e é usada para lidar com todas as linhas não correspondentes da tabela relacionada. Efetivamente comporta-se como uma junta exterior SQL.

Nos PivôS, se agrupar dados de um lado da relação, quaisquer dados incomparáveis do lado da relação são agrupados e serão incluídos em totais com uma rubrica em branco. A cabeça em branco é aproximadamente equivalente ao "membro desconhecido".

Compreender o Membro Desconhecido

O conceito do membro desconhecido é provavelmente familiar para si se tiver trabalhado com sistemas de base de dados multidimensionais, como os Serviços de Análise de Servidores SQL. Se o termo é novo para si, o exemplo que se segue explica o que é o membro desconhecido e como afeta os cálculos.

Suponha que está a criar um cálculo que soma vendas mensais para cada loja, mas falta uma coluna na tabela de vendas um valor para o nome da loja. Dado que as mesas de Loja e Vendas estão ligadas pelo nome da loja, o que esperaria que acontecesse na fórmula? Como deve o grupo PivotTable ou apresentar os números de vendas que não estão relacionados com uma loja existente?

Este problema é comum nos armazéns de dados, onde grandes tabelas de dados de factos devem estar logicamente relacionadas com tabelas de dimensões que contenham informações sobre lojas, regiões e outros atributos que são utilizados para categorizar e calcular factos. Para resolver o problema, quaisquer novos factos que não estejam relacionados com uma entidade existente são temporariamente atribuídos ao membro desconhecido. É por isso que factos não relacionados aparecerão agrupados numa Tabela De Pivô sob uma rubrica em branco.

Tratamento dos Valores Em Branco vs. a Linha Em Branco

Os valores em branco são diferentes das linhas em branco que são adicionadas para acomodar o membro desconhecido. O valor em branco é um valor especial que é usado para representar nulos, cordas vazias e outros valores em falta. Para obter mais informações sobre o valor em branco, bem como outros tipos de dados DAX, consulte os tipos de dados em Modelosde Dados .

Início da Página

Nota:  Esta página foi traduzida automaticamente e pode conter erros gramaticais ou imprecisões. O nosso objetivo é que estes conteúdos lhe sejam úteis. Pode indicar-nos se estas informações foram úteis? Eis o artigo em inglês para sua referência.​

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×