Contexto em Fórmulas do DAX

Nota:  Queremos fornecer-lhe os conteúdos de ajuda mais recentes o mais rapidamente possível e no seu idioma. 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 informar-nos se as informações foram úteis no final desta página? Eis o artigo em inglês para referência.

O contexto permite-lhe efetuar uma análise dinâmica, na qual os resultados de uma fórmula podem mudar para refletir a seleção de linhas ou células atual e também quaisquer dados relacionados. A compreensão e a utilização efetiva do contexto são muito importantes para a criação de fórmulas de alto desempenho, de análises dinâmicas e para a 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 dinâmicas.

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

Noções sobre Contexto

Podem ser afetadas fórmulas no PowerPivot pelos filtros aplicados numa tabela dinâmica, relações entre tabelas e filtros utilizados em fórmulas. Contexto é o que torna possível efetuar uma análise dinâmica. Noções sobre contexto é importante para edifício e para a resolução de problemas de fórmulas.

Existem vários tipos de contexto: contexto de linha, contexto de consulta e contexto de filtro.

Contexto de linha pode ser considerado como "a linha atual." Se tiver criado uma coluna calculada, no contexto de linha é composta pelos valores em cada linha individual e os valores das colunas que estão relacionados com a linha atual. Também existem algumas funções (Função EARLIER e Função EARLIEST) que obter um valor da linha atual e, em seguida, utilizam esse valor ao executar uma operação através de uma tabela inteira.

Contexto de consulta refere-se ao subconjunto de dados criado implicitamente para cada célula de uma tabela dinâmica, dependendo dos cabeçalhos de linha e coluna.

Contexto de filtro é o conjunto de valores permitido em cada coluna, com base em restrições de filtro que foram aplicados para a linha ou que são definidos pelas expressões de filtro na fórmula.

Início da página

Contexto de Linha

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

Por exemplo, suponha que criou uma coluna calculada, = [Frete] + [imposto],

, que adiciona duas colunas a partir da mesma tabela. Esta fórmula comporta-se como as fórmulas numa tabela do Excel, que referenciam automaticamente valores da mesma linha. Note que as tabelas são diferentes dos intervalos: não é possível referenciar um valor da linha anterior à atual utilizando a notação de intervalo e não é possível referenciar qualquer valor único arbitrário existente numa tabela ou célula. Tem de trabalhar sempre com tabelas e colunas.

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

Por exemplo, a fórmula seguinte utiliza a função RELATED para obter um valor de imposto a partir de uma tabela relacionada, com base na região para a qual a encomenda foi enviada. O valor de imposto é determinado utilizando o valor relativo à região na tabela atual, procurando a região na tabela relacionada e obtendo a taxa de imposto dessa região a partir da tabela relacionada.

= [Frete] + RELATED('Region'[TaxRate])

Esta fórmula limita-se a obter a taxa de imposto da região atual a partir da tabela Region. Não é necessita conhecer ou especificar a chave que liga as tabelas.

Contexto de Várias Linhas

Adicionalmente, o DAX inclui funções que iteram cálculos numa tabela. Estas funções podem ter várias linhas atuais e vários contextos de linha. Em termos de programação, é possível criar fórmulas recursivas sobre um ciclo interno e um ciclo externo.

Por exemplo, suponha que o livro contém uma tabela de produtos e uma tabela de vendas . Poderá pretender percorrer a tabela de vendas inteira, que é o total das transações que envolvam vários produtos, e localizar a quantidade de maior encomendada para cada produto em qualquer uma transação.

No Excel, este cálculo necessita de uma série de resumos intermédios, que teriam de ser reconstruídos se os dados fossem alterados. Se for um utilizador avançado do Excel, poderá conseguir criar fórmulas de matriz para efetuar a tarefa. Alternativamente, numa base de dados relacional, é possível escrever subseleções aninhadas.

No entanto, o DAX permite-lhe criar uma só fórmula que devolve o valor correto e os resultados são atualizados automaticamente sempre que adicionar dados às tabelas.

