Pular para o conteúdo principal

Power BI - NÃO EDITE seus Modelos do Power BI na Nuvem.

Power BI - Transformando listas de valores em um único registro concatenado.



Olá meus amiguinhos Linkedinzeiros, tudo bem?

Hoje em mais uma dica de transformação de dados utilizando o nosso amigo Power Query, vamos conhecer uma necessidade de um colega dos Grupos de Whatsapp da vida que vai ver é a sua também, aprendendo um pouco mais sobre Linguagem M.

Originalmente (e foi o que passei para ele) eu criei a solução com Função Personalizada, que você pode conhecer um pouco mais lá no meu canal nesse vídeo aqui:


Aproveita e inscreva-se no canal, macho vei.

No final do artigo eu deixo para vocês o código M da solução com Função Personalizada.

Passado todo o lenga-lenga inicial, vamos conhecer nossos dados a serem tratados hoje:



Nos nossos dados temos as seguintes informações, uma coluna com "idreserva" que seria o identificador de uma reserva de viagens, coluna "seqtrecho" que é uma sequência dos trechos de viagens, ou seja, a pessoa pode ir para somente um destino como no idreserva = 1 ou para vários destinos com a mesma reserva como no idreserva = 4 e por último temos "cidadede" que é a cidade de destino daquela reserva no trecho especificado.

O nosso colega queria que em CADA idreserva houvesse uma nova coluna com a listagem de todas as cidades destinos separados por "/" .

Teríamos assim no idreserva = 1 a coluna Lista com o valor AAA já que so temos um destino para essa idreserva, mas na idreserva = 3 a nossa coluna Lista teria o valor SFS/GDG/HHF para cada uma das 3 linhas dessa id, que é a concatenação de todas as cidades destino.

Explicado o conceito vamos para a nossa brincadeira.

1) Agrupando dados

Precisamos inicialmente agrupar nossos dados com base na coluna idreserva, fazendo com que tenhamos tabelas agrupadas para cada idreserva.

Fazemos isso clicando com o botão direito no cabeçalho da coluna "idreserva" e escolhendo a opção "Agrupar por...".



Temos então a nossa tela de opções de agrupamento.

Em "Operação" vamos alterar para "Todas as linhas".



Finalizado isso temos então uma coluna de Tabelas encapsuladas.


2) Criando uma Lista a Partir das Tabelas Encapsuladas.

No Power Query temos 3 tipos básicos de estrutura de dados, Registros, Listas e Tabelas.

Tabelas nada mais são que listas de várias listas, então cada Coluna de uma tabela pode ser transformada numa lista dos valores contidos naquela coluna específica.

Para tanto precisamos então selecionar apenas uma Coluna da Nossa Tabela.

Fazemos isso então criando uma Coluna Personalizada com a Função "Table.SelectColumns()".




A função Table.SelectColumns nos pede dois Argumentos, que são, uma Tabela que será a COLUNA DE TABELAS ENCAPSULADAS e uma Lista com os nomes das colunas a serem selecionada dessas Tabelas encapsuladas. No caso queremos apenas a coluna "cidadede" que é a Coluna que queremos concatenar suas linhas.



Então temos selecionada apenas a Coluna "cidadede", mas verificamos que os dados ainda estão com a estrutura "Table" e não é o que precisamos para a nossa transformação, precisamos que a estrutura esteja como Lista. Então vamos transforma-la aninhando a função já criada Table.SelectColumns() com a função Table.ToList() que transforma uma coluna de uma tabela em uma Lista. E faremos isso simplesmente alterando a nossa etapa de "Coluna Personalizada" clicando na "Catraca" ao lado do nome da Etapa e editando a função.





Agora sim tenho Listas ao invés de Tabela.

Fiz vocês darem essa volta para entender o conceito de aninhar funções no Power Query, mas poderíamos ter resolvido apenas informando na nossa coluna personalizada o Nome da Tabela e Nome da coluna dessa forma:



O resultado seria absolutamente o mesmo.

3) Extraindo e Concatenando.

Para finalizar precisamos então extrair os valores de dentro das listas concatenando-os com o "/" e isso é facílimo, só precisava saber que é possível rs...

No cabeçalho ao lado do nome da Coluna de Listas temos duas setas contrárias, clica nela e depois em "Extrair Valores...."



Na tela que será aberta vamos escolher que queremos concatenar os valores por um delimitador personalizado, e vamos escrever qual é o delimitador.



Temos nossa lista de valores concatenados Pronta.



Agora só extrair valores da coluna de Tabelas.



E bammm, está pronto nosso desafio de hoje.

Agora só curtir e correr pro abraço.

Gostou? Compartilha aí me adiciona no Linkedin, Twitter e Assina meu Canal .

