Hoje te mostrarei como você poderá evoluir do Excel para o Power BI e fazer as mesmas contas, como por exemplo o PROCV (ou PROCX) com DAX e Relacionamentos.
PROCV ou PROCX
Bom, se você se familiarizou com a expressão “PROCV” ou “PROCX” provavelmente você é um usuário do Excel. Caso não seja, vou te explicar brevemente o que essa função faz.
Essa função serve para você buscar um determinado valor em outra tabela através de um identificador em comum.
Exemplo: Como você obteria o faturamento tendo em mãos a tabela Vendas e Produtos ?
O faturamento total nada mais é que a soma do produto entre ValorUnitario e QtdItens. Como a coluna ValorUnitario não está na tabela Vendas, precisaremos antes de tudo, trazê-la para cá. Para isso, usaremos a função PROCX (XLOOKUP):
=XLOOKUP(D2;Produto!A:A;Produto!D:D)
Agora sim, você poderia obter o faturamento total apenas multiplicando ValorUnit por QtdItens, já que ambos estão na tabela Vendas.
Se você observar as colunas da tabela Produto, verá que não temos o nome do grupo e linha que cada produto possui (estão nas tabelas Grupo e Linha) então já viu né?! Teríamos que criar outras colunas para ter tudo no mesmo lugar e só depois montar os gráficos. Trabalheira!
Ainda assim, levar tudo para a tabela Vendas, que é nossa tabela fato não é o ideal no mundo da modelagem de dados.
No Power BI isso podemos resolver isso facilmente e adotar as melhores práticas de modelagem de dados.
PROCX no Power BI
Há 4 formas de “fazer PROCX” no Power BI:
1) Mesclando Consultas no Power Query
Usar sempre quando você precisar unificar tabelas que representam a mesma entidade (no nosso caso era Produto).
Ex: Colocar colunas Grupo, Linha e Produto na tabela Produto
Ou seja, para unificar tabelas que representam a mesma dimensão você pode realizar a mesclagem de consultas.
Dica:
Evite ao máximo realizar mescla de consultas entre Tabelas dimensão e Tabelas fato.
Para levarmos a coluna Grupo para a tabela Produto, basta ir na tabela Produto → Mesclar Consultas → Definir as colunas envolvidas na mesclagem
Na janela que aparecer, você deve selecionar a coluna que temos em comum:
Como resultado dessa operação teremos a coluna Grupo que tem um botão para expandirmos as colunas que precisamos. No caso, deixaremos marcada apenas Grupo e cdLinha:
Veja que se utilizássemos o PROCX, só iríamos conseguir trazer uma coluna de cada vez e na Mesclagem de Consultas no Power Query conseguimos trazer mais de uma!
Para trazer o nome da Linha, basta realizar o mesmo procedimento na tabela Produto, mas agora iremos buscar o nome na tabela Linha:
Depois, basta expandir a coluna Linha.
O resultado ficou assim:
Para finalizar, basta desabilitarmos a carga da tabela Grupo e Linha porque já levamos a coluna que precisamos para a tabela Produto. Basta clicar com botão direito na tabela Grupo e deixar o “Habilitar carga” desmarcado:
Repare que ao fazer isso, você apenas estará deixando de levar a tabela para a modelagem. Ou seja, o que você utilizou para realizar a mesclagem ainda vai existir e os dados serão atualizados da mesma forma que as outras tabelas.
Por último, clique em Fechar e Aplicar para prosseguirmos.
2) Usando a função RELATED da Linguagem DAX
Voltando ao nosso exemplo do Excel, vamos trazer a coluna “ValorUnitario” para a tabela Vendas através da linguagem DAX.
A fórmula é bem simples:
Faremos o mesmo procedimento para criar a coluna Valor Total com o produto.
Abaixo, as duas fórmulas que construímos:
ValorUnit =RELATED ( Produto[ValorUnitario] )
ValorTotal =
Vendas[QtdItens] * Vendas[ValorUnit]
Importante lembrar que é necessário existir um relacionamento entre a tabela Vendas e Produto para que a função RELATED funcione, ok?! Falando e relacionamentos… Vamos para a 3a forma!
3) Criando relacionamentos
Vá na área Modelo e veja que automaticamente o Power BI identificou o relacionamento entre a tabela Produto e Vendas através da colunas cdProduto.
Isso significa que se fizermos um visual com dados de ambas as tabelas, conseguiremos obter valores corretos porque elas estão relacionadas. Veja um exemplo:
Irado, né?! No Excel teríamos que fazer tabelas dinâmicas para cada agregação ou então várias fórmulas para juntar tudo que precisamos. Aqui só precisamos relacionar as tabelas.
Bora para a próxima a última forma!
4) Usando a função LOOKUPVALUE da Linguagem DAX
Eu somente usaria esta função para buscar um valor entre tabelas que não estão relacionadas entre si.
Vamos criar a seguinte expressão numa coluna nova da tabela Vendas:
ValorUnit LOOKUPVALUE =LOOKUPVALUE (
Produto[ValorUnitario],
Produto[cdProduto], Vendas[cdProduto]
)
O resultado…
Repare que obtivemos o mesmo resultado de quando utilizamos a função RELATED, porém se removêssemos o relacionamento (físico) entre Vendas e Produto, somente a coluna ValorUnit LOOKUOVALUE iria funcionar.
Dúvidas
Durante a Live #49, alguns participantes tiveram dúvidas. Para fechar, vou adicioná-las aqui embaixo. Vai que alguma delas é também sua dúvida!
Altino Fernandes: Toda tabela dimensão tem que ter um código chave ?
Sim!
Guilherme Rodrigues: E se eu trabalho com muitas linhas como por exemplo 5 milhões de linhas como vou criar esta chave única?
Você só precisa de chave única para tabelas dimensão.
André Paiva: Às vezes precisamos de duas chaves de uma tabela para relacionar a outra, é possível fazer isso? ex. mês e ano em colunas separadas para vincular a uma tabela com valores com mês e ano na mesma coluna.
Você pode criar uma chave única concatenando essas duas colunas.
Dica da Sayuri Arimori – Say: Gosto de pensar em dimensão como um filtro do dashboard / relatório…
Exato!
Dimensão: informações que vão no Eixo de um visual ou no filtro do relatório
Fato: informações que vão nos valores dos gráficos (tamanho da barra, altura da linha, o número)
Clebson Silva: A função RELATED é utilizada quando eu quero buscar informações de outra tabela apenas com o relacionamento ativado?
E sempre quando estou em uma tabela fato e quero buscar uma informação na tabela dimensão
Cristiane Viana: Se eu tenho informações na mesma estrutura extraídas do sistema de vários clientes, mas que preciso entregar separadamente para cada um deles. Eu preciso fazer todo processo ETL, relacionamento, layout e demais ações para cada um?
Você pode importar tudo em um único projeto do Power BI, configurar RLS (segurança a nível de linha) e compartilhar com seus clientes.
Caso você queira entender melhor o conceito de relacionamentos, modelagem, tabelas fato e dimensão, recomendo fortemente que dê uma olhada aqui:
Guia Definitivo sobre RELACIONAMENTOS entre tabelas e Modelagem de Dados – Xperiun
Bom, agora, fechou!
Espero que tenha gostado do conteúdo e não se esqueça: Live ao Vivo no Canal do Youtube toda Terça-feira às 19h! Te vejo lá!
Abraços,
Leonardo.