Collegamenti semantici

In genere, le selezioni vengono effettuate in modo esplicito facendo clic sui valori di campo desiderati. Tuttavia, esiste anche un modo per effettuare selezioni in modo indiretto attraverso collegamenti semantici. Sono simili ai valori di campo, ma descrivono le relazioni tra gli oggetti anziché gli oggetti stessi. Appaiono come un elenco di pulsanti.

Facendo clic su un collegamento semantico, viene effettuata una selezione in un altro campo.

Regole per le tabelle semantiche

Nota: Le tabelle semantiche non vengono visualizzate nel visualizzatore tabelle.

I collegamenti semantici vengono creati da tabelle semantiche contenenti le relazioni tra gli oggetti.

  • La tabella deve contenere esattamente tre o quattro colonne.
  • Una tabella semantica deve contenere relazioni tra i valori di campi differenti o tra valori dello stesso campo. Una combinazione delle due non è accettata.
  • L'istruzione LOAD o SELECT che carica una tabella semantica deve essere preceduta da un qualificatore semantic per indicare che non si tratta di una tabella logica.

In genere vengono utilizzate quattro colonne: la prima contiene i valori di campo correlati ad altri valori di campo, la terza contiene il valore di campo correlato. La seconda colonna deve contenere i nomi delle relazioni e la quarta deve contenere i nomi della relazioni inverse.

Se vengono utilizzate tre colonne, non è possibile assegnare alcun nome esplicito alle relazioni inverse. I nomi dati alla seconda colonna vengono utilizzati per la relazione e per la relazione inversa. I nomi sono quindi preceduti o seguiti da frecce.

Se le relazioni avvengono tra valori di campo dello stesso campo, la prima e la terza colonna devono avere lo stesso nome. Anche i nomi della seconda e della quarta colonna, ossia il tipo di relazioni, devono essere gli stessi. Tuttavia, se le relazioni sono tra valori di campo di campi differenti, tutte le colonne devono avere nomi diversi.

Estrazione di una tabella semantica dai dati

Non è necessario che la tabella semantica esista sempre come tabella all'esterno di QlikView. Risulta più flessibile estrarre questa tabella dalla tabelle esistente di oggetti attraverso un'istruzione LOAD separata.

Nell'esempio presidents della directory di esempi di QlikView, lo script per generare i collegamenti Predecessor e Successor potrebbe essere:

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;

La seconda istruzione LOAD restituirà una tabella visualizzata come nell'esempio a destra, la quale verrà caricata come tabella semantica. La clausola where viene utilizzata per omettere il primo record, perché questo record collega il primo presidente con il presidente 0 non esistente.

Tenere inoltre presente che questa istruzione LOAD contiene due campi denominati No e due campi denominati Relation. Questa istruzione LOAD causa un errore di esecuzione dello script se utilizzata per caricare una tabella interna, perché la procedura di caricamento per una singola tabella interna richiede che nessuno dei campi condivida lo stesso nome. Inoltre, anche l'istruzione corrispondente SELECT non è consentita, perché la maggior parte dei driver ODBC ne richiede l'omissione. Se la tabella dei presidenti è memorizzata in un database, è invece necessario utilizzare la struttura seguente:

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;

L'esempio dei presidenti è solo un esempio semplice di come si possono utilizzare i collegamenti semantici. Tale impiego può interessare anche l'ambito della genealogia, dove i collegamenti semantici possono essere cousin, sibling, grandmother e così via, oppure persone di aziende dove i collegamenti semantici possono essere ad esempio superior, reports to, secretary e così via.

Uso dei valori correlati come nomi di relazione

Alcune volte è più descrittivo utilizzare il valore di campo relativo come nome della relazione. Nel caso dei presidenti, è consigliabile che tutti i predecessori siano in una colonna e tutti i successori in un'altra:

Per creare questi collegamenti, occorre utilizzare lo script seguente:

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 si fa clic su un collegamento semantico, si effettua una selezione nel campo della terza colonna, DuplicateOfNo, la quale nella tabella semantica rappresenta sempre il numero del presidente mostrato nel collegamento semantico stesso.

Potrebbe non essere ovvio all'inizio ma le relazioni inverse nella costruzione sopra sono quasi inutili. Dovrebbero mostrare il nome di un presidente e, una volta fatto clic, consentire di selezionare il predecessore/il successore del presidente mostrato. Per questo motivo sono noti con il nome Dummy1 e Dummy2 e viene utilizzata solo la prima relazione (colonna due).

Poiché è preferibile non includere relazioni fittizie nelle caselle di elenco, è necessario interpretare la seconda e la quarta colonna come tipi di relazione differenti. Questo significa che la prima e la terza colonna devono avere diversi nomi di campo. Questa è la ragione per la quale si hanno due colonne che contengono il numero del presidente, No e DuplicateOfNo.

Sono necessarie due istruzioni semantic distinte per ottenere due caselle di elenco differenti con relazioni.

È inoltre possibile basare questo esempio su tabelle semantiche a tre colonne; tuttavia, in questo caso le caselle di elenco con relazioni inverse potrebbero creare confusione.