Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
wagnertiba
Contributor III
Contributor III

Como trazer níveis de estrutura de produto

Caros amigos,

Estou necessitando de uma dica de como devo proceder....para trazer como resultado os "níveis" de uma estrutura de produto

tenho uma tabela com os seguintes dados...de um produto (tabela):

   

CODCOMPUMQUANT
BALAL121202TDS00009399PC
1,000000
BALAL121202TDS00035152PC

1,000000


00351520003492PC1,000000
00351520005385PC2,000000
00351520006455PC2,000000
00351520006936PC2,000000
00351520007128PC1,000000
00351520007130PC2,000000
00351520010130PC1,000000
00351520012168PC1,000000
00351520012212PC2,000000
00351520012590PC2,000000
00351520017093PC4,000000
00351520018412PC1,000000
00351520020378PC1,000000
00351520031350PC1,000000
00351520033486PC1,000000
00351520032415PC1,000000
00351520035941PC1,000000
00351520010610PC1,000000
00351520008700PC1,000000
00093990000033PC6,000000
00093990000036PC6,000000
00093990000957PC8,000000
00093990002120PC4,000000
00093990002730PC4,000000
00093990004468PC2,000000
00093990008366PC4,000000
00093990009405PC4,000000
00093990015488PC6,000000
00093990031055PC1,000000
00093990035082PC4,000000
00093990038049PC4,000000
00093990038223PC1,000000
00093990044292PC1,000000
00093990046053PC4,000000

E SUA ESTRUTURA É COMPOSTA DESTA FORMA (por código de produto):

   

1º NIVEL2º NIVEL3º NIVEL
BALAL121202TDS0

0009399

 

0000033
0000036
0000957
0002120
0002730
0004468
0008366
0009405
0015488
0031055
0035082
0038049
0038223
0044292
0046053
BALAL121202TDS0

0035152

 

0003492
0005385
0006455
0006936
0007128
0007130
0010130
0012168
0012212
0012590
0017093
0018412
0020378
0031350
0033486
0032415
0035941
0010610
0008700

Agora quero saber como faço para trazer isso para uma lista+ com NIVEIS:

                    1ºNIVEL                 2ºNIVEL                                                                  3º NIVEL????   (como faço para trazer)

Emissão CodPro Prod Estrutura um Quant. Estrutura Quant. Nessessaria                             [Status do PV]
28/12/2015BALAL121202TDS00007241UN11Aberto
0009399PC11Aberto
0035152PC11Aberto

Espero ter explicado bem minha necessidade????

1 Solution

Accepted Solutions
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo, segue exemplo que fiz para te ajudar;

Set v_Tamanho_Cod_Pai = 10;

Hierarchy:

Hierarchy(COMP, COD, QUANT, , COMP, CAMINHO, ' \ ', NÍVEL)

Load Distinct

  If(IterNo()=1, COMP, COD) As 'COMP',

  If(Len(If(IterNo()=1, COMP, COD)) > '$(v_Tamanho_Cod_Pai)','-', COD) As 'COD',

    If(IterNo()=1, UM, '-') As 'UM',

    If(IterNo()=1, QUANT, '-') As 'QUANT'

  While If(Len(COD) > '$(v_Tamanho_Cod_Pai)', 2, 1) - IterNo() >= 0;

Load *

  Inline [

  COD|COMP|UM|QUANT

  BALAL121202TDS0|0009399|PC|1,000000

  BALAL121202TDS0|0035152|PC|1,000000

  0035152|0003492|PC|1,000000

  0035152|0005385|PC|2,000000

  0035152|0006455|PC|2,000000

  0035152|0006936|PC|2,000000

  0035152|0007128|PC|1,000000

  0035152|0007130|PC|2,000000

  0035152|0010130|PC|1,000000

  0035152|0012168|PC|1,000000

  0035152|0012212|PC|2,000000

  0035152|0012590|PC|2,000000

  0035152|0017093|PC|4,000000

  0035152|0018412|PC|1,000000

  0035152|0020378|PC|1,000000

  0035152|0031350|PC|1,000000

  0035152|0033486|PC|1,000000

  0035152|0032415|PC|1,000000

  0035152|0035941|PC|1,000000

  0035152|0010610|PC|1,000000

  0035152|0008700|PC|1,000000

  0009399|0000033|PC|6,000000

  0009399|0000036|PC|6,000000

  0009399|0000957|PC|8,000000

  0009399|0002120|PC|4,000000

  0009399|0002730|PC|4,000000

  0009399|0004468|PC|2,000000

  0009399|0008366|PC|4,000000

  0009399|0009405|PC|4,000000

  0009399|0015488|PC|6,000000

  0009399|0031055|PC|1,000000

  0009399|0035082|PC|4,000000

  0009399|0038049|PC|4,000000

  0009399|0038223|PC|1,000000

  0009399|0044292|PC|1,000000

  0009399|0046053|PC|4,000000

  ](delimiter is '|');

Para o seu caso, foi necessário estruturar as hierarquias para funcionar Hierarchy de forma correta;

Percebi que o código pai tem mais caracteres do que os códigos filhos, delimitei para 10 como base de rastreio;

Substitui a estrutura Inline, por exemplo:

