Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal Bom dia.. gostaria da seguinte opiniao.
Estou tentando criar uma carga incremental, porem minha chave primaria é composta por 5 campos, se eu os concatenar e utilizar o autonumberhash consigo manter a unicidade a cada carga ?
É a mesma função, mas com uma precisão maior.
Uma outra solução é usar a função Hash128/160/256 (Não autonumberhash, só hash[numero]) que gera uma string longa e com uma possibilidade de colisão muito baixa
Paulo
Seu script ficaria mais ou menos assim
LOAD
Hash256(Campo1,Campo2,Campo3,Campo4,Campo5) as PK,
Campo1,
Campo2,
Campo3,
Campo4,
Campo5;
SQL SELECT * from tabela1;
LOAD
PK,
Campo1,
Campo2,
Campo3,
Campo4,
Campo5
FROM QVD(qvd)
where not Exists(PK)
Clever fiz o seguinte.
Eu faço a carga de tudo <= data_de_hoje..... e armazeno no qvd.
Em seguida eu faço novamente o load onde data = data de hoje e depois faço o segundo load da carga inicial aplicando o where not exists para nao duplicar os registros.
Segue o exemplo, a minha carga inicial dos dados onde a dt_versao <= dia_de_hoje, armazena no qvd 758.802 registros.
Mudo o meu 1 metodo LOAD para carregar somente os registros dt_versao = dia_de_hoje, que seriam 41 registros.
Ao concatenar no 2 metodo LOAD aplicando o WHERE NOT EXISTS da Pk. o correto seria trazer somente 758759 do arquivo QVD....
Porem isso nao ocorre, ele acaba carregando 676308 registros... ficando incompleto ..
Sera que esta ocorrendo colisao ?
Poderia colar seu código aqui?
TESTE:
LOAD
HASH256(agencia,
nro_conta,
nro_captacao,
nro_parcela,
dt_movimento,
operacao,
extrato) AS pk,
*;
SQL
SELECT A.agencia,
A.nro_conta,
A.nro_captacao,
A.nro_parcela,
A.dt_movimento,
A.operacao,
A.extrato
FROM movimento_saldo_captacao_financeira_pessoa_fisica A
WHERE A.dt_movimento = data_base()
ORDER BY dt_versao DESC;
Concatenate
TESTE:
LOAD pk,
agencia,
nro_conta,
nro_captacao,
nro_parcela,
dt_movimento,
operacao,
extrato
FROM D:\BKP_14102013\qvd\teste\Qlik_conta_grafica.qvd(qvd)
WHERE NOT EXISTS(pk);
STORE TESTE INTO ..\qvd\Qlik_conta_grafica.qvd (qvd);
Essa combinação abaixo deveria ser unica? tem chance de repetir?
agencia,
nro_conta,
nro_captacao,
nro_parcela,
dt_movimento,
operacao,
extrato
Não, ela é unica.
Verifiquei no BD inclusive.
Faz um teste por favor
Faz um load com e sem o where exists e veja se traz uma quantidade diferente
TESTE:
LOAD pk,
agencia,
nro_conta,
nro_captacao,
nro_parcela,
dt_movimento,
operacao,
extrato
FROM D:\BKP_14102013\qvd\teste\Qlik_conta_grafica.qvd(qvd)
WHERE NOT EXISTS(pk);
Então ja fiz este teste hehhehhe
Se eu considerar o WHERE a tabela carrega 676.308 registros.
Removendo o WHERE 758.843
Então tem PK duplicado,
faz assim pra verificar os duplicados
Faca uma grafico tabela simples e coloque PK como dimensão
coloque count(distinct PK) como expressão, dai vamos achar quais estão duplicados