Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Clever_Anjos
Support
Support

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
Employee
Employee

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.

Don't Worry, be Qlik.