FROM [lib://QVD/ARQUIVO.QVD] (qvd);

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti

View solution in original post

8 Replies
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo, segue exemplo:

Hierarchy:

Hierarchy(NodeID, ParentNodeID, Nivel, ParentName, Nivel, Caminho, '\', Profundidade)

Load * Inline [

NodeID|ParentNodeID|Nivel

1|-|General manager

2|1|Country manager

3|2|Region manager

](delimiter is '|');

Referência:

https://help.qlik.com/pt-BR/sense/3.2/Subsystems/Hub/Content/Scripting/ScriptPrefixes/Hierarchy.htm

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
wagnertiba
Contributor III
Contributor III
Author

Mario, muito obrigado pela sua ajuda....

Mas queria me desculpar....sou leigo nisso....

Estou utilizando um banco de dados para fazer extratificação dos dados...

olhe como ficou o script...

Estrutura:

  load

  G1_FILIAL,

     G1_COD as CodPro,

     G1_COMP as Produt,

     G1_TRT,

     G1_UNI1,

     G1_QUANT,

     G1_UNI2,

     G1_QUANT2,

     G1_PERDA,

     G1_INI,

     G1_FIM,

     G1_NIV as Nivel,

     G1_TIPVEC;

  SQL SELECT * FROM TMPRD.dbo.SG1010 WHERE D_E_L_E_T_ = '';

HierarchyCOMP:

  Hierarchy(codPro, G1_COMP_1, nivel1, nivel2, nivel3)

  load

     G1_COD as CodPro,

       G1_COMP as G1_COMP_1,

     G1_UNI1 as Unidade,

     G1_QUANT as QuantUsada;

  SQL SELECT * FROM TMPRD.dbo.SG1010 WHERE D_E_L_E_T_ = '';

aonde será que eu errei no USO DO "Hierarchy" ???

novamente obrigado pela ajuda....

abçs....

wagnertiba
Contributor III
Contributor III
Author

Mario,

Por um acaso você teria um exemplo .qvd ??

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo, segue exemplo que fiz para te ajudar;

Set v_Tamanho_Cod_Pai = 10;

Hierarchy:

Hierarchy(COMP, COD, QUANT, , COMP, CAMINHO, ' \ ', NÍVEL)

Load Distinct

  If(IterNo()=1, COMP, COD) As 'COMP',

  If(Len(If(IterNo()=1, COMP, COD)) > '$(v_Tamanho_Cod_Pai)','-', COD) As 'COD',

    If(IterNo()=1, UM, '-') As 'UM',

    If(IterNo()=1, QUANT, '-') As 'QUANT'

  While If(Len(COD) > '$(v_Tamanho_Cod_Pai)', 2, 1) - IterNo() >= 0;

Load *

  Inline [

  COD|COMP|UM|QUANT

  BALAL121202TDS0|0009399|PC|1,000000

  BALAL121202TDS0|0035152|PC|1,000000

  0035152|0003492|PC|1,000000

  0035152|0005385|PC|2,000000

  0035152|0006455|PC|2,000000

  0035152|0006936|PC|2,000000

  0035152|0007128|PC|1,000000

  0035152|0007130|PC|2,000000

  0035152|0010130|PC|1,000000

  0035152|0012168|PC|1,000000

  0035152|0012212|PC|2,000000

  0035152|0012590|PC|2,000000

  0035152|0017093|PC|4,000000

  0035152|0018412|PC|1,000000

  0035152|0020378|PC|1,000000

  0035152|0031350|PC|1,000000

  0035152|0033486|PC|1,000000

  0035152|0032415|PC|1,000000

  0035152|0035941|PC|1,000000

  0035152|0010610|PC|1,000000

  0035152|0008700|PC|1,000000

  0009399|0000033|PC|6,000000

  0009399|0000036|PC|6,000000

  0009399|0000957|PC|8,000000

  0009399|0002120|PC|4,000000

  0009399|0002730|PC|4,000000

  0009399|0004468|PC|2,000000

  0009399|0008366|PC|4,000000

  0009399|0009405|PC|4,000000

  0009399|0015488|PC|6,000000

  0009399|0031055|PC|1,000000

  0009399|0035082|PC|4,000000

  0009399|0038049|PC|4,000000

  0009399|0038223|PC|1,000000

  0009399|0044292|PC|1,000000

  0009399|0046053|PC|4,000000

  ](delimiter is '|');

Para o seu caso, foi necessário estruturar as hierarquias para funcionar Hierarchy de forma correta;

Percebi que o código pai tem mais caracteres do que os códigos filhos, delimitei para 10 como base de rastreio;

Substitui a estrutura Inline, por exemplo:

FROM [lib://QVD/ARQUIVO.QVD] (qvd);

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
mario_sergio_ti
Partner - Specialist
Partner - Specialist

No front-end, poderá isolar o caminho da hierarquia pelo campo CAMINHO por exemplo;

Dimensões:

1ºNIVEL

=SubField(CAMINHO,'\',1)

2ºNIVEL

=SubField(CAMINHO,'\',2)

3ºNIVEL

=SubField(CAMINHO,'\',3)

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
wagnertiba
Contributor III
Contributor III
Author

Mario,

Esse ultimo não entendi...

aonde coloco as DIMENSÕES ???

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo, segue em anexo;

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
wagnertiba
Contributor III
Contributor III
Author

Agora Ficou muito Claro....

Valew mesmo pela força...

Brigadão !!!!!