8 Replies Latest reply: May 30, 2017 1:58 PM by Wagner Tiba RSS

    Como trazer níveis de estrutura de produto

    Wagner Tiba

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

        • Re: Como trazer níveis de estrutura de produto
          MARIO SOARES

          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

            • Re: Como trazer níveis de estrutura de produto
              Wagner Tiba

              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....

              • Re: Como trazer níveis de estrutura de produto
                Wagner Tiba

                Mario,

                 

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

                  • Re: Como trazer níveis de estrutura de produto
                    MARIO SOARES

                    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);