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 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 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 – ti pregiamo di farcelo sapere!