Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
MALVES
Partner - Enthusiast III
Partner - Enthusiast III

Gravar QVD em blocos

Salve pessoal!

Estou com um desafio e gostaria de ajuda de voces:

Tenho uma base de dados que hoje esta em 115milhoes de registros. Foi solicitado que eu gere QVD's em blocos de 1 milhão cada. Tenho um campo SEQ_ID que posso usar para isso mas, não sei como montar essa sintaxe de gravação em blocos. Alguem teria algum exemplo para ajudar? 

Agradeço muito.

 

 

3 Replies
RafaMartins
Creator II
Creator II

MALVES
Partner - Enthusiast III
Partner - Enthusiast III
Author

Ajuda bastante sim! Só preciso descobrir agora como montar o range para gravar, mas deu uma luz boa já.

 

Valeu

nicolett_yuri

Esse campo SEQ_ID realmente é sequencial, começando do 1 até determinado número, sem pular linha?

 

Se sim, poderia fazer algo desse tipo:

 

SET vL.QuantidadeLinhasPorQVD = 1000000;


QUANTIDADE_LINHAS_TABELA:
SQL SELECT
MAX(SEQ_ID) as ULTIMA_LINHA
FROM SUA_TABELA;


LET vL.QuantidadeLinhasTabela = Peek('ULTIMA_LINHA', 0, 'QUANTIDADE_LINHAS_TABELA');

DROP TABLE QUANTIDADE_LINHAS_TABELA;


LET vL.QuantidadeCiclosNoFor = Ceil($(vL.QuantidadeLinhasTabela)/$(vL.QuantidadeLinhasPorQVD));

 

FOR vL.x = 0 TO $(vL.QuantidadeCiclosNoFor)-1


LET vL.InicioLinhas = $(vL.QuantidadeLinhasPorQVD) * vL.x;
LET vL.TerminoLinhas = $(vL.InicioLinhas) - 1 + $(vL.QuantidadeLinhasPorQVD);

TABELA:
SQL SELECT
*
FROM SUA_TABELA
WHERE SEQ_ID >= $(vL.InicioLinhas) AND SEQ_ID <= $(vL.TerminoLinhas);

STORE TABELA INTO [lib://SUA_CONEXAO/SEU_QVD_$(vL.InicioLinhas)_$(vL.TerminoLinhas).qvd] (qvd);

DROP TABLE TABELA;

NEXT vL.x;