Uma das funcionalidades mais avançadas do Power Pivot é a capacidade de criar relações entre tabelas e, em seguida, utilizar as tabelas relacionadas para pesquisar ou filtrar dados relacionados. Pode obter valores relacionados de tabelas utilizando a linguagem de fórmulas fornecida com o Power Pivot, Data Analysis Expressions (DAX). O DAX utiliza um modelo relacional e, como tal, pode obter com facilidade e precisão valores relacionados ou correspondentes noutra tabela ou coluna. Se estiver familiarizado com a função PROCV no Excel, esta funcionalidade no Power Pivot é semelhante, mas muito mais fácil de implementar.
Pode criar fórmulas que efetuem pesquisas como parte de uma coluna calculada ou como parte de uma medida para utilizar numa Tabela Dinâmica ou num Gráfico Dinâmico. Para mais informações, consulte os seguintes tópicos:
Campos Calculados no Power Pivot
Colunas Calculadas no Power Pivot
Esta secção descreve as funções do DAX que são fornecidas para pesquisa, juntamente com alguns exemplos de como utilizar as funções.
Nota
Dependendo do tipo de operação de pesquisa ou fórmula de pesquisa que pretende utilizar, poderá ter de criar primeiro uma relação entre as tabelas.
Compreender as funções de pesquisa
A capacidade de procurar dados correspondentes ou relacionados de outra tabela é particularmente útil em situações em que a tabela atual tem apenas algum tipo de identificador, mas os dados de que necessita (como o preço do produto, nome ou outros valores detalhados) estão armazenados numa tabela relacionada. Também é útil quando existem várias linhas noutra tabela relacionadas com a linha ou o valor atual. Por exemplo, pode obter facilmente todas as vendas associadas a uma determinada região, loja ou vendedor.
Ao contrário das funções de pesquisa do Excel, como PROCV, que são baseadas em matrizes, ou PROC, que obtém o primeiro de vários valores correspondentes, o DAX segue as relações existentes entre tabelas unidas por chaves para obter o único valor relacionado que corresponde exatamente. O DAX também pode obter uma tabela de registos relacionados com o registo atual.
Nota
Se estiver familiarizado com bases de dados relacionais, pode considerar as pesquisas no Power Pivot como semelhantes a uma instrução subselect aninhada no Transact-SQL.
Recuperando um único valor relacionado
A função RELATED devolve um único valor de outra tabela relacionada com o valor atual na tabela atual. Pode especificar a coluna que contém os dados pretendidos e a função segue as relações existentes entre tabelas para obter o valor da coluna especificada na tabela relacionada. Em alguns casos, a função tem de seguir uma cadeia de relações para obter os dados.
Por exemplo, suponha que tem uma lista dos envios atuais no Excel. No entanto, a lista contém apenas um número de ID de funcionário, um número de ID de encomenda e um número de ID de transitário, dificultando a leitura do relatório. Para obter as informações adicionais que pretende, pode converter essa lista numa tabela ligada do Power Pivot e, em seguida, criar relações para as tabelas Funcionário e Revendedor, fazendo corresponder o IDDoEmpregado ao campo ChaveDeColaborador e o IDDrevendedor ao campo ChaveDeRevendedor.
Para apresentar as informações de pesquisa na tabela ligada, adicione duas novas colunas calculadas, com as seguintes fórmulas:
= RELATED('Empregados'[EmployeeName])
= RELATED('Resellers'[CompanyName])
Envios de hoje antes da consulta
| IDDaEncomenda | N.º de Empregado | IDDaRevendedor |
|---|---|---|
| 100314 | 230 | 445 |
| 100315 | 15 | 445 |
| 100316 | 76 | 108 |
Tabela Funcionários
| N.º de Empregado | Empregado | Revendedor |
|---|---|---|
| 230 | Kuppa Vamsi | Sistemas de Ciclo Modular |
| 15 | Pilar Ackeman | Sistemas de Ciclo Modular |
| 76 | Kim Ralls | Bicicletas Associadas |
Envios de hoje com pesquisas
| IDDaEncomenda | N.º de Empregado | IDDaRevendedor | Empregado | Revendedor |
|---|---|---|---|---|
| 100314 | 230 | 445 | Kuppa Vamsi | Sistemas de Ciclo Modular |
| 100315 | 15 | 445 | Pilar Ackeman | Sistemas de Ciclo Modular |
| 100316 | 76 | 108 | Kim Ralls | Bicicletas Associadas |
A função utiliza as relações entre a tabela ligada e a tabela Funcionários e Revendedores para obter o nome correto para cada linha no relatório. Também pode utilizar valores relacionados em cálculos. Para obter mais informações e exemplos, consulte Função RELATED.
A obter uma lista de valores relacionados
A função RELATEDTABLE segue uma relação existente e devolve uma tabela que contém todas as linhas correspondentes da tabela especificada. Por exemplo, suponhamos que pretende saber quantas encomendas cada revendedor efetuou este ano. Pode criar uma nova coluna calculada na tabela Revendedores que inclua a seguinte fórmula, que pesquise registos de cada revendedor na tabela ResellerSales_USD e conte o número de encomendas individuais efetuadas por cada revendedor.
=COUNTROWS(RELATEDTABLE(ResellerSales_USD))
Nesta fórmula, a função RELATEDTABLE obtém primeiro o valor de ResellerKey para cada revendedor na tabela atual. (Não precisa de especificar a coluna ID em nenhum ponto da fórmula, porque o Power Pivot utiliza a relação existente entre as tabelas.) Em seguida, a função RELATEDTABLE obtém todas as linhas da tabela ResellerSales_USD relacionadas com cada revendedor e conta as linhas. Se não existir nenhuma relação (direta ou indireta) entre as duas tabelas, obterá todas as linhas da tabela ResellerSales_USD.
Para o revendedor Sistemas de Ciclo Modular em nosso banco de dados de exemplo, há quatro pedidos na tabela vendas, portanto, a função retorna 4. Para Bicicletas Associadas, o revendedor não tem vendas, pelo que a função devolve um espaço em branco.
| Revendedor | Registos na tabela de vendas deste revendedor |
|---|---|
| Sistemas de Ciclo Modular | ID de Revendedor |
| 445 | |
| 445 | |
| 445 | |
| 445 | |
| ID de Revendedor | |
| Bicicletas Associadas |
Nota
Uma vez que a função RELATEDTABLE devolve uma tabela, e não um único valor, tem de ser utilizada como um argumento para uma função que efetue operações em tabelas. Para obter mais informações, consulte Função RELATEDTABLE.