Pular para o conteúdo principal

[Power BI e PowerAutomate] Versionamento e Publicação Automática dos seus arquivos PBIX

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] Atualização MARÇO 2020 !!!!

Atualização Power BI Março de 2020!
Olá meus queridos, saiu agorinha a pouco a atualização do nosso Power BI Desktop de Março de 2020.

A atualização você pode fazer aqui:

https://www.microsoft.com/pt-BR/download/details.aspx?id=58494

Alguns itens você pode acompanhar aqui nesse rápido artigo pra sair brincando hoje mesmo com a sua atualização.

1) Botão de "pesquisar" nos filtros laterais
Muitas vezes você tem uma série de filtros em uma página ou relatório e é dificil encontrar aquele filtro específico, bem agora você com o botão de pesquisa pode procura-lo muito mais fácil utilizando o nome dele. Por enquanto ainda não é possível utiliza os "sinônimos" que você pode criar para cara coluna, tabela, ou medida na área de modelo, mas quem sabe em breve né?

2) Ordenar Tabela por mais de uma Coluna 
Esse é um dos grandes pedidos da comunidade, e veio através do ideas.powerbi.com , agora você pode, como no excel, ordenar uma tabela por mais de uma coluna bastando utiliza…

[Power Query] Código M para Dataset sobre Covid19 no Brasil e a Função Value.Metada

Muita gente tem feito alguns relatórios legais sobre covid19, como não sou tão fã de fazer relatórios bonitos pra ficar postando, prefiro trabalhar behind the scenes e trazer na verdade um Dataset do ministério da saúde sobre Covid19 nos estados.
PS. Foi feita uma alteração no Código por conta de alterações no nome do arquivo o abaixo é o mais atual então algumas coisas no artigo podem estar diferentes mas a ideia central é a mesma.
O grande detalhe dessa consultá é que utilizei uma função em PowerQuery conhecida por poucos a Value.Metadata.
Essa função permite trazer informações específicas sobre os nossos dados, ela só tem um argumento que é um valor qualquer. 
Se utilizamos como argumento uma tabela, por exemplo, na Value.Metadata ele vai me trazer informações sobre QueryFolding que você já viu aqui nesse VÍDEO.


Além disso vai me trazer informações de qual é a fonte de dados, bem como meu "Path" ou Caminho dessa fonte. No caso como era uma fonte SQL o Path seria servidor e ban…

Power BI Service - O Publicar na Web não está disponível para mim, e agora?

Olá seus pão duro que adoram publicar link público, tudo bem com vocês?

Hoje vamos dar uma mãozinha para você que por algum motivo arrancou todos os fios de cabelo da cabeça porque não viu mais a opção de Publicar na Web disponível no seu Power BI.

Antes também gostaria de te fazer dois convites:

O segundo, como sempre te convido a conhecer meu canal no YouTube, se inscrever e compartilhar os conteúdos que faço sempre com muito carinho para todos vocês (coisa melosa),

https://youtube.com/rafaelmendonca

Dados os recados vamos para nosso problema...

1) Seu dia amanheceu assim...
Numa bela manha você decide publicar seu relatório e compartilhar para toda a rede e se depara com essa situação:


Cara quem roubou meu botão de "Publicar na Web"?

Mas não se desespere isso pode ser uma configuração que o administrador do tenant (do seu site no serviço do PBI) ou até mesmo você desavisadamente alterou.

2) Verificando a Opção Desabilitada...
A partir daqui você precisa ter acesso de admi…