12 Replies Latest reply: Mar 22, 2018 7:29 AM by João Passos RSS

    Extrair parâmetros de um .txt longo utilizando Qlik Sense

    João Passos

      Boa tarde, amigos da comunidade, como vocês estão?

       

       

       

      Eu tenho um desafio nas mãos e gostaria de uma ajuda de vocês.
      Eu trabalho no setor industrial, mais precisamente em controle de processo.
      Com o objetivo de ter um banco de dados atualizado com as informações de etiquetagem de equipamentos e malhas de controle(Tags), extraímos as configurações utilizando o recurso disponibilizado para nós pela empresa que nos vendeu o software de controle.
      O tipo de arquivo gerado é de texto e sua organização é vertical e os parâmetros de configuração são separados em grupos e subgrupos delimitados por chaves{}

       

       

      Foi-me dada a missão de tratar e organizar esses dados em uma tabela e, digamos, dar nome aos bois.

       

      Quando eu importo o arquivo, ele cria apenas uma coluna (@1).

      Eu pesquisei no help sobre funções de string e encontrei uma gama de coisas.

      Como eu nunca tive contato com o Qlik Sense, até duas semanas atrás e estou tentando me acostumar com o ambiente e meu tempo está curto porque estão me cobrando por causa da importância desse projeto.

      O arquivo está estruturado da seguinte maneira:

       

      MODULE TAG="LIC-206A_1" PLANT_AREA="AREA_A/CALDEIRAS" CATEGORY=""

      user="ADMINISTRATOR" time=1164283218/* "23-Nov-2006 09:00:18" */

      {

        DESCRIPTION="Master PID control loop"

        PERIOD=5

        CONTROLLER=""

        PRIMARY_CONTROL_DISPLAY=""

        INSTRUMENT_AREA_DISPLAY="LOOP_FP"

        DETAIL_DISPLAY="LOOP_DT"

        TYPE="Analog Control"

        SUB_TYPE="CASCADE_MASTER"

        ASSIGN_BLOCKS_TO_H1_CARD=F

        FUNCTION_BLOCK NAME="AI1" DEFINITION="FFAI"

        {

        DESCRIPTION="Analog Input"

        ID=100376530

        RECTANGLE= { X=40 Y=180 H=56 W=140 }

      }
      }

       

       

      Destaquei os parâmetros que precisamos tratar, sendo em vermelho o titulo ( comum para todos) e, em verde, a sua correspondência.

       

      Aqui está um exemplo do que eu estou buscando

      É como se cada coluna fosse uma dimensão relativa a cada parâmetro e isso, ao meu ver, deixaria a visualização e edição dos dados mais simplificada.

      O titulo pode mudar, não é regra. Eu só quero poder pegar esses dados e colocá-los lá.

      É possível, utilizando o Qlik sense(ou outra ferramenta),  criar um script que possa fazer a varredura e coletar esses dados desse arquivo?

       

      Obrigado e até mais.

        • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
          Felipe Mertens Brancher

          João e se tu tentar exportar para o excel? Ele separa certinho por colunas???

          Ai tu poderia salvar esse .xls e depois imprtar para o QLIK com as colunas separadas.

          • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
            Alessandro Furtado

            Tens um arquivo com mais dados e um exemplo do que deveria resultar?

            • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
              João Passos

              O que eu quero, basicamente é: identificar uma palavra fixa e imprimir a variável até à segunda aspas duplas, que representa o final.
              OU identificar a palavra fixa e imprimir a próxima palavra a partir do "=".

                • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
                  Alessandro Furtado

                  João,

                   

                  se fizer o que esta dizendo, como fica esta pequena parte do texto abaixo?

                  Tem varias repeticoes para NAME, visto que é o nome de algum objeto e entao dentro das chaves {} seriam como se fossem os campos da chave anterior.

                   

                  Neste caso, quais seriam os campos a ler?  Todos? Porque ai teria que relacionar com o campo "superior" para ter a hierarquia.....

                   

                   

                   

                    ATTRIBUTE NAME="FQI-207-2" TYPE=FLOAT

                    {

                      CONNECTION=OUTPUT

                      RECTANGLE= { X=580 Y=300 H=20 W=70 }

                      CATEGORY { CATEGORY=COMMON }

                    }

                    ATTRIBUTE NAME="HORA" TYPE=EXTERNAL_REFERENCE

                    {

                      CONNECTION=INPUT

                      RECTANGLE= { X=30 Y=450 H=20 W=70 }

                      CATEGORY { CATEGORY=COMMON }

                    }

                    FBD_ALGORITHM

                    {

                      GRAPHICS ALGORITHM=FBD

                      {

                        BOX_GRAPHIC

                        {

                          NAME="{156E6672-1DB2-443A-8752-79B4F22BB737}"

                          RECTANGLE= { X=10 Y=220 H=370 W=690 }

                          LINE_STYLE=SOLID

                          LINE_WIDTH=1

                          LINE_COLOR= { RED=0 GREEN=0 BLUE=0 }

                          FGD_COLOR= { RED=255 GREEN=255 BLUE=255 }

                          BGD_COLOR= { RED=0 GREEN=0 BLUE=0 }

                          FILL_PATTERN=""

                        }

                        TEXT_GRAPHIC

                        {

                          NAME="{7C48F19C-56DB-4BD4-BFA2-924BA02B9738}"

                          ORIGIN= { X=23 Y=274 }

                          END= { X=248 Y=316 }

                          TEXT="TOTALIZADOR COM RESET AS 22:00:

                  FQI-207-1 = TOTALIZADOR DO DIA ATUAL

                  FQI-207-2 = TOTALIZADOR DO DIA ANTERIOR"

                    • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
                      João Passos

                      Alessandro,


                      Nesse caso não temos campos para ler, ou seja, esses seriam desconsiderados. Teríamos que procurar por uma string como "ATTRIBUTE_INSTANCE NAME" e exibir o que está entre aspas.

                      • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
                        João Passos

                        O campo "superior" seria o "module tag", pois tudo o que vem abaixo disso (até o outro module tag) são parâmetros de configuração dele.

                        • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
                          João Passos

                          Bom dia, fiz um pequeno resumo da disposição das informações dos dados no arquivo:

                           

                          Os dados que pretendemos extrair seguem a seguinte lógica que se repete por todo o arquivo:

                           

                          1 – Eles estão sempre associados a um TAG que não se repete.

                           

                          2 – O valor da TAG esta sempre precedido do parâmetro “MODULE TAG=”.

                           

                          1. 2.1  – Exemplo, MODULE TAG="LIC-206A_1", valor = LIC-206A_1.

                           

                          3 – O conteúdo das informações que pretendemos extrair estão entre os parâmetros “MODULE TAG=”. Ou seja, tudo abaixo do module TAg pertence a ele até encontrar outro module tag
                          3.1-  Module Tag: "xxxx"
                                    xxxx
                                         xxxxx
                                              xxxxx
                                  Module Tag="YYYY"

                           


                          4 – Os valores dos parâmetros que pretendemos extrair segue a seguinte lógica  ATTRIBUTE_INSTANCE NAME=”Instancia do parâmetro desejado

                           

                          1. 4.1 – Exemplo, ATTRIBUTE_INSTANCE NAME="LO_ALM", sendo  LO_ALM = Instancia do parâmetro desejado.

                           

                          5 – O parâmetro e o valor que desejamos extrair estão abaixo de “ATTRIBUTE_INSTANCE NAME="HI_HI_ALM", LO_ALM = Instancia do parâmetro desejado” e de “ VALUE  {“

                                      

                          1. 5.1 – Exemplo de parâmetro e o valor a ser extraído, PRIORITY_NAME="CRITICAL",  SUPPTIMEOUT=1438560,    ENAB=F.

                           

                          MODULE TAG="LIC-206A_1" PLANT_AREA="AREA_A/CALDEIRAS" CATEGORY=""

                          user="ADMINISTRATOR" time=1164283218/* "23-Nov-2006 09:00:18" */

                          {

                            DESCRIPTION="Master PID control loop"

                            PERIOD=5

                            CONTROLLER=""

                            PRIMARY_CONTROL_DISPLAY=""

                            INSTRUMENT_AREA_DISPLAY="LOOP_FP"

                            DETAIL_DISPLAY="LOOP_DT"

                            TYPE="Analog Control"

                            SUB_TYPE="CASCADE_MASTER"

                            ASSIGN_BLOCKS_TO_H1_CARD=F

                            FUNCTION_BLOCK NAME="AI1" DEFINITION="FFAI"

                            {

                              DESCRIPTION="Analog Input"

                              ID=100376530

                              RECTANGLE= { X=40 Y=180 H=56 W=140 }

                            }

                            ATTRIBUTE_INSTANCE NAME="HI_HI_ALM"

                            {

                              VALUE

                              {

                                PRIORITY_NAME="CRITICAL"

                                ENAB=F

                                INV=F

                               ATYP="High High Alarm"

                                MONATTR=""

                                ALMATTR="PID1/HI_HI_ACT"

                                LIMATTR="PID1/HI_HI_LIM"

                                PARAM1="PID1/PV"

                                PARAM2="PID1/HI_HI_LIM"

                                SUPPTIMEOUT=1438560

                                MASK=65535

                                ISDEFAULTMASK=T

                                ALARM_FUNCTIONAL_CLASSIFICATION=0

                                ALARM_DESCRIPTION=""

                              }

                              VALUE_CHANGED=T

                              HAS_DEFAULT_VALUE=F

                            }

                           

                          Espero que isso ajude

                      • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
                        Pablo Labbe

                        Parece uma estrutura em JSON !

                        • Re: Extrair parâmetros de um .txt longo utilizando Qlik Sense
                          João Passos

                          afurtado. Eu consegui avançar um pouco e acho que ficará melhor para entender:

                           

                          Colocando "MODULE TAG" e "PLANT AREA" como Dimensões e utilizando a função "TextBetween()" eu consegui criar uma tabela com  essas duas informações. O maior problema é quando tento adicionar à tabela as informações que estão em outra linha, como "DESCRIPTION".

                           

                          Image.png
                          "DESCRIPTION" só aparece quando não há informação alguma em Tag e Area.



                          MODULE TAG=
                          "LIC-206A_1" PLANT_AREA="AREA_A/CALDEIRAS" CATEGORY=""

                          user="ADMINISTRATOR" time=1164283218/* "23-Nov-2006 09:00:18" */

                          {

                          DESCRIPTION="Master PID control loop"

                            PERIOD=5

                           

                           


                          Como posso correlacionar esses dados que estão em linhas diferentes?