Tem uma dúvida que ninguém conseguiu resolver? Manda para mim que meus bots irão te ajudar e quem sabe sua dúvida vai aparecer resolvida aqui.

Grande abraço e até a próxima.

Ahhh e não esqueci, segue o código M da outra forma de resolver, com função personalizada.

let
    Fonte = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSAWNHR0elWJ1oJSM43wnMN4byg92C4XyQGncXdzgfhD083MB8EzTzTKDqg6HqTaDqHYND4HwQ9nCLBPNNofr93DzAfDMoPzIoCM43grknFgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [idreserva = _t, seqtrecho = _t, cidadede = _t]),
    #"Tipo Alterado" = Table.TransformColumnTypes(Fonte,{{"idreserva", Int64.Type}, {"seqtrecho", Int64.Type}, {"cidadede", type text}}),
    Funcao = (idreserva as number) =>
let
    #"Linhas Filtradas" = Table.SelectRows(#"Tipo Alterado", each ([idreserva] = idreserva)),
    #"Colunas Removidas" = Table.RemoveColumns(#"Linhas Filtradas",{"idreserva", "seqtrecho"}),
    cidadede = #"Colunas Removidas"[cidadede]
in
    cidadede,
    QuaseFinal = Table.AddColumn(#"Tipo Alterado", "Lista", each Funcao([idreserva])),
    #"Valores Extraídos" = Table.TransformColumns(QuaseFinal, {"Lista", each Text.Combine(List.Transform(_, Text.From), "/"), type text})
in
    #"Valores Extraídos"

Comentários

Postagens mais visitadas deste blog

[Power BI] O totalizador da minha Tabela ou Matriz "NÃO BATE" e agora?

Olá amantes de visuais de tabela e matriz no Power BI, tudo bem? Hoje vamos falar de um caso que vejo bastante nos grupos do Power BI. “O calculo na linha está batendo mas no total não e agora?” Mas antes de iniciarmos, que tal deixar aquela sua inscrição marota no meu canal no youtube que está recheado de vídeos legais, vai lá seu pão duro de like youtube.com/rafaelmendonca Agora que você já aliviou sua pão-durice você merece conteúdo .... kkkkkkkk Vamos lá, temos então a seguinte tabela gerada no meu conjunto de dados Essa tabela possui uma lista de vendas realizadas por dois vendedores com o numero da ordem da venda, um valor unitário e uma quantidade de itens em cada venda. O que queremos é bem simples meu jovem, calcular o valor total de cada venda e ter um total de todas as vendas... Aí você muito garotão usa a seguinte expressão DAX: E depois joga isso numa tabela. Lindo neh??? Mas o totalizador trouxe um valor que não tem...

[Power BI] Transformando Latitude e Longitude de Graus para Decimal

Olá amiguinhos que adoram mapas nos seus paineis tudo bem? Hoje bate papo rapidão sobre uma dúvida de uma colega no nosso grupo do telegram, e se você não está nele pode ir agora tirar duvida com um grupo de quase 1700 pessoas e super ativo. https://t.me/planilheiros Bem, a dúvida dela era bem simples e já tinha visto outra vez alguém perguntando em outro grupo mas estava na correria e não pude ajudar, isso acontece infelizmente bastante. Ela tem dados de latitude e longitude em Grau e gostaria de passar isso para DECIMAL para poder utilizar nos visuais de Mapa do Power BI. A dúvida é bem legal e precisa entender um pouco a lógica matemática de transformar Grau para Decimal e ela é bem simples. Quando um dado em Grau, temos 3 informações: - Grau - Minutos - Segundos. Grau é o valor inteiro e ele por si só já me da o dado do meu inteiro do Decimal. Minuto é isso mesmo Minuto, para eu chegar num valor decimal de minutos eu preciso dividir ele por 60. Segundo seg...

Como usar o Web.Contents do Power Query: guia completo

Como usar o Web.Contents do Power Query para acessar dados online O Power Query é uma ferramenta poderosa para obter, transformar e analisar dados de diferentes fontes. Uma dessas fontes é a web, que contém uma grande variedade de dados online que podem ser úteis para os seus projetos. Para acessar dados online a partir de uma URL, você pode usar a função Web.Contents do Power Query. Essa função retorna o conteúdo binário baixado da URL especificada e permite que você use opções adicionais para personalizar a sua consulta. Neste artigo, vamos mostrar como usar o Web.Contents para obter dados de diferentes tipos de arquivos online, como CSV, Excel ou JSON. Também vamos discutir as vantagens e desvantagens dessa função em comparação com outras funções do Power Query. O que é o Web.Contents? O Web.Contents é uma função do Power Query que permite acessar dados online a partir de uma URL. Você pode usar essa função para obter dados de diferentes fontes da web, como arquivos CSV, Excel, JSON...