Links semânticos

Normalmente, as seleções são feitas de forma explícita clicando nos valores de campo desejados. No entanto, também existe uma forma de fazer indiretamente as seleções usando links semânticos. Esses são semelhantes a valores de campo, mas descrevem as relações entre os objetos, em vez dos próprios objetos. e aparecem como uma lista de botões.

Ao clicar em um link semântico, uma seleção é feita em outro campo.

Regras para tabelas semânticas

Nota: Tabelas semânticas não são exibidas no Visualizador de Tabelas.

Os links semânticos são criados ao carregar tabelas que contêm as relações entre os objetos.

  • A tabela deve conter exatamente três ou quatro colunas.
  • Uma tabela semântica deve conter relações entre valores de campos diferentes ou entre valores do mesmo campo. Não é aceita uma combinação dos dois.
  • Os comandos LOAD ou SELECT que carregam uma tabela semântica devem ser precedidos por um qualificador semantic para mostrar que não é uma tabela lógica.

Normalmente são usadas quatro colunas, a primeira contém os valores de campo que têm uma relação com algum outro valor de campo e a terceira, que contém o valor de campo relacionado. A segunda coluna deve conter os nomes das relações e, finalmente, a quarta coluna deve ter os nomes das relações inversas.

Se forem utilizadas três colunas, nenhum nome explícito poderá ser dado às relações inversas. Os nomes fornecidos na segunda coluna são utilizados para a relação e a relação inversa. Os nomes são precedidos ou seguidos por setas.

Se as relações forem entre valores do mesmo campo, a primeira e a terceira colunas devem ter o mesmo nome. Além disso, o nome da segunda e quarta colunas, isto é, o tipo de relações, deve ser o mesmo. No entanto, se as relações forem entre valores de campos diferentes, todas as colunas devem ter nomes diferentes.

extraindo uma tabela semântica a partir dos dados

Nem sempre a tabela semântica precisa existir como uma tabela fora do QlikView. É mais flexível extrair essa tabela da tabela de objetos existente usando um comando LOAD separado.

No exemplo presidents, no diretório de exemplos do QlikView, o script para gerar os links Predecessor e Successor e poderia ser:

Directory presidents;

LOAD * from presdnts.csv (ansi, txt, delimiter

is ',', embedded labels);

Semantic LOAD

No -1 as No,

'Successor' as Relation,

No,

'Predecessor' as Relation

from presdnts.csv (ansi, txt, delimiter is ',',

embedded labels) where No > 1;

O segundo comando LOAD resulta em uma tabela que se assemelha à da direita, e essa tabela é carregada como uma tabela semântica. A cláusula where é utilizada para omitir o primeiro registro, pois isso poderia vincular o primeiro presidente ao presidente 0 não existente.

Note também que esse comando LOAD contém dois campos com rótulo No e dois campos com rótulo Relation. Esse comando LOAD causaria um erro de execução do script se fosse utilizado para carregar uma tabela interna, pois o procedimento de carregamento para uma única tabela interna exige que nenhum dos campos tenha o mesmo nome. O comando SELECT correspondente também não é possível, pois a maior parte dos drivers ODBC também exige isso. Em vez disso, a seguinte estrutura deveria ser usada se a tabela presidentes estivesse em uma base de dados:

Connect to DataBase;

SELECT * from presdnts;

Alias No2 as No, Relation2 as Relation;

Semantic SELECT

No -1 as No,

'Successor' as Relation,

No as No2,

'Predecessor' as Relation2

from presdnts where No > 1;

O exemplo dos presidentes é apenas uma simples amostra de como usar os links semânticos. Eles também podem ser utilizados em genealogia, em que os links semânticos podem ser, por exemplo, primo, irmão, avó, etc., ou para pessoas em empresas, em que os links semânticos podem ser, por exemplo, superior, reports to, secretary, etc.

utilizando os valores relacionados como nomes de relação

Às vezes, é mais descritivo usar o valor do campo relacionado como o nome da relação. No caso dos presidentes, você poderia desejar todos os antecessores em uma coluna e todos os sucessores em outra:

Para criar esses links, o seguinte script é necessário:

LOAD

No as DuplicateOfNo,

FirstName & ' ' & LastName as Name,

*

from presdnts.csv;

Semantic LOAD

No -1 as No,

FirstName & ' ' & LastName as Successor,

No as DuplicateOfNo,

'Dummy1'

from presdnts.csv where No > 1;

Semantic LOAD

No +1 as No,

FirstName &' ' & LastName as Predecessor,

No as DuplicateOfNo,

'Dummy2'

from presdnts.csv;

Quando um link semântico é clicado, é feita uma seleção no campo da terceira coluna, DuplicateOfNo, que, na tabela semântica, é sempre o número do presidente mostrado no link semântico.

A princípio pode não ser óbvio, mas as relações inversas na construção apresentada são quase inúteis. Elas mostrariam o nome de um presidente e, quando clicadas, selecionariam o antecessor/sucessor do presidente exibido. É por isso que são chamadas Dummy1 e Dummy2 e somente a primeira relação (coluna dois) é utilizada.

Como não queremos que as relações fictícias apareçam nas listas, devemos tratar a segunda e a quarta colunas como tipos diferentes de relações. Isso significa que a primeira e a terceira colunas devem ter nomes de campo diferentes. Esse é o motivo pelo qual temos duas colunas que contêm o número do presidente, No e DuplicateOfNo.

Dois comandos semantic diferentes são necessários, pois queremos duas listas diferentes com relações.

Esse exemplo também pode ser feito com tabelas semânticas de três colunas, mas as listas com as relações inversas provavelmente confundiriam o usuário.