Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Ribeiro
Specialist
Specialist

QlikView Google Maps x Coordenadas (Excel)

QlikView Google Maps x Coordenadas

Sobre o Script acima,

Estou com dificuldade de inserir o exemplo abaixo.

Gostaria se possível colocar meu exemplo(Anexo no excel) neste script e para ficar mais fácil.

Se possível enviar o código exemplo.qvw

Junto com o arquivo que salvar no QVD.´

Conforme o exemplo do abaixo.

Sou novato.

Obrigado

Agnaldo

************************************************************************************************************************************************

SCRIPT DO Matzenbacher

/BUSCA DE COORDENAS ATRAVÉS DA API DO GOOGLE.

set ErrorMode=0;

[Tabela_endereços]:

LOAD distinct

ChavePrincipal,

rowno() as chaveunica,

rua&'+'&numero&'+'&cidade&'+'&pais as    EndereçoTratado ;

from....;

//faz um tratamento caso seja preciso;

[Maior Linha]:

load max(chaveunica) as maxLinhas

Resident [Tabela_endereços];

let vMaxLinhas = Peek('maxLinhas');

  for  i = 1  to   $(vMaxLinhas)

//'ou'  for = i = 1 to 1249  'assim por diante.'

          :

          load

    EndereçoTratado          as logradouro

          resident [Tabela_endereços] where  chaveunica = $(i) ;

          let vRegistro = Peek('logradouro');

GeocodeResponse:

LOAD $(i) as chaveunica,

    [result/geometry/location/lat] as Latitude,

    [result/geometry/location/lng] as Longitude,

    %Key_GeocodeResponse_62C7A0A69859D655,

   [result/geometry/location_type] as location_type,

    status

