O contexto permite-lhe efetuar análises dinâmicas, nas quais os resultados de uma fórmula podem ser alterados de forma a refletirem a seleção atual de linha ou célula, bem como quaisquer dados relacionados. Compreender o contexto e utilizar o contexto de forma eficaz é muito importante para criar fórmulas de alto desempenho, análises dinâmicas e para resolver 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 ligações para exemplos detalhados que ilustram a forma como os resultados das fórmulas se alteram de acordo com o contexto.
Compreender o contexto
As fórmulas no Power Pivot podem ser afetadas pelos filtros aplicados numa Tabela Dinâmica, pelas relações entre tabelas e pelos filtros utilizados nas fórmulas. O contexto é o que torna possível realizar a análise dinâmica. Compreender o contexto é importante para criar e resolver problemas de fórmulas.
Existem diferentes tipos de contexto: contexto de linha, contexto de consulta e contexto de filtro.
O contexto de linha pode ser considerado como "a linha atual". Se tiver criado uma coluna calculada, o contexto de linha consiste nos valores em cada linha individual e nos valores em colunas que estão relacionados com a linha atual. Também existem algumas funções (EARLIER e EARLIEST) que obtêm um valor da linha atual e, em seguida, utilizam esse valor durante a execução de uma operação numa tabela inteira.
O contexto de consulta refere-se ao subconjunto de dados que é criado implicitamente para cada célula numa Tabela Dinâmica, dependendo dos cabeçalhos de linha e coluna.
O contexto de filtro é o conjunto de valores permitidos em cada coluna, com base nas restrições de filtro que foram aplicadas à linha ou que são definidas por expressões de filtro na fórmula.
Contexto da Linha
Se criar uma fórmula numa coluna calculada, o contexto de linha dessa fórmula inclui os valores de todas as colunas na 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, suponhamos que cria uma coluna calculada, =[Transporte] + [Imposto], que soma duas colunas da mesma tabela. Esta fórmula comporta-se como as fórmulas de uma tabela do Excel, que referenciam automaticamente valores da mesma linha. Tenha em atenção que as tabelas são diferentes dos intervalos: não pode referenciar um valor da linha antes da linha atual através da notação de intervalo e não pode referenciar qualquer valor único arbitrário 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 que linhas em tabelas relacionadas estão associadas à linha atual.
Por exemplo, a fórmula seguinte utiliza a função RELATED para obter um valor de imposto numa tabela relacionada, com base na região para a qual a encomenda foi enviada. O valor do imposto é determinado utilizando o valor da região na tabela atual, pesquisando a região na tabela relacionada e, em seguida, obtendo a taxa de imposto dessa região a partir da tabela relacionada.
= [Frete] + RELACIONADO('Região'[Taxa])
Esta fórmula obtém simplesmente a taxa de imposto da região atual a partir da tabela Região. Não precisa de saber ou especificar a chave que liga as tabelas.
Contexto com várias linhas
Além disso, o DAX inclui funções que iteram cálculos numa tabela. Estas funções podem ter várias linhas atuais e contextos de linha atuais. Em termos de programação, você pode criar fórmulas recorrentes em um loop interno e externo.
Por exemplo, suponha que o seu livro contém uma tabela Produtos e uma tabela Vendas . Poderá querer percorrer a tabela Vendas completa, que está repleta de transações que envolvem vários produtos, e encontrar a maior quantidade encomendada para cada produto numa 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 experiente do Excel, poderá conseguir criar fórmulas de matriz adequadas para essa tarefa. Em alternativa, numa base de dados relacional, pode escrever subseleções aninhadas.
No entanto, com o DAX pode criar uma única 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 desta fórmula, consulte a Função ANTERIOR.
Resumindo, a função ANTERIOR armazena o contexto de linha da operação que precedeu a operação atual. Em todos os momentos, a 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 ciclos para que possa criar agregados complexos.
Contexto da Consulta
O contexto de consulta refere-se ao subconjunto de dados que são implicitamente obtidos para uma fórmula. Quando larga uma medida ou outro campo de valor numa célula numa Tabela Dinâmica, o motor do Power Pivot examina os cabeçalhos de linha e coluna, as Segmentações de Dados e os filtros de relatório para determinar o contexto. Em seguida, o Power Pivot efetua os cálculos necessários para povoar cada célula na Tabela Dinâmica. O conjunto de dados obtido é o contexto de consulta para cada célula.
Visto que o contexto pode mudar dependendo do local onde colocar a fórmula, os resultados da fórmula também mudam consoante utilize a fórmula numa tabela dinâmica com muitos agrupamentos e filtros ou numa coluna calculada sem filtros e com contexto mínimo.
Por exemplo, imaginemos que cria esta fórmula simples que soma os valores na coluna Lucro da tabela Vendas :
=SOMA('Vendas'[Lucro])
Se utilizar esta fórmula numa coluna calculada na tabela Vendas , os resultados da fórmula serão os mesmos para toda a tabela, porque o contexto de consulta da fórmula é sempre o conjunto de dados completo da tabela Vendas . 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 pretende ver o mesmo resultado centenas de vezes, mas pretende obter o lucro de um determinado ano, de um determinado país ou região, de um produto específico ou de alguma combinação destes produtos e, em seguida, obter um total geral.
Numa Tabela Dinâmica, é fácil alterar o contexto ao adicionar ou remover cabeçalhos de coluna e de linha e ao adicionar ou remover Segmentações de Dados. Pode criar uma fórmula como a acima, numa medida, e, em seguida, largá-la numa tabela dinâmica. Sempre que adicionar cabeçalhos de coluna ou linha à Tabela Dinâmica, altera o contexto de consulta no qual a medida é avaliada. As operações de segmentação de dados e filtragem também afetam o contexto. Por conseguinte, a mesma fórmula, utilizada numa tabela dinâmica, é avaliada num contexto de consulta diferente para cada célula.
Contexto do Filtro
O contexto de filtro é adicionado quando especifica restrições de filtro no conjunto de valores permitidos numa coluna ou tabela, utilizando argumentos para uma fórmula. O contexto de filtro aplica-se sobre outros contextos, como o contexto de linha ou o contexto de consulta.
Por exemplo, uma Tabela Dinâmica calcula os respetivos valores para cada célula com base nos cabeçalhos de linha e coluna, tal como descrito na secção anterior no contexto da consulta. No entanto, nas medidas ou colunas calculadas que adiciona à Tabela Dinâmica, pode especificar expressões de filtros 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 em fórmulas, consulte as funções Filtrar.
Para obter um exemplo de como os filtros podem ser limpos para criar totais gerais, consulte a Função ALL.
Para obter exemplos de como limpar e aplicar filtros seletivamente em fórmulas, consulte a Função ALLEXCEPT
Por conseguinte, tem de rever a definição de medidas ou fórmulas utilizadas numa Tabela Dinâmica para que esteja ciente do contexto de filtro ao interpretar os resultados das fórmulas.
Determinar o Contexto em Fórmulas
Quando cria uma fórmula, o Power Pivot para Excel verifica primeiro a sintaxe geral e, em seguida, verifica os nomes das colunas e tabelas que fornecer em relação a possíveis colunas e tabelas no contexto atual. Se o Power Pivot 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 das tabelas disponíveis no livro, de todas as relações entre as tabelas e dos filtros aplicados.
Por exemplo, se acabou de importar alguns dados para uma nova tabela e não aplicou quaisquer filtros, todo o conjunto de colunas na tabela faz parte do contexto atual. Se tiver múltiplas tabelas ligadas por relações e estiver a trabalhar numa tabela dinâmica que foi filtrada ao adicionar cabeçalhos de coluna e utilizar segmentações de dados, o contexto inclui as tabelas relacionadas e filtros nos dados.
O contexto é um conceito poderoso que também pode dificultar a resolução de problemas de fórmulas. Recomendamos que comece com fórmulas e relações simples para ver como o contexto funciona e, em seguida, comece a experimentar fórmulas simples em tabelas dinâmicas. A secção seguinte também fornece alguns exemplos de como as fórmulas utilizam diferentes tipos de contexto para devolver resultados de forma dinâmica.
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 neste tópico ilustra a interação entre filtragem e contexto de linha.
- A função FILTER permite-lhe especificar as linhas a incluir no contexto atual. Os exemplos neste tópico também ilustram como incorporar filtros em outras funções que executam agregados.
- A função ALL define o contexto numa fórmula. Pode utilizá-la para substituir filtros aplicados como resultado do contexto de consulta.
- A função ALLEXCEPT permite-lhe remover todos os filtros, exceto um que especificar. Ambos os tópicos incluem exemplos que o orientam na criação de fórmulas e na compreensão de contextos complexos.
- As funções ANTERIOR e MAIS ANTIGA permitem-lhe percorrer tabelas através de cálculos enquanto referencia um valor de um ciclo interno. Se você está familiarizado com o conceito de recursão e com loops internos e externos, você apreciará o poder que as funções EARLIER e EARLIEST fornecem. Se não estiver familiarizado com estes conceitos, deve seguir cuidadosamente os passos no exemplo para ver como os contextos interior e externo são utilizados nos cálculos.
Integridade Referencial
Esta secção discute alguns conceitos avançados relacionados com valores em falta em tabelas do Power Pivot que estão ligadas por relações. Esta secção pode ser útil se tiver livros com múltiplas tabelas e fórmulas complexas e quiser ajuda para compreender os resultados.
Se não estiver familiarizado com conceitos de dados relacionais, recomendamos que leia primeiro o tópico introdutório, Descrição Geral de Relações.
Integridade Referencial e Relações do Power Pivot
O Power Pivot 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 na extremidade "um" de cada relação um-para-muitos e é utilizada para processar todas as linhas não correspondentes a partir da tabela relacionada. Comporta-se efetivamente como uma associação externa SQL.
Nas tabelas dinâmicas, se agrupar os dados por um lado da relação, todos os dados não correspondentes 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 é aproximadamente equivalente a "membro desconhecido".
Compreender o Membro Desconhecido
O conceito de membro desconhecido é provavelmente familiar para si se tiver trabalhado com sistemas de bases de dados multidimensionais, como o SQL Server Analysis Services. Se o termo é novo para si, o exemplo seguinte explica o que é o membro desconhecido e como afeta os cálculos.
Suponha que está a criar um cálculo que soma as vendas mensais de cada loja, mas falta um valor para o nome da loja numa coluna na tabela Vendas . Dado que as tabelas de Loja e Vendas estão ligadas pelo nome da loja, o que seria esperar que acontecesse na fórmula? Como deve a tabela dinâmica agrupar ou apresentar os valores das vendas que não estão relacionados com uma loja existente?
Este problema é comum em armazéns de dados, onde grandes tabelas de dados de factos têm de estar logicamente relacionadas com tabelas de dimensão que contêm informações sobre armazenamentos, 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 os factos não relacionados aparecerão agrupados numa tabela dinâmica sob um cabeçalho em branco.
Tratamento de 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 utilizado para representar valores nulos, cadeias vazias e outros valores em falta. Para obter mais informações sobre o valor em branco, bem como outros tipos de dados DAX, consulte Tipos de dados em modelos de dados.