QlikView: sfruttare gli Oracle Hints

Prima un po’ di “letteratura”, per rinfrescare la memoria: quando si accede con Qlik ad una fonte dati attraverso ODBC, tutto ciò che si trova tra la parola “SELECT” (o, per chi preferisce, “SQL SELECT“) e il “;” viene eseguito usando il “dialetto” SQL del Driver ODBC cui ci si è collegati.

Un esempio facile da comprendere è la conversione di un campo data in stringa (dd/mm/yyyy), che cambia da un RMDB e l’altro.

 

Ad esempio, se la fonte dati fosse Sybase, si potrebbe scrivere

 

DateOrdini:

Load

    order_date,

    order_date_string;

SELECT

    order_date,

    CONVERT(CHAR(20), order_date, 103) as order_date_string
FROM sales_order;

 

 

Ma se la fonte dati fosse Oracle, si dovrebbe scrivere:

 

DateOrdini:

Load

    order_date,

    order_date_string;

SELECT

    order_datetime,

    TO_CHAR(order_date, ‘DD/MM/YYYY’) as order_date_string
FROM sales_order;

 

 

Tutto questo semplicemente perché Qlik, in maniera trasparente, passa la stringa SQL direttamente al Driver, che la interpreta e ne ritorna i risultati.

Ci sono però delle eccezioni: ad esempio Oracle mette a disposizione degli strumenti di ottimizzazione delle query chiamati HINTS la cui sintassi è fuorviante, perché è la stessa che si usa in molti linguaggi di programmazione (Qlik compreso) per la definizione di un commento. Di seguito un esempio:

 

SELECT /*+ PARALLEL(2) */

    Campo1, Campo2, Campo3

FROM Tabella;

 

In questo caso Qlik interpreta tutto ciò che si trova dentro /* … */ come un commento e non lo passa al Driver ODBC.

Fortunatamente esiste un sistema semplice per evitare questa anomalia: si tratta di un flag di sistema che regola il comportamento di Qlik difronte alle righe di commento e si chiama “StripComments”.

Dunque per permettere al Driver ODBC di Oracle di leggere correttamente i nostri HINTS sarà sufficiente scrivere la query in questo modo:

 

Set StripComments=0;

 

SELECT /*+ PARALLEL(2) */

    Campo1, Campo2, Campo3

FROM Tabella;

 

Set StripComments=1;

 

Naturalmente l’ultima riga è necessaria per ripristinare il normale comportamento di Qlik rispetto ai commenti.

 

Alla prossima!