Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
joaopassos97
Contributor II
Contributor II

Relacionar objetos em tabelas diferentes no Qlik Sense

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?

Labels (1)
5 Replies
Ricardo_Gerhard
Employee
Employee

Boa tarde João,

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

Ricardo Gerhard
OEM Solution Architect
LATAM
joaopassos97
Contributor II
Contributor II
Author

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.

Ricardo_Gerhard
Employee
Employee

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.

Ricardo Gerhard
OEM Solution Architect
LATAM
joaopassos97
Contributor II
Contributor II
Author

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?

joaopassos97
Contributor II
Contributor II
Author

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