Vai al contenuto principale Passa a contenuto complementare

Esempi di SQL personalizzato per Direct Query

I seguenti esempi mostrano alcune delle opzioni che utilizzano l'SQL personalizzato per Direct Query.

Esempio: aggiunta delle definizioni dell'SQL personalizzato al modello Direct Query

In questo esempio, le definizioni SQL personalizzate per le tabelle C, R e N vengono aggiunte al modello dati nell'app Direct Query insieme a due relazioni tra le tabelle. La funzione Coalesce viene utilizzata per verificare se il valore di un campo di N_NATIONKEY equivale al valore di C_NATIONKEY, oppure se entrambi sono equivalenti a null.

Nota di suggerimento

Coalesce è il metodo consigliato per includere una verifica per controllare se il valore di un campo è equivalente a null. Per ulteriori informazioni, vedere coalesce - funzione dello script e del grafico.

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 modello dati per prima cosa viene creato con i contenuti nell'oggetto DirectQueryModel.main, che è stato realizzato con il Gestione modello dati. Quindi, al modello dati viene aggiunta la tabella aggiuntiva C, con i campi C_CUSTKEY e C_ACCTBAL. Viene quindi 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: creazione di un modello dati Direct Query con una tabella SQL personalizzata

In questo esempio, il modello dati Direct Query viene creato con una tabella SQL personalizzata, C, con i campi ridenominati C_KEY e C_BAL. Quindi, IMPORT LIVE aggiunge il modello dati creato in Gestione modello dati da DirectQueryModel.main. Questo modello dati contiene la tabella Ordini e include una relazione esistente tra Orders e Customer in tale modello. Quindi, la relazione esistente tra Customers e Orders viene rimossa 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: creazione di un modello dati che include variabili

In questo esempio, la variabile MULT viene inizialmente definita con il valore di 100. Quindi, viene applicata come moltiplicatore alla somma 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: creazione di un modello dati con espressioni Qlik

In questo esempio, sia le variabili che le espressioni vengono utilizzate per creare il modello dati. Nella tabella ORDERS_AGGREGATIONS, le espressioni vengono utilizzate per definire i valori in ORDERS_GROUP_TOTAL_PRICE. Ogni volta che in un foglio vengono effettuate delle selezioni che possono influenzare i valori in ORDERS_GROUP_TOTAL_PRICE, l'espressione verrà valutata nuovamente in base ai 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; ;

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 – facci sapere come possiamo migliorare!