Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
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"?

Tags (1)
1 Solution

Accepted Solutions

Re: Transformando strings em colunas (com incremento)

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;

3 Replies

Re: Transformando strings em colunas (com incremento)

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

Re: Transformando strings em colunas (com incremento)

Alessandro,

muito obrigado, o código serviu perfeitamente.

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

Re: Transformando strings em colunas (com incremento)

Good!