Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
matzenbacher
Contributor 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.

Tags (1)
1 Solution

Accepted Solutions
Not applicable

Re: Reloadtime()

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

7 Replies
Not applicable

Re: Reloadtime()

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
Contributor II

Re: Reloadtime()

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

Not applicable

Re: Reloadtime()

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
Contributor II

Re: Reloadtime()

certo, entao acho que vai servir.

Voce esta montando um exemplo pra qual questão?

Not applicable

Re: Reloadtime()

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

matzenbacher
Contributor II

Re: Reloadtime()

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
Valued Contributor

Re: Rotina de atualização de coordenadas

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.