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