Imagine que você tem uma caixa de ferramentas que você mesmo pode moldar, criando utensílios específicos para tarefas únicas. No universo do Power Query, esses utensílios são as funções personalizadas (são escritas na linguagem M). São receitas que você cria uma vez e depois usa várias vezes, economizando esforço e aumentando a precisão.
A Linguagem M e sua Relação com o Power Query
Vamos imaginar um jogo de futebol, onde cada jogador, cada posição e cada jogada tem sua importância estratégica. Nesse cenário, a linguagem M representa a equipe, cada função e comando um jogador, e o Power Query é o estádio onde o jogo acontece.
Entendendo a Equipe: A Linguagem M
A linguagem M é como um time de futebol bem coordenado e treinado:
- Jogadores Versáteis (Funções e Comandos): Assim como jogadores que podem jogar em diferentes posições, as funções na linguagem M são versáteis e podem ser aplicadas a diversos contextos de dados.
- Táticas Avançadas (Transformações Complexas): Cada transformação de dados na linguagem M é como uma jogada tática no futebol, cuidadosamente planejada para avançar em direção ao gol (ou ao insight desejado).
- Reação às Condições de Jogo (Adaptabilidade): Assim como um time de futebol se adapta às condições do jogo e ao time adversário, a linguagem M pode ser ajustada para atender a diferentes necessidades de análise de dados, enfrentando desafios variados com flexibilidade.
O Estádio: Power Query
O Power Query é o campo de futebol onde a equipe da linguagem M joga:
- Campo de Visualização (Interface do Usuário): Assim como um estádio permite que os espectadores vejam o jogo, o Power Query proporciona uma visão clara das transformações de dados, permitindo ao usuário acompanhar cada “jogada” dos seus comandos M.
- Estratégias de Jogo (Processo de Análise): No Power Query, você define a estratégia para manipular seus dados, organizando as transformações em uma sequência lógica, assim como um técnico organiza sua equipe e define as jogadas.
- Dinâmica de Jogo (Interatividade): A capacidade de testar, modificar e iterar rapidamente no Power Query é como ajustar a estratégia de jogo em tempo real, reagindo às mudanças do “adversário” (os dados) para alcançar o melhor resultado.
O Desafio do Chefe: Calcular os Meses Entre Duas Datas
Imagine a cena: seu chefe se aproxima com uma demanda urgente: “Quero saber quantos meses existem entre duas datas.” Aqui, as datas são marcos críticos, e sua tarefa é transformar essa diferença temporal em uma contagem mensal, essencial para decisões estratégicas.
Nesse momento, você assume um papel crucial, aplicando sua expertise no Power Query para desvendar essa questão. Com a linguagem M, você não apenas responde ao pedido, mas oferece insights valiosos, ajudando a orientar ações futuras da empresa.
Você está no centro do palco, convertendo um simples pedido em análise estratégica, demonstrando como sua habilidade em manipular dados é fundamental no ambiente de negócios.
Atendendo o Pedido do seu Chefe: Criando a Função Personalizada no Power Query
Vamos mergulhar nos detalhes do comando que você forneceu, explorando cada segmento minuciosamente. Ao final, combinaremos todas as peças, formando a “funçãozona” que resolve o desafio proposto pelo seu chefe.
Vou te explicar o raciocínio de cada uma das variáveis (etapas), e ao final desse artigo vamos reunir todas elas na função personalizada completa.
Vamos lá!
Os Parâmetros Iniciais
(Date1, Date2) =>
Aqui começamos declarando nossa função com dois parâmetros, Date1
e Date2
. Eles serão as datas entre as quais queremos calcular a diferença em meses. Esses parâmetros são essenciais porque permitem que a função seja reutilizável para qualquer par de datas.
Calculando a Diferença em Dias
dias = Number.From(Date1) - Number.From(Date2),
Neste ponto, convertemos as datas em valores numéricos para calcular a diferença entre elas. O resultado, dias
, representa quantos dias existem de uma data à outra.
Determinando o Valor Absoluto e a Direção
dias_abs = Number.Abs(dias),
mult = if Date2 >= Date1 then 1 else -1,
dias_abs
é o valor absoluto da diferença, que nos interessa porque estamos buscando a quantidade total de meses, independente da ordem das datas.
O mult
define a direção da contagem, essencial para casos onde a ordem das datas impacta no resultado final.
Estabelecendo os Limites
lista_datas = {Date1, Date2},
menor = List.Min(lista_datas),
maior = List.Max(lista_datas),
Aqui, criamos uma lista contendo ambas as datas e identificamos qual é a menor (menor
) e a maior (maior
).
Isso estabelece os limites para a geração da sequência de datas.
Criando a Sequência de Datas
lista_datas_entre =
List.Dates(
menor,
dias_abs + 1,
#duration(1,0,0,0)
),
Esta linha gera uma lista de todas as datas entre menor
e maior
, inclusivas.
Essa sequência completa é crucial para identificar os finais de cada mês dentro do intervalo.
Transformar todas as datas da lista em “Final do Mês”
lista_datas_entre_FimMes =
List.Transform(
lista_datas_entre,
each Date.EndOfMonth(_)
),
Transformamos cada data na sequência para o último dia do respectivo mês.
Isso nos ajuda a identificar os meses distintos presentes no intervalo.
Contagem Distinta dos Meses
lista_distinta = List.Distinct(lista_datas_entre_FimMes),
qtd = List.Count(lista_distinta) * mult
Por fim, removemos datas duplicadas com List.Distinct
e contamos os elementos restantes.
Multiplicamos pelo mult
para ajustar baseado na ordem das datas iniciais.
Combinando Tudo: A Função Personalizada no Power Query
(Date1, Date2) =>
let
dias = Number.From(Date1) - Number.From(Date2),
dias_abs = Number.Abs(dias),
mult = if Date2 >= Date1 then 1 else -1,
lista_datas = {Date1, Date2},
menor = List.Min(lista_datas),
maior = List.Max(lista_datas),
lista_datas_entre = List.Dates(menor, dias_abs + 1, #duration(1,0,0,0)),
lista_datas_entre_FimMes = List.Transform(lista_datas_entre, each Date.EndOfMonth(_)),
lista_distinta = List.Distinct(lista_datas_entre_FimMes),
qtd = List.Count(lista_distinta) * mult
in
qtd
Com essa “funçãozona”, você agora pode calcular a diferença em meses entre quaisquer duas datas, fornecendo uma resposta precisa e útil para o pedido do seu chefe.
Prefere aprender com vídeo?
Esse artigo é subsídio para um dos vídeos do meu canal no Youtube, e te convido a assistir:
Te convido a dar uma olhada também nos demais conteúdos do canal, pois tem muita coisa boa de Power Query, SQL, DAX e Python lá te esperando.
Material de Apoio dessa aula?
CLIQUE AQUI e solicite o link para você ter acesso ao material de apoio dessa aula.
O nome do arquivo de apoio é: “20240321_DiferencaMeses.xlsx“
Domine o Universo da Linguagem M
Quer ir além? Conheça a FORMAÇÃO POWER QUERY 2.0 e torne-se um mestre na manipulação de dados. Transforme horas de trabalho em minutos e impressione seu chefe e colegas com suas habilidades mágicas em análise de dados!
Conclusão
Ao dominar funções personalizadas em M e entender o poder do Power Query, você não apenas atende às demandas do seu chefe rapidamente mas também se arma com um conhecimento que pode transformar sua carreira.
Junte-se a nós na FORMAÇÃO POWER QUERY 2.0 e leve suas habilidades ao próximo nível!
Forte Abraço