=MAXX(Filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Para obter instruções detalhadas sobre estas fórmulas, consulte a Função EARLIER.

Resumidamente, a função EARLIER armazena o contexto de linha da operação que precedeu a operação atual. A função guarda constantemente em memória dois conjuntos de contexto: um representa a linha atual do ciclo interno da fórmula e o outro representa a linha atual do ciclo externo da fórmula. O DAX alimenta automaticamente valores entre os dois ciclos para que possa criar agregações complexas.

Início da página

Contexto de Consulta

Contexto de consulta refere-se ao subconjunto de dados serem recuperados implicitamente para uma fórmula. Quando larga uma medida ou outro campo de valor numa célula numa tabela dinâmica, o motor PowerPivot examina os cabeçalhos de linha e coluna, segmentação de dados e filtros de relatório para determinar o contexto. Em seguida, PowerPivot faz com que os cálculos necessários para preencher a cada célula da tabela dinâmica. O conjunto de dados serem recuperados é o contexto de consulta para cada célula.

Visto que o contexto pode mudar dependendo da colocação da fórmula, os resultados da fórmula também mudam dependendo se esta é utilizada numa Tabela Dinâmica com muitos agrupamentos e filtros ou numa coluna calculada sem filtros e com contexto mínimo.

Por exemplo, suponha que criou esta fórmula simple que soma os valores na coluna Profit a table:=SUM('Sales'[Profit]) de vendas .

Se utilizar esta fórmula numa coluna calculada na tabela Sales , os resultados para a 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 Sales . Os seus resultados terão o lucro para todas as regiões, todos os produtos, todos os anos, e assim sucessivamente.

No entanto, normalmente não pretende ver os mesmos resultados centenas de vezes, mas sim o lucro de um ano específico, uma região ou um país específico, um produto específico ou alguma combinação destes e, em seguida, obter um total geral.

Numa tabela dinâmica, é fácil alterar o contexto, adicionando ou removendo cabeçalhos de coluna e linha e adicionando ou removendo segmentações de dados. Pode criar uma fórmula semelhante à ilustrada acima, numa medida e, em seguida, largue-a numa tabela dinâmica. Sempre que adicionar cabeçalhos de coluna ou linha na tabela dinâmica, pode altera o contexto de consulta na qual a medida é avaliada. Cortar e filtragem de operações também afetam o contexto. Por conseguinte, a mesma fórmula utilizada numa tabela dinâmica, é avaliada num contexto de consulta diferentes para cada célula.

Início da página

Contexto de Filtro

Contexto de filtro é adicionado ao especificar as restrições de filtro o conjunto de valores permitido numa coluna ou tabela, utilizando os argumentos numa fórmula. Contexto de filtro aplica-se na parte superior de outros contextos, como o contexto de linha ou contexto de consulta.

Por exemplo, uma tabela dinâmica calcula os valores para cada célula com base em cabeçalhos de linha e coluna, conforme descrito na secção anterior no contexto de consulta. No entanto, dentro de medidas ou colunas calculadas que adicionar à tabela dinâmica, pode especificar expressões de filtro para controlar os valores que são utilizados pela fórmula. Pode também seletivamente limpar dos filtros existentes nas colunas específicos.

Para mais informações sobre como criar filtros em fórmulas, consulte as Funções de filtro (DAX).

Para obter um exemplo de como é possível limpar filtros para criar totais gerais, consulte a Função ALL.

Para obter exemplos de como limpar e aplicar filtros em fórmulas seletivamente, consulte a Função ALLEXCEPT.

Consequentemente, tem de verificar a definição de medidas ou as fórmulas utilizadas numa tabela dinâmica para que esteja ciente do contexto de filtro quando interpretar os resultados das fórmulas.

Início da página

Determinar o Contexto em Fórmulas

Quando cria uma fórmula, o PowerPivot para Excel verifica primeiro a sintaxe geral e, em seguida, confronta os nomes das colunas e das tabelas fornecidos com as colunas e tabelas possíveis no contexto atual. Se o PowerPivot não conseguir localizar as colunas e tabelas especificadas pela fórmula, irá obter um erro.

O contexto é determinado conforme descrito nas secções anteriores, através da utilização das tabelas disponíveis existentes no livro, pelas relações entre as tabelas e por quaisquer filtros que tenham sido aplicados.

Por exemplo, se tiver acabado de importar alguns dados para uma tabela nova e não tiver aplicado quaisquer filtros, o conjunto completo de colunas na tabela fará parte do contexto atual. Se tiver várias colunas ligadas por relações e estiver a trabalhar numa Tabela Dinâmica que tenha sido filtrada através da adição de cabeçalhos de coluna e da utilização de Segmentações de Dados, o contexto inclui as tabelas relacionadas e quaisquer filtros aplicados aos dados.

O contexto é um conceito poderoso, que também poderá dificultar a resolução de problemas em fórmulas. Recomendamos que comece com fórmulas e relações simples para verificar o funcionamento do contexto e, em seguida, comece a experimentar com fórmulas simples em Tabelas Dinâmicas. A secção seguinte também fornece alguns exemplos do modo como as fórmulas utilizam tipos de contexto diferentes para devolverem resultados dinamicamente.

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 efetuar pesquisas. O exemplo existente neste tópico ilustra a interação entre a filtragem e o contexto de linha.

  • A função FILTER permite-lhe especificar as linhas a incluir no contexto atual. Os exemplos existentes neste tópico também ilustram como aninhar filtros noutras funções que efetuam agregações.

  • A função ALL define o contexto de uma fórmula. Poderá utilizá-la para substituir filtros aplicados como resultado do contexto da consulta.

  • A função ALLEXCEPT permite-lhe remover todos os filtros à exceção do que especificar. Ambos os tópicos incluem exemplos que o acompanham na criação de fórmulas e na compreensão de contextos complexos.

  • As funções EARLIER e EARLIEST permitem-lhe criar ciclos em tabelas efetuando cálculos, referenciando simultaneamente um valor de um ciclo interno. Se estiver familiarizado com o contexto de recursão, bem como com ciclos internos e externos, irá apreciar as capacidades proporcionadas pelas funções EARLIER e EARLIEST. Se não estiver familiarizado com estes conceitos, deverá seguir cuidadosamente os passos existentes neste exemplo para ver como os contextos interno e externo são utilizados nos cálculos.

Início da página

Integridade Referencial

Esta secção analisa alguns conceitos avançados relacionados com valores em falta em tabelas do PowerPivot ligadas por relações. Esta secção poderá ser útil se tiver criado alguns livros com várias tabelas e fórmulas complexas e necessitar de ajuda para compreender os resultados obtidos.

Se estiver familiarizado com os conceitos de dados relacionais, recomendamos que leia primeiro o tópico de introdução, Descrição geral das relações.

Integridade Referencial e Relações do PowerPivot

OPowerPivot não necessita que a integridade referencial seja imposta entre duas tabelas para definir uma relação válida. Em vez disso, é criada uma linha em branco no lado "um" de cada relação um-para-muitos e é utilizada para processar todas as linhas não correspondentes da tabela relacionada. De facto, o comportamento é o mesmo que numa associação externa do SQL.

Em Tabelas Dinâmicas, se agrupar dados pelo lado "um" da relação, quaisquer dados não correspondidos existentes no lado "muitos" da relação são agrupados e serão incluídos nos totais com um cabeçalho de linha em branco. O cabeçalho em branco é basicamente equivalente ao "membro desconhecido".

Noções sobre o Membro Desconhecido

O conceito de membro desconhecido é-lhe provavelmente familiar se já tiver trabalhado com sistemas de bases de dados multidimensionais, como o SQL Server Analysis Services. Se o termo for novo para si, o exemplo seguinte explica o que é membro desconhecido e o modo como este afeta os cálculos.

Suponha que está a criar um cálculo que soma vendas mensais para cada loja, mas uma coluna na tabela de vendas não é apresentado um valor para o nome do arquivo. Dado que as tabelas para armazenar e as vendas são estiver ligadas através do nome do arquivo, o que seria esperado deverá acontecer na fórmula? Como devo da tabela dinâmica do grupo ou apresentar valores de vendas que não estão relacionadas com um arquivo existente?

Este problema é um problema comum em armazéns, onde tabelas de grandes dimensões de dados de facto têm de ser relacionadas logicamente a tabelas de dimensão que contêm informações sobre lojas, regiões e outros atributos utilizados para classificar e calcular factos. Para resolver o problema, quaisquer factos novos que não estejam relacionados com uma entidade existente são atribuídos temporariamente ao membro desconhecido. É por este motivo que quaisquer factos não relacionados irão aparecer agrupados, numa Tabela Dinâmica, sob um cabeçalho em branco.

Tratamento de Valores em Branco vs. Linha em Branco

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 é utilizado para representar valores nulos, cadeias vazias e outros valores em falta. Para mais informações sobre o valor em branco, bem como outros tipos de dados do DAX, consulte o artigo tipos de dados em modelos de dados.

Início da página

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.

×