Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
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!