Joviano

Bem vindo ao

Blog do Jovi!

O blog do Jovi tem como objetivo ajudar você com suas dúvidas, além de expandir seu conhecimento através da informação.

PROCV Aproximado no Power Query e no DAX

Olá, FERA! Hoje vamos desbravar o Procv Aproximado no Power Query do Excel e do Power BI, onde você vai aprender a fazer vínculos entre tabelas com granularidades diferentes.

Vamos lá, pegue seu café e sente-se confortavelmente, porque a aula vai começar!

Introdução ao Vínculo entre Tabelas

Você já se deparou com a necessidade de vincular uma tabela de faturamento a uma tabela de contratos, mas esbarrou na diferença de detalhamento entre elas?

Pois é, isso é mais comum do que parece.
Mas não se preocupe, porque hoje você vai aprender a solucionar esse problema como um verdadeiro mestre dos dados!

Entendendo a Granularidade das Tabelas

Vamos lá, FERA! Imagine que você tem um monte de contratos que funcionam como pacotes de serviços, cada um valendo por um período específico, representado por um intervalo de datas “de – até”. Agora, imagine que você tem uma pilha de faturas, cada uma com uma data específica em que o serviço foi prestado.

Agora, o desafio é o seguinte: você precisa descobrir a qual contrato cada fatura está relacionada, considerando a data em que o serviço foi prestado. É como se você tivesse que encontrar o par perfeito para cada meia solitária em uma gaveta cheia delas, onde cada par representa um contrato e cada meia solitária representa uma fatura.

Para fazer isso, você vai usar o poder do Power Query para criar uma relação entre as tabelas de contratos e faturas, usando o intervalo de datas “de – até” dos contratos para encontrar o contrato correspondente para cada fatura. É uma tarefa que pode parecer complexa, mas com as ferramentas certas, você vai ver que é mais simples do que parece!

Aqui, a granularidade das tabelas entra em jogo, pois enquanto a tabela de contratos tem uma visão mais ampla, representando períodos mais longos, a tabela de faturas tem uma visão mais detalhada, focada em dias específicos. Entender essa diferença de granularidade e saber como trabalhar com ela é o primeiro passo para se tornar um mestre no tratamento de dados!

Criando Colunas Calculadas

Agora que já entendemos a importância de organizar nossos dados, vamos criar colunas calculadas para determinar a faturação baseada nas datas dos contratos.

Dependendo de sua fonte de dados e da ferramenta você faria de uma forma diferente, mas hoje vou te mostrar como você pode fazer isso no Power Query (tanto do Excel quanto do Power BI).

Vamos criar uma coluna que vai nos mencionar o número do contrato vigente para aquela transação, e depois, quando você estiver no DAX (por exemplo), o relacionamento será possível.

Fazendo a busca do contrato por faixa de valores

E aí, FERA! Agora que já entendemos a granularidade das nossas tabelas, vamos mergulhar no Power Query para criar uma coluna totalmente nova que vai facilitar e muito a nossa vida. Vamos criar a coluna “ContratoVigente” na tabela “Vendas”. Essa coluna vai ser o nosso guia para saber qual contrato estava vigente no momento de cada venda.

Para fazer isso, vamos criar uma função que vai avaliar as colunas “DataVenda” e “ClienteID” na tabela “Vendas” e buscar na tabela “Contratos” as informações correspondentes, considerando as colunas “ClienteID”, “DataVigenciaDe” e “DataVigenciaAte”.

Se liga no comando exemplo:

let
    AdicionarColuna = Table.AddColumn(
        Vendas, 
        "ContratoVigente", 
        each 
            let
                DataVendaAtual = [DataVenda], 
                ClienteIDAtual = [ClienteID], 
                ContratoVigente = Table.SelectRows(
                    Contratos, 
                    each 
                        [ClienteID] = ClienteIDAtual 
                    and [DataVigenciaDe] <= DataVendaAtual 
                    and [DataVigenciaAte] >= DataVendaAtual
                )
            in
                // retornar a primeira linha, caso encontre mais que uma
                if Table.RowCount(ContratoVigente) > 0 then
                    Record.Field(ContratoVigente{0}, "ContratoID")
                else
                    null
    )
in
    AdicionarColuna

Essa é uma forma de fazer, que vai fazer uma avaliação à cada linha, retornando o primeiro valor identificado.

Por isso é bom lembrar, que assim como o PROCV aproximado, é importante que você classifique (ordene) primeiro seus dados da tabela “Contratos”.

