Qlik Community

Brasil

Announcements
June 28, 10AM ET: Qlik Nation and Qlik Community present: CyberSleuth REGISTER TODAY
cancel
Showing results for 
Search instead for 
Did you mean: 
Clever_Anjos
Employee
Employee

Comando AutoNumber em scripts Qlik

Você provavelmente está acostumado com a função autonumber() em scripts Qlik.

Spoiler
Fique atento até o final, pode rolar uma surpresa

Para recapitular, essa função retorna um sequencial (começando em 1) para cada valor distinto carregado pelo seu script. Essa função ajuda a otimizar as tabelas de símbolo (Leia aqui) pois troca os valores reais do campo por um sequencial.

"Onde uso isso, Cléver?"

É muito usado em chaves. principalmente. Já que não são valores utilizados para nada além de ligar nossas tabelas, quanto mais otimizadas, melhor, não é mesmo?

Exemplo:  se o campo CD_VENDEDOR na tabela abaixo for usado apenas como chave para outras tabelas, eu posso otimizar trocando o valor intrínseco dele por um sequencial

Anotação 2020-03-02 005653.png

usando o Autonumber() 

Anotação 2020-03-02 005652.png

Eu obteria isso como tabela

Anotação 2020-03-02 005651.png

Isso pode parecer desprezível em um modelo com apenas 4 linhas, mas pode ajudar bastante em modelos maiores (mais que alguns milhões de linhas).

"Tá bom, Cléver,  isso eu já sabia, já tinha lido aqui sobre isso, etc"

O que talvez você não sabia é que também existe o comando autonumber (help) onde apenas com uma linha de código eu posso aplicar o autonumber a todas as ocorrências do campo por todo o modelo. E melhor ainda, eu posso aplicar o autonumber a todos os campos que se encaixem em um padrão.

"O que quer dizer isso?"

Suponhamos que você montou todo o seu script segundo as melhores práticas e que todos os seus campos chave começam com CD_. Você pode montar todo o seu script (sem chamar a função autonumber) e lá no finalzinho do seu script faz isso:

Anotação 2020-03-02 005654.png

Legal não é? Você agora não vai precisar deixar um monte de autonumber(CD_VENDEDOR) as CD_VENDEDOR espalhado pelo seu código correndo o risco de esquecer em algum lugar e as suas chaves não baterem

Spoiler

BONUS TRACK

O que acontece quando você está lendo um QVD e coloca uma função autonumber?

Você perde a leitura otimizada! 😫 Todo aquela velocidade absurda de leitura é perdida, as vezes passando a ler o seu precioso QVD de guias de internação 4 ou 5 vezes mais lento.

"Mas espera ai! Agora eu não preciso mais deixar a função no script, eu posso fazer apenas uma vez com o comando autonumber. Quer dizer que não vou mais perder a minha leitura otimizada?"

Isso mesmo, se você estava perdendo a leitura otimizada apenas por causa do autonumber() agora você tem a chance de recuperá-la!

Um abraço,

Keep Qliking!

2 Replies
forticarrion
Contributor II
Contributor II

Muito bom o conteúdo Clever, mais uma vez obrigado pelo excelente trabalho.

fernando_tonial
Partner
Partner

Show de bola @Clever_Anjos .

Muito bom mesmo.

Outro ponto interessante é que com essa função AutoNumber *fieldlist [Using namespace] ], o Qlik se encarrega em iniciar todos os campos em 1.

RegionSales:
LOAD * INLINE
[ Region, Year, Month, Sales
North,	2014,	May,	245
North,	2014,	May,	347
North,	2014,	June,	127
South,	2014,	June,	645
South,	2013,	May, 367
South,	2013,	May,	221
];

AutoNumber Region, Year, Month;

 

Autonumber1.png

 

Quando usamos o Autonumber(Campo) no comando LOAD, todos serão sequenciais. 

AN_RegionSales:
LOAD 
AutoNumber(Region) 	AS CD_Region, 
AutoNumber(Year) 	AS CD_Year, 
AutoNumber(Month) 	AS CD_Month, 
Sales			AS SALES
INLINE
[ Region, Year, Month, Sales
North,	2014,	May,	245
North,	2014,	May,	347
North,	2014,	June,	127
South,	2014,	June,	645
South,	2013,	May, 367
South,	2013,	May,	221
];

Autonumber2.png 

Abraços.
Tonial.