Esempi di SQL personalizzato per Direct Query | Guida di Qlik Cloud
Vai al contenuto principale Passa a contenuto complementare

Esempi di SQL personalizzato per Direct Query

I seguenti esempi mostrano alcune delle opzioni disponibili quando si utilizza SQL personalizzato per Direct Query.

Esempio: aggiunta di definizioni SQL personalizzate al modello Direct Query

In questo esempio, le definizioni SQL personalizzate per le tabelle C, R, N vengono aggiunte al modello dati nell'applicazione Direct Query insieme a due relazioni tra tabelle. L'uso della funzione Coalesce viene utilizzato per verificare se un valore di campo di N_NATIONKEY è uguale al valore di C_NATIONKEY o se entrambi sono uguali a null.

Nota di suggerimento

Coalesce è il modo consigliato per includere una verifica per vedere se un valore di campo è uguale a null. Per ulteriori informazioni, vedere coalesceFunzione per script e grafici.

LIB CONNECT TO 'CustomSQL:Snowflake_example.com'; Section DirectQuery; C: Select C_NATIONKEY, Sum(C_ACCTBAL) as C_SUM from tpch1.customer group by C_NATIONKEY; R: SELECT R_REGIONKEY, R_NAME from tpch1.region; N: SELECT N_REGIONKEY, N_NAME, N_NATIONKEY from tpch1.nation; Create Relationship Between R, N Matching R_REGIONKEY With N_REGIONKEY; Create Relationship Between Outer Joined N, Inner Joined C On (coalesce([N_NATIONKEY], -1) = coalesce([C_NATIONKEY], -1));

Esempio: aggiunta di tabelle con SQL personalizzato a un modello dati creato con Gestione modello dati

In questo esempio, il modello dati Direct Query viene prima costruito con i contenuti nell'oggetto DirectQueryModel.main, creato con Gestione modello dati. Quindi, un'ulteriore tabella, C con i campi C_CUSTKEY e C_ACCTBAL, viene aggiunta al modello dati. Viene creata una relazione tra il campo O_CUSTKEY in ORDERS e il campo C_CUSTKEY in C.

LIB CONNECT TO 'CustomSQL:Snowflake_example.com'; // DMM created model portion includes Orders table. IMPORT LIVE 'ModelName@obj://DirectQueryModel.Main'; Section DirectQuery; C: Select C_CUSTKEY, C_ACCTBAL from tpch1.customer; Create Relationship Between ORDERS, C on (O_CUSTKEY = C_CUSTKEY);

Esempio: costruzione di un modello dati Direct Query con una tabella SQL personalizzata

In questo esempio, il modello dati Direct Query viene costruito con una tabella SQL personalizzata, C, con i campi rinominati C_KEY e C_BAL. Successivamente, IMPORT LIVE aggiunge il modello dati creato in Gestione modello dati da DirectQueryModel.main. Questo modello dati contiene la tabella Orders e presenta una relazione esistente tra Orders e Customer in quel modello. Quindi, la relazione esistente tra Customers e Orders viene eliminata e viene definita una nuova relazione tra Orders e C.

LIB CONNECT TO 'CustomSQL:Snowflake_example.com'; Section DirectQuery; C: Select C_CUSTKEY as C_KEY, C_ACCTBAL as C_BAL from tpch1.customer; // DMM created model portion includes Orders table. IMPORT LIVE 'ModelName@obj://DirectQueryModel.Main'; // This relationship was defined using DMM between ORDERS and CUSTOMER, but I want to define my own. Drop Relationship Between ORDERS, CUSTOMER; Create Relationship Between ORDERS, C on (O_CUSTKEY = C_KEY);

Esempio: costruzione di un modello dati che include variabili

In questo esempio, la variabile MULT viene prima definita con un valore di 100. Quindi, viene applicata come moltiplicatore alla somma di PS_Supplycost per calcolare il campo S.

LIB CONNECT TO 'CustomSQL:Snowflake_example.com'; Section DirectQuery; LET MULT=100; T1: SELECT PS_AVAILQTY AS C, SUM(PS_SUPPLYCOST) * $(MULT) AS S FROM "TPCH.01"."PARTSUPP" GROUP BY C;

