Przykłady niestandardowego języka SQL dla Direct Query
W poniższych przykładach pokazano niektóre opcje podczas korzystania z niestandardowego języka SQL dla Direct Query.
Przykład: dodawanie definicji niestandardowego języka SQL do modelu Direct Query
W tym przykładzie definicje w niestandardowym języku SQL dla tabel C, R i N zostały dodane do modelu danych w aplikacji Direct Query wraz z dwiema relacjami między tabelami. Funkcja Coalesce służy do sprawdzania, czy wartość pola N_NATIONKEY jest równa wartości C_NATIONKEY, czy też obie wartości są równe null.
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));
Przykład: dodawanie tabel przy użyciu niestandardowego języka SQL do modelu danych utworzonego za pomocą narzędzia Menedżer modelu danych
W tym przykładzie model danych Direct Query jest najpierw konstruowany z zawartości obiektu DirectQueryModel.main, który został utworzony przy użyciu narzędzia Menedżer modelu danych. Następnie do modelu danych jest dodawana dodatkowa tabela C z polami C_CUSTKEY i C_ACCTBAL. Pomiędzy polem O_CUSTKEY w tabeli ORDERS a polem C_CUSTKEY w tabeli C jest tworzona relacja.
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);
Przykład: konstruowanie modelu danych Direct Query z niestandardową tabelą SQL
W tym przykładzie model danych Direct Query jest konstruowany z niestandardowej tabeli SQL, C, z polami C_KEY i C_BAL o zmienionych nazwach. Następnie IMPORT LIVE dodaje model danych utworzony w narzędziu Menedżer modelu danych z DirectQueryModel.main. Ten model danych zawiera tabelę Orders i obejmuje istniejącą relację pomiędzy Orders i Customer. Następnie istniejąca relacja między Customers i Orders jest usuwana i definiowana jest nowa relacja między Orders i 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);
Przykład: konstruowanie modelu danych z uwzględnieniem zmiennych
W tym przykładzie zmienna MULT jest najpierw definiowana z wartością 100. Następnie jest stosowana jako mnożnik sumy PS_Supplycost do obliczenia pola 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;
Przykład: konstruowanie modelu danych za pomocą wyrażeń Qlik
W tym przykładzie do zbudowania modelu danych użyto zarówno zmiennych, jak i wyrażeń. W tabeli ORDERS_AGGREGATIONS wyrażenia służą do definiowania wartości w ORDERS_GROUP_TOTAL_PRICE. Za każdym razem, gdy w arkuszu dokona się wyborów mających wpływ na wartości w ORDERS_GROUP_TOTAL_PRICE, wyrażenie zostanie ponownie ocenione na podstawie danych zwróconych przez zapytanie do bazy danych.
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;
;
Czy ta strona była pomocna?
Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!