5 Replies Latest reply: May 7, 2018 7:54 AM by João Passos RSS

    Relacionar objetos em tabelas diferentes no Qlik Sense

    João Passos

      Bom dia, comunidade

       

       

       

      Estou com um desafio e não sei como avançar:

       

      Estou trabalhando com um arquivo .xml e ele é dividido em várias tabelas.

       

      Eu quero relacionar os itens das tabelas, mas eles possuem nomes diferentes, logo não consigo usar a função "as".

       

      A tabela que eu quero é assim



      TagPlant_AreaDescriptionAlarm PriorityAlarm TypeLimit ValueEnabled
      TI-1112-5DIPIG/CALCINACAO_F1104TEMP. SAIDA DO D-1112CRITICALHigh High Alarm100F
      TI-1112-5
      DIPIG/CALCINACAO_F1104
      TEMP. SAIDA DO D-1112HIGHHigh Alarm95F
      module tag=""plant_area=""descriptionpriority_nameatypcvenab

       

       

       

       

       

      Tag, Plant_area e Description estão na mesma tabela, já o resto nao. Gostaria de poder relacioná-los e colocar a como está acima

       

       

      Retirei uma parte do arquivo, pois o original tem uns 200 MB

      Anexei como .txt

       

      Não sei se vocês entenderão o que estou pretendendo porque o buraco é muito mais embaixo, mas eu quero seguir o passo a passo porque estou aprendendo a desenvolver no QlikSense.

       

       

      Como posso fazer essa relação?

        • Re: Relacionar objetos em tabelas diferentes no Qlik Sense
          Ricardo gerhard

          Boa tarde João,

           

             Existe algum campo chave entre os arquivos? Como o TI-1112-5 sabe os detalhes do segundo arquivo?

            • Re: Relacionar objetos em tabelas diferentes no Qlik Sense
              João Passos

              Boa tarde, Ricardo,

               

               

              Primeira pergunta:
              Não sei se existe um campo chave/comum. Eu procurei e não achei uma forma de relacionar. Apesar de todas elas estarem dentro de "fhx/module", as "filhas" geradas não possuem relações com as suas tabelas-mãe.

               

               

              Segunda pergunta:

               

              Eu coloquei manualmente os dados na tabela, mas originalmente eles pertencem a uma tabela chamada "Fhx/module". o problema (citado anteriormente) é que, há muitas tabelas filhas geradas e elas não possuem correlação nenhuma com suas tabelas acima.

              No caso, module seria o TI-1112-5 e tudo gerado abaixo dele seriam os dados dele.

               

              Teoricamente, deveriam ser automaticamente relacionados, mas, infelizmente, não são.

                • Re: Relacionar objetos em tabelas diferentes no Qlik Sense
                  Ricardo gerhard

                  Ok,

                   

                     Existe a possibilidade de conectar diretamente na base de dados e lê-los ao invés de utilizar o XML?

                     Caso não, creio que deverás criar algum mecanismo de encadear as tabelas.

                     A lógica de estruturação dos dados é que deve ser bem avaliada, criando regras pré-definidas de entendimento para tabulação e utilização posterior. Essa atividade muitas vezes representar 70% do tempo de desenvolvimento de um projeto.

                    • Re: Relacionar objetos em tabelas diferentes no Qlik Sense
                      João Passos

                      O arquivo .xml já é uma forma de fugir de um .txt não organizado e é o máximo que conseguimos, infelizmente.


                      Seria bom se eu pudesse tentar métodos já definidos porque sou novo com a ferramenta ainda.

                       

                      Você tem algum exemplo de um mecanismo como esse para que eu possa me basear, por favor?

                      • Re: Relacionar objetos em tabelas diferentes no Qlik Sense
                        João Passos

                        Bom dia, Ricardo, tudo bom?

                         

                        Consegui achar uma forma de relacionar os dados.

                         

                        Ao reconhecer que a Tabela FHX/Module contém a Tabela FHX/Module/Attribute_instance, eu fiz da seguinte forma:

                         

                        Eu chamei a tabela fhx/module e fiz o encaminhamento de cada elemento da tabela  FHX/Module/Attribute_instance no Data Load Editor. Segue abaixo o código:

                         

                        ----------------------------

                         

                         

                        Table400:

                        LOAD

                         

                         

                        "tag",

                            plant_area,

                            category,

                            user,

                            "time",

                            description,

                            period,

                            controller,

                            primary_control_display,

                            instrument_area_display,

                            detail_display,

                            "attribute_instance/name",

                            "attribute_instance/explicit_override",

                            "attribute_instance/value_changed",

                            "attribute_instance/nvm",

                            "attribute_instance/history_data_point/field",

                            "attribute_instance/history_data_point/data_characteristic",

                            "attribute_instance/history_data_point/enabled",

                            "attribute_instance/history_data_point/sample_period_seconds",

                            "attribute_instance/history_data_point/compression_enabled",

                            "attribute_instance/history_data_point/record_at_least_every_minutes",

                            "attribute_instance/history_data_point/deviation_limit_for_compression",

                            "attribute_instance/history_data_point/data_representation",

                            "attribute_instance/history_data_point/exposed",

                            "attribute_instance/history_data_point/enterprise_collection",

                            "attribute_instance/value/set",

                            "attribute_instance/value/string_value",

                            "attribute_instance/value/changeable",

                            "attribute_instance/value/enum_set",

                            "attribute_instance/value/cv",

                            "attribute_instance/value/priority_name",

                            "attribute_instance/value/enab",

                            "attribute_instance/value/inv",

                            "attribute_instance/value/atyp",

                            "attribute_instance/value/almattr",

                            "attribute_instance/value/limattr",

                            "attribute_instance/value/param1",

                            "attribute_instance/value/param2",

                            "attribute_instance/value/supptimeout",

                            "attribute_instance/value/mask",

                            "attribute_instance/value/isdefaultmask",

                            "attribute_instance/value/alarm_functional_classification",

                            "attribute_instance/value/alarm_description",

                            "attribute_instance/value/eu100",

                            "attribute_instance/value/eu0",

                            "attribute_instance/value/units",

                            "attribute_instance/value/decpt",

                            "attribute_instance/value/oos_p",

                            "attribute_instance/value/iman_p",

                            "attribute_instance/value/lov_p",

                            "attribute_instance/value/man_p",

                            "attribute_instance/value/auto_p",

                            "attribute_instance/value/cas_p",

                            "attribute_instance/value/rcas_p",

                            "attribute_instance/value/rout_p",

                            "attribute_instance/value/oos_a",

                            "attribute_instance/value/iman_a",

                            "attribute_instance/value/lov_a",

                            "attribute_instance/value/man_a",

                            "attribute_instance/value/auto_a",

                            "attribute_instance/value/cas_a",

                            "attribute_instance/value/rcas_a",

                            "attribute_instance/value/rout_a",

                            "attribute_instance/value/target",

                            "attribute_instance/value/normal",

                            "attribute_instance/value/ref",

                            "attribute_instance/value/class",

                            "attribute_instance/value/option8",

                            "attribute_instance/value/option15",

                            "attribute_instance/value/svalue",

                            "attribute_instance/value/enable",

                            "attribute_instance/value/type",

                            "attribute_instance/value/expression",

                            "attribute_instance/value/option14",

                            "attribute_instance/value/passenb",

                            "attribute_instance/value/passin",

                            "attribute_instance/value/passout",

                            "attribute_instance/value/act1enb",

                            "attribute_instance/value/act1in",

                            "attribute_instance/value/act1out",

                            "attribute_instance/value/act2enb",

                            "attribute_instance/value/act2in",

                            "attribute_instance/value/act2out",

                            "attribute_instance/value/option0",

                            "attribute_instance/value/option11",

                            "attribute_instance/value/option13",

                            "attribute_instance/value/option5",

                            "attribute_instance/value/option3",

                            "attribute_instance/value/option6",

                            "attribute_instance/value/option10",

                            "attribute_instance/value/option7",

                            "attribute_instance/value/option9",

                            "attribute_instance/value/option2",

                            "attribute_instance/value/size",

                            "attribute_instance/value/option12",

                            "attribute_instance/value/alarm_help/alarm_consequence_of_inaction",

                            "attribute_instance/value/alarm_help/alarm_time_to_respond",

                            "attribute_instance/value/alarm_help/help_text_1",

                            "attribute_instance/value/alarm_help/help_text_2",

                            "attribute_instance/value/alarm_help/help_text_3",

                            "fattribute_instance/value/sstatus/sq",

                            "attribute_instance/value/sstatus/gpss",

                            "attribute_instance/value/sstatus/ls",

                            "attribute_instance/value/sstatus/gcss",

                            "attribute_instance/value/st/sq",

                            "fattribute_instance/value/st/bss",

                            "attribute_instance/value/st/ls",

                            "attribute_instance/value/st/gpss",

                            "attribute_instance/value/st/gcss",

                            "attribute_instance/value/st/uss",

                            %Key_module_E0FE8EE00B0F4F34,

                            %Key_attribute_instance_68A522EC8D556DD9

                         

                         

                        FROM [lib://Desktop/GKT_Millennium.xml]

                        (XmlSimple, table is [fhx/module]);

                        Store Table400 into lib://Desktop/module.qvd(qvd);

                        Drop Table Table400;

                        -------------------------------------------------------------------------------------------

                         

                         

                         

                        As tabelas, assim, ficariam automaticamente relacionadas, porém há vários parâmetros  "attribute_instance/name" para um mesmo tag, mas ele não repete o tag até que todos os relacionados a ele sejam impressos, ele pega a primeira correspondência e pula para o próximo.

                         

                        Capture.PNG

                        Na imagem acima, podes ver que "MCOMMAND" é o valor referente ao primeiro atributo "name" da planilha "Attribute_Instance, onde ela abre e fecha várias vezes.

                         

                        O resultado é esse:

                        Capture2.PNG

                        Existe alguma forma de eu fazer um loop para repetir o tag enquanto há tabelas "attribute_instance" no mesmo tag?

                         

                        Cada linha da tabela representa uma tabela module lida e cada coluna representa um parâmetro. 

                         

                        Capture3.PNG

                         

                        espero que isso o ajude a entender melhor o que está acontecendo.

                         

                         

                        Obrigado