Direct Query

L'istruzione DIRECT QUERY consente di accedere alle tabelle mediante una connessione ODBC o OLE DB utilizzando la funzione Direct Discovery.

Sintassi:  

DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist[DETAIL fieldlist] FROM tablelist

[WHERE where_clause]

 

Le parole chiave DIMENSION, MEASURE e DETAIL possono essere utilizzate in qualsiasi ordine.

Le clausole con parole chiave DIMENSION e FROM sono richieste in tutte le istruzioni DIRECT QUERY. La parola chiave FROM deve essere collocata dopo la parola chiave DIMENSION.

I campi specificati direttamente dopo la parola chiave DIMENSION vengono caricati in memoria e possono essere utilizzati per creare associazioni tra dati in memoria e dati Direct Discovery.

Nota: L'istruzione DIRECT QUERY non può contenere le clausole DISTINCT o GROUP BY.

La parola chiave MEASURE consente di definire i campi che QlikView riconosce su un "metalivello". I dati effettivi di un campo di misura risiedono nel database solo durante il processo di caricamento dei dati e vengono recuperati ad hoc dalle espressioni grafiche utilizzate in un grafico.

Generalmente, i campi contenenti valori discreti che verranno utilizzati come dimensioni devono essere caricati con la parola chiave DIMENSION, mentre i numeri che verranno utilizzati solo nelle aggregazioni devono essere selezionati con la parola chiave MEASURE.

I campi DETAIL forniscono informazioni o dettagli, ad esempio campi dei commenti, che un utente può desiderare di visualizzare in una tabella di analisi dei dettagli. I campi DETAIL non possono essere utilizzati nelle espressioni grafiche.

Per impostazione predefinita, l'istruzione DIRECT QUERY è una sorgente dati neutra per le sorgenti dati che supportano SQL. Per tale ragione, è possibile utilizzare la stessa l'istruzione DIRECT QUERY per database SQL diversi senza che sia necessario apportare modifiche. Direct Discovery genera query adatte al database in base alle esigenze.

La sintassi della sorgente dati NATIVE può essere utilizzata quando l'utente conosce il database a cui inviare le query e desidera utilizzare estensioni specifiche del database in SQL. La sintassi della sorgente dati NATIVE viene supportata:

  • Come espressioni di campo nelle clausole DIMENSION e MEASURE
  • Come contenuto della clausola WHERE

Esempi:  

DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE
NATIVE ('X % Y') AS X_MOD_Y
FROM TableName
DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE X, Y
FROM TableName
WHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Nota: I seguenti termini vengono utilizzati come parole chiave e non possono essere utilizzati come nomi di colonna o di campo senza che vengano racchiusi tra virgolette: and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

Argomenti:  

Argomento Descrizione
fieldlist

Un elenco separato da virgole di specifiche dei campi, fieldname {, fieldname}. Una specifica di un campo può essere costituita da un nome di campo, condizione in cui lo stesso nome viene utilizzato per il nome di colonna del database e il nome di campo di QlikView. Oppure una specifica di campo può essere costituita da un "alias di campo", nel cui caso a un'espressione di database o a un nome di colonna viene assegnato un nome di campo di QlikView.

Vedere: Elenchi dei campi Direct Discovery

tablelist

Un elenco di nomi di tabelle o di viste del database da cui vengono caricati i dati. In genere, saranno viste contenenti un JOIN che viene eseguito sul database.

where_clause

In questo caso, non viene definita la sintassi completa delle clausole WHERE del database, tuttavia è consentita la maggior parte delle "espressioni relazionali" di SQL, compreso l'utilizzo delle chiamate di funzione, l'operatore LIKE per le stringhe, IS NULL e IS NOT NULL e IN. BETWEEN non è compreso.

NOT è un operatore unario, contrariamente al modificatore di alcune parole chiave.

Esempi:  

WHERE x > 100 AND "Region Code" IN ('south', 'west')
WHERE Code IS NOT NULL and Code LIKE '%prospect'
WHERE NOT X in (1,2,3)

L'ultimo esempio non può essere scritto come:

WHERE X NOT in (1,2,3)

Esempio:  

In questo esempio viene utilizzata una tabella del database denominata TableName, contenente i campi Dim1, Dim2, Num1, Num2 e Num3. Dim1 e Dim2 verranno caricati nella serie di dati QlikView.

DIRECT QUERY DIMENSTION Dim1, Dim2 MEASURE Num1, Num2, Num3 FROM TableName ;
 

Dim1 e Dim2 saranno disponibili per essere utilizzati come dimensioni. Num1, Num2 e Num3 saranno disponibili per le aggregazioni. Anche Dim1 e Dim2 saranno disponibili per le aggregazioni. Il tipo di aggregazioni per le quali è possibile utilizzare Dim1 e Dim2 dipende dai relativi tipi di dati. Ad esempio, in molti casi i campi DIMENSION contengono dati di stringa, come nomi o numeri di account. Questi campi non possono essere sommati, tuttavia possono essere conteggiati: count(Dim1).

Nota: Le istruzioni DIRECT QUERY vengono scritte direttamente nell'editor di script. Per semplificare la costruzione delle istruzioni DIRECT QUERY, è possibile generare un'istruzione SELECT da una connessione dati e quindi modificare lo script generato per trasformarlo in un'istruzione DIRECT QUERY.
Ad esempio, l'istruzione SELECT:

SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;


può essere trasformata nell'istruzione DIRECT QUERY seguente:

DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber

MEASURE
SubTotal,
TaxAmt

DETAIL
OrderDate

FROM MyDB.Sales.SalesOrderHeader;