Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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"?
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;
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;
Alessandro,
muito obrigado, o código serviu perfeitamente.
E, para mim, abriu um leque de opções para outras situações semelhantes.
Good!