FROM [http://maps.googleapis.com/maps/api/geocode/xml?address=$(vRegistro)&sensor=false] (XmlSimple, Table is [GeocodeResponse]);

address_component:

LOAD

          $(i) as chaveunica,

     long_name as  Itens,

    %Key_address_component_3D78D9B402C68EA5 as codigo,

     %Key_GeocodeResponse_62C7A0A69859D655 as key

FROM [http://maps.googleapis.com/maps/api/geocode/xml?address=$(vRegistro)&sensor=false] (XmlSimple, Table is [GeocodeResponse/result/address_component]);

drop Table ;

SLEEP(700);

next;

left join (Tabela_endereços)

          Status:

          load

          chaveunica,

          status

          Resident GeocodeResponse;

                    left join

          Location:

          load

          chaveunica,

          location_type

          Resident GeocodeResponse;

                    left join

          Latitude:

          load

          chaveunica,

          Latitude

          Resident GeocodeResponse;

                    left join

          Longitude:

          load

          chaveunica,

          Longitude

          Resident GeocodeResponse;

                    left join

          Rua:

          load

          chaveunica,

          if(codigo= 9,Itens) as Rua

          resident address_component

          where isnull(if(codigo= 9,Itens)) = false();

                    left join

          Bairro:

          load

          chaveunica,

          if(codigo= 13,Itens) as Bairro

          resident address_component

          where isnull(if(codigo= 13,Itens)) = false();

               left join

          Número:

          load

          chaveunica,

          if(codigo =5,Itens) as Número

          resident address_component

          where isnull(if(codigo =5,Itens)) = false();

               left join

          Cidade:

          load

          chaveunica,

          if(codigo = 18,Itens) as Cidade

          resident address_component

          where isnull(if(codigo =18,Itens)) = false();

               left join

          Estado:

          load

          chaveunica,

          if(codigo = 23,Itens) as Estado

          resident address_component

          where isnull(if(codigo =23,Itens)) = false();

               left join

          cep:

          load

          chaveunica,

          if(codigo = 33,Itens) as cep

          resident address_component

          where isnull(if(codigo =33,Itens)) = false();

    [Final]:

    NoConcatenate Load

    ChavePrincipal,

    cep,

    chaveunica,

    EndereçoTratado,

    status,

    location_type,

    Latitude,

    Longitude,

    Rua,

    Bairro,

    Número,

    Cidade,

    Estado

          Resident Tabela_endereços

          where IsNull(Latitude) = false() and  Latitude <> '' ;

drop table GeocodeResponse;

drop table [Maior Linha];

drop Table address_component;

drop Table Tabela_endereços;

STORE Final into ;

Neves
Labels (1)
1 Solution

Accepted Solutions
nicolett_yuri

Desta forma que postei, ele vai unir sua tabela de endereço com a de retorno do GoogleMaps através da coluna EnderecoCompleto.

View solution in original post

6 Replies
nicolett_yuri

Qual a dificuldade ou erro esta enfrentando?

Ribeiro
Specialist
Specialist
Author

Bom já resolvi com, esqueci de da baixa.

Agora estou tentando estudar em salvar em QVD.

Pois fica carregando toda hora as coordenadas na atualização do Qlikview.

Nova Discussão sobre QVD.

Melhorar Script para salvar QVD. | Qlik Community

//1- Carrega tabela com endereços

Endereco:

LOAD `ÚltimoDeData`,

 

    Sequencia,

    `Codigo_Cliente`,

    Endereco1,

    Bairro1,

    Cidade1,

    Estado1,

    EnderecoCompleto;

SQL SELECT *

FROM `qyr_Latitude`;

//2- Define a quantidade máxima de endereços

tmp:

LOAD max(RecNo()) as maxnumero

Resident Endereco;

LET noRows=peek('maxnumero',0,'tmp')-1;

DROP table tmp;

//3- Solicita retorno da API do Google Maps

for i=0 to $(noRows)

    let b = peek('EnderecoCompleto',$(i),'Endereco');

     

    RetornoGMaps:

    LOAD

    status,

    '$(b)' as EnderecoCompleto,

    ([result/geometry/location/lat]) as Latitude,

    ([result/geometry/location/lng]) as Longitude

    FROM [http://maps.googleapis.com/maps/api/geocode/xml?address=$(b)&sensor=false] (XmlSimple, Table is [GeocodeResponse]);

    sleep 60;

next i;

STORE RetornoGMaps into C:/QVD/RetornnoGMaps.qvd;

02-09-2014 15-01-45.png

Neves
Ribeiro
Specialist
Specialist
Author

Yuri,

Meu problema, que o script acima, está salvando apenas a Tabela QVD abaixo.

Eu Gostaria que o QVD fosse igual a Tabela feita abaixo. que é a junção do script acima, mas as coordenadas.

Está difícil.

02-09-2014 15-17-11.png

Neves
nicolett_yuri

no fim do seu script adicione as linhas:

LEFT JOIN (RetornoGMaps)

LOAD `ÚltimoDeData`,

    Sequencia,

    `Codigo_Cliente`,

    Endereco1,

    Bairro1,

    Cidade1,

    Estado1,

    EnderecoCompleto;

SQL SELECT *

FROM `qyr_Latitude`;

STORE RetornoGMaps into C:/QVD/RetornnoGMaps.qvd;

nicolett_yuri

Desta forma que postei, ele vai unir sua tabela de endereço com a de retorno do GoogleMaps através da coluna EnderecoCompleto.

Ribeiro
Specialist
Specialist
Author

Deu certo



02-09-2014 17-02-11.png

Como seria um script para não precisar toda hora atualizar as coordenadas.

Usar o arquivo RetornnoGMaps.qvd; fazendo comparação com Tabela endereço usando oscampo

(Sequência) que é uma chave primária e o data (ÚltimoDeData).



Coloquei este script no banco real, o cara tem 1000 venda no mês, e cada vez que eu rodo o script ele fica refazendo as coordenadas, pois ele está executando o sql direto.

Alguma dica para eu usar o RetornnoGMaps.qvd?

No Exemplo abaixo estou usando apenas 06 registros como teste. Imagina 1000

02-09-2014 17-18-04.png

Neves