Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
Desta forma que postei, ele vai unir sua tabela de endereço com a de retorno do GoogleMaps através da coluna EnderecoCompleto.
Qual a dificuldade ou erro esta enfrentando?
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;

![]()
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.

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;
Desta forma que postei, ele vai unir sua tabela de endereço com a de retorno do GoogleMaps através da coluna EnderecoCompleto.
Deu certo ![]()

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