Dica Bônus: Como fazer o PROCV aproximado no DAX?

vamos elevar o nível e usar as funções MINX e FILTER no DAX para encontrar o contrato vigente de cada venda. É como se estivéssemos usando um detector de metais superpotente para encontrar o tesouro escondido mais valioso!

Na tabela “Vendas”, crie uma coluna calculada, com esse comando:

ContratoVigente = 
VAR DataVendaAtual = Vendas[DataVenda]
VAR ClienteAtual = Vendas[ClienteID]
RETURN
    CALCULATE(
        MINX(
            FILTER(
                Contratos,
                   Contratos[ClienteID] = ClienteAtual 
                && Contratos[DataVigenciaDe] <= DataVendaAtual 
                && Contratos[DataVigenciaAte] >= DataVendaAtual
            ),
            Contratos[ContratoID]
        )
    )

Quando você estiver a fazer um cálculo desses, você tem vários caminhos de resolução, e cada um com uma velocidade diferente.

Mas saiba que a velocidade não está ligada só à linguagem, e sim, ao que você está aplicando antes e depois daquela função.

No caso do DAX, os dados já vieram tratados do Power Query, e aplicar uma função como essa, em dados que já estão no modelo, pode ser ligeiramente mais rápido que no Power Query, mas, isso porque ele está trabalhando com dados já tratados.

Entendeu a diferença? deixe nos comentários desse post sua conclusão!

Fixação com aula em vídeo

Esse resolução em Power Query está explicada detalhadamente em um vídeo no meu canal do Youtube, que você pode acessar clicando aqui.

Foram 18 minutos de uma aula completona sobre esse assunto, para que você possa replicar hoje mesmo.

Pontos de Atenção

Além da escolha do ponto onde aplicar a resolução desse problema, você tem também uma infinidade de conceitos aplicados que podem mudar seu ponto de vista, e fazer de uma forma ainda diferente, como mostrei na LIVE 025, onde aplicamos esse conceito resolvendo o caso de: “Ordem de Serviço x Ordem que Produziu o Produto” (com famoso De-Até).

joviano capa live 025

Ou também no caso do Imposto de Renda, que também tem Faixa de Valores, o qual apresentamos na LIVE 020, criando um cálculo composto entre faixas de IRRF e INSS.

joviano capa live 020

Ambas LIVES estão disponíveis com seus materiais de apoio no módulo LIVES da FORMAÇÃO POWER QUERY 2.0, que é um pacote com mais de 15 cursos e centenas de horas aplicadas ao Ecossistema Power Query > SQL > DAX > Python.

Torne-se um mestre no manuseio de dados, e descubra o poder que você nem imaginava que a ferramenta tinha.

Conclusão: O Poder do Tratamento de Dados

Parabéns, FERA! Você chegou ao fim desta jornada e agora possui o conhecimento necessário para transformar horas de trabalho tedioso em minutos de pura eficiência. Mas não pare por aqui! Convido você a conhecer a Formação Power Query 2.0, onde você vai aprender ainda mais sobre o universo do tratamento de dados e se tornar um verdadeiro ninja do Power Query e Power BI.

Forte abraço do

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Receba conteúdos do Jovi!

Digite seu interesse abaixo:

Quer Aprender sobre Power Query?

Conheça nossa formação e tudo que você pode aprender com ela.

Mais conteúdos gratuitos para você!

OPA, vejo que você é novo por aqui!

Temos um presente de boas vindas para os amantes de Blog!

E ai FERA?!

Não vou atrapalhar tua leitura deste super artigo.

Só quero te dizer que por ser um visitante novo aqui no site, nosso sistema está programado para te enviar um cupom de desconto para a FORMAÇÃO POWER QUERY 2.0, que é um pacotão de cursos do JOVI, com mais de 300 horas de conteúdo.

Informe seus dados a seguir, que te enviaremos as instruções para resgate desse cupom exclusivo.

Exemplo 👉 +5511988776655 👈 [não informar pontos, traços e parênteses]

explicação telefone

Números do Brasil devem iniciar com +55
Preencha conforme o exemplo, pois o presente será enviado por WhatsApp para esse número. 

Após enviar, pode fechar essa janela, que seu presente já está em processamento.

A ementa possui centenas de aulas, e resumimos em um painel de PowerBI o qual enviaremos a você.

Preencha seu nome e email que em instantes receberá a ementa completa deste pacote de cursos.

Formato Aceito: [+ código do pais] [código de área] [número]