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 segue a mesma lógica, vamos dividi-lo então por 3600.
Sendo assim basta criar uma função personalizada que nos diga exatamente isso, pegue graus, separe o inteiro (Grau) Number.From(Text.BeforeDelimiter(Fonte, "º")), pegue a parte de minutos divida por 60 Number.From(Text.BetweenDelimiters(Fonte, "º", "'"))/60, pegue segundos divida por 3600 Number.From(Text.BetweenDelimiters(Fonte, "'", """"))/3600 e depois só somar esses carinhas todos.
E voilè temos nossa função personalizada para usar bonitão só copiar e colar no editor avançado em uma consulta nula.
(graus as text)=>
let
Fonte = graus,
Graus = Number.From(Text.BeforeDelimiter(Fonte, "º")),
Minutos = Number.From(Text.BetweenDelimiters(Fonte, "º", "'"))/60,
Segundos = Number.From(Text.BetweenDelimiters(Fonte, "'", """"))/3600,
Final = Graus + Minutos + Segundos
in
Final
E por hoje é só pessoal.
Grande abraço.
Muito massa . Gostei. Rafael, uma sugestão: quando puder, faz um vídeo de como inserir um arquivo kml no Power bi. Seria ótimo...
ResponderExcluirBoa... eu tenho um material pra usar o KML, geojson e etc... to tratando isso pra poder disponibilizar...ta faltando tempo e coragem de voltar nesse negócio rs...
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirUma dúvida, cálculos não é melhor realizar no dax?
ResponderExcluirSem duvida...a questão que para esse caso geralmente utiliza-se esse dado como eixo de visual então precisa criar uma nova coluna. Nesse caso a melhor abordagem é função personalizada no Power Query.
ExcluirParabéns pelo artigo.. a tempo estava procurando esse tipo de trabalho
ResponderExcluirAtt. Paulo
ExcluirMe ajudou demais!
ResponderExcluirComplementei a função para que transforme em + ou - conforme as Coordenadas. A minha base de dados está com o formato 19°33'38"S
(graus as text)=>
let
Fonte = graus,
Graus = Number.From(Text.BeforeDelimiter(Fonte, "°")),
Minutos = Number.From(Text.BetweenDelimiters(Fonte, "°", "'"))/60,
Segundos = Number.From(Text.BetweenDelimiters(Fonte, "'", """" ))/3600,
Coordenada = Text.End(Fonte, 1),
Final = if Coordenada="S" or Coordenada="W" or Coordenada="O" then -(Graus + Minutos + Segundos) else Graus + Minutos + Segundos
in
Final
Espero que ajude mais alguém!