Esempio: costruzione di un modello dati con espressioni Qlik

In questo esempio, per creare il modello dati vengono utilizzate sia variabili che espressioni. Nella tabella ORDERS_AGGREGATIONS, le espressioni vengono utilizzate per definire i valori in ORDERS_GROUP_TOTAL_PRICE. Ogni volta che si effettuano selezioni in un foglio che influiscono sui valori in ORDERS_GROUP_TOTAL_PRICE, l'espressione verrà rivalutata sui dati restituiti dalla query al database.

IMPORT LIVE 'ModelName@obj://DirectQueryModel.Main'; section DirectQuery; let Aggr1 = 1; let Aggr2 = 0; [GROUPS]: SELECT 0 as GROUP_CODE, 'NONE' as "GROUP" UNION ALL SELECT 1 as GROUP_CODE, 'ORDERSTATUS' as "GROUP" UNION ALL SELECT 2 as GROUP_CODE, 'ORDERPRIORITY' as "GROUP" ; [ORDERS_AGGREGATIONS]: SELECT 'BY ORDERSTATUS' as "GROUP_NAME", "O_ORDERSTATUS" as "ORDERS_GROUP", sum("O_TOTALPRICE") as "ORDERS_GROUP_TOTAL_PRICE" FROM "TEST1"."TPCH.01"."ORDERS" WHERE '$(=min({<GROUP_CODE={0,1}>}[GROUP_CODE]))' = '1' GROUP BY 1,2 UNION ALL SELECT 'BY ORDERPRIORITY' as "GROUP_NAME", "O_ORDERPRIORITY" as "ORDERS_GROUP", sum("O_TOTALPRICE") as "ORDERS_GROUP_TOTAL_PRICE" FROM "TEST1"."TPCH.01"."ORDERS" WHERE '$(=min({<GROUP_CODE={0,2}>}[GROUP_CODE]))' = '2' GROUP BY 1,2; ; [ORDERS_AGGREGATIONS_VARS]: SELECT 'BY ORDERSTATUS' as "GROUP_NAME_V", "O_ORDERSTATUS" as "ORDERS_GROUP_V", sum("O_TOTALPRICE") as "ORDERS_GROUP_TOTAL_PRICE_V" FROM "TEST1"."TPCH.01"."ORDERS" WHERE $(=Aggr1) = 1 GROUP BY 1,2 UNION ALL SELECT 'BY ORDERPRIORITY' as "GROUP_NAME_V", "O_ORDERPRIORITY" as "ORDERS_GROUP_V", sum("O_TOTALPRICE") as "ORDERS_GROUP_TOTAL_PRICE_V" FROM "TEST1"."TPCH.01"."ORDERS" WHERE $(=Aggr2) = 1 GROUP BY 1,2; ;

Esempio: utilizzo di funzioni nelle espressioni SQL personalizzate

La seguente istruzione SQL personalizzata mostra un semplice utilizzo di un'espressione del motore $(=…) che viene espansa quando viene eseguita nell'SQL personalizzato. Questa espressione recupera le righe del database remoto in base alle informazioni dell'utente della sessione dell'applicazione. Quando un grafico, una query o una selezione viene eseguita da un utente della sessione dell'applicazione Direct Query con indirizzo e-mail 'user1@qlik.com', il recupero dinamico delle righe di dati dal database SQL remoto viene filtrato per corrispondere solo alle righe in cui il campo C_NAME contiene il valore 'Customer#000000007'. In caso contrario, se l'e-mail dell'utente della sessione dell'applicazione Direct Query non è 'user1@qlik.com', verranno recuperate e mostrate solo le righe in cui il campo C_NAME contiene il valore 'Customer#000000009'.

T8: SELECT * FROM mydb.tpch01.customer WHERE mydb.tpch01.customer.C_NAME = '$(=if(GetUserAttr('userEmail') = 'user1@qlik.com', 'Customer#000000007','Customer#000000009'))';

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – ti pregiamo di farcelo sapere!