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

Rotina de atualização de coordenadas

Amigos,

Estou montando uma rotina de atualização de coordenadas, onde apenas as linhas que tiverem a [data de alteração] maior que a [data] da ultima carga serão lidas no script, para buscar novas coordendas.

Isso deve impedir que o script busque novamete coordenadas de clientes que ja possuem.

A pricipio eu fiz assim.

      where  data_alteração  >  date(reloadtime())

Alguem consegue pensar em uma alternativa com base nessa idéia?

obrigado.

1 Solution

Accepted Solutions
Not applicable

Exato.

Para você utilizar a data atual, utilize a função NOW().

Apenas para complementar, agora que eu vi que você apagou o outro tópico.

Para atender o que você esta tentando fazer, basta ler a sua tabela e criar uma tabela temporaria para buscar a maior data de alteração dela através da função PEEK().

Em Seguida utilize esta função na condição where da sua nova tabela, por exemplo:

temp_max_alteracao:

LOAD MAX(DATA_ALTERACAO) AS MAIOR_DATA

FROM sua_tabela_antiga.qvd (qvd);

Leia a tabela antiga e concatena com a tabela nova:

TABELA_FINAL:

LOAD *

FROM sua_tabela_antiga.qvd (qvd);

CONCATENATE

LOAD *

FROM sua_tabela_nova

WHERE data_alteracao > peek(MAIOR_DATA);

Abraços

View solution in original post

7 Replies
Not applicable

retorna a data da ultima execução do reload do seu arquivo qvw.

Estou montando um exemplo pra seu outro tópico tbm, já posto la.

abraços

matzenbacher
Creator II
Creator II
Author

Certo, entao quer dizer que a função reloadtime() só vai mudar quando finalizar a nova carga?

Not applicable

Exato.

Para você utilizar a data atual, utilize a função NOW().

Apenas para complementar, agora que eu vi que você apagou o outro tópico.

Para atender o que você esta tentando fazer, basta ler a sua tabela e criar uma tabela temporaria para buscar a maior data de alteração dela através da função PEEK().

Em Seguida utilize esta função na condição where da sua nova tabela, por exemplo:

temp_max_alteracao:

LOAD MAX(DATA_ALTERACAO) AS MAIOR_DATA

FROM sua_tabela_antiga.qvd (qvd);

Leia a tabela antiga e concatena com a tabela nova:

TABELA_FINAL:

LOAD *

FROM sua_tabela_antiga.qvd (qvd);

CONCATENATE

LOAD *

FROM sua_tabela_nova

WHERE data_alteracao > peek(MAIOR_DATA);

Abraços

matzenbacher
Creator II
Creator II
Author

certo, entao acho que vai servir.

Voce esta montando um exemplo pra qual questão?

Not applicable

Você tinha aberto um tópico e depois apagou.

matzenbacher
Creator II
Creator II
Author

Queria confirmar pq eu apaguei bem rapido. mas blz cara, vou testar essa soluçao que voce postou,

qualquer duvida eu posto aqui. muito obrigado!!!

[Arrumei o tópico]

aderlanrm
Partner - Specialist
Partner - Specialist

Olá pessoal,

Apenas para colaborar com recursos, cabe muito bem o uso de DISTINCT ou EXISTS!

Kaauan, na sua base de endereços, é bem provável que exista endereços repetidos, talvez não, mas é comum existir, então, o ideal seria você criar uma tabela com os endereços únicos e uma chave que os relacione a base original, os clientes por exemplo, essa mesma chave pode ser usada na carga com o NOT EXISTS, para carregar somente os endereços "novos", assim, você garante que cada endereço é buscado somente uma vez, e mesmo que vários clientes tenham o mesmo endereço, não será feita várias buscas do mesmo endereço, sem prejudicar a metrica no mapa.

Espero ter ajudado, abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)