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: 
Not applicable

Transformando strings em colunas (com incremento)

Olá pessoal,

estou procurando uma melhor maneira de otimizar minha extração e fiquei com dúvida em como proceder.

Ao extrair dados de uma planilha, tenho uma coluna X que contém a seguinte informação:

Info1 > Info2 > Info3 > Info4 > ... > InfoN

Qual seria o meu problema; utilizando subfield, eu listei os campos para o delimitador '>' e a quantidade de campos não ultrapassava 6 (portanto, criei 6 colunas para receber as "informações"), porém notei que em uma carga mais recente aparecerem colunas com 8 "informações".

Então, existe um método mais simples para criar as colunas de acordo com a quantidades, sem a necessidade de listar todos os subfields manualmente cada vez que aparecerem novas "informações"?

1 Solution

Accepted Solutions
alexandros17
Partner - Champion III
Partner - Champion III

Try this code:

MyTable:
LOAD * Inline [
ID, val, X
1, 100, Info1 > Info2 > Info3 > Info4
2, 150, Info1 > Info2 > Info3 > Info4 > Info5
]
;

MAXInfo:
LOAD max(SubStringCount(X, '>')) as maxX Resident MyTable;
LET maxX = Peek('maxX',-1,'MAXInfo');
DROP Tables MAXInfo;

FOR idx = 1 to $(maxX)+1
Left Join (MyTable)
LOAD ID, val, SubField(X, '>', $(idx)) as Info_$(idx) Resident MyTable;
NEXT;

View solution in original post

3 Replies
alexandros17
Partner - Champion III
Partner - Champion III

Try this code:

MyTable:
LOAD * Inline [
ID, val, X
1, 100, Info1 > Info2 > Info3 > Info4
2, 150, Info1 > Info2 > Info3 > Info4 > Info5
]
;

MAXInfo:
LOAD max(SubStringCount(X, '>')) as maxX Resident MyTable;
LET maxX = Peek('maxX',-1,'MAXInfo');
DROP Tables MAXInfo;

FOR idx = 1 to $(maxX)+1
Left Join (MyTable)
LOAD ID, val, SubField(X, '>', $(idx)) as Info_$(idx) Resident MyTable;
NEXT;

Not applicable
Author

Alessandro,

muito obrigado, o código serviu perfeitamente.

E, para mim, abriu um leque de opções para outras situações semelhantes.

alexandros17
Partner - Champion III
Partner - Champion III

Good!