Aşağıdaki örneklerde, Direct Query için özel SQL kullanırken mevcut olan seçeneklerden bazıları gösterilir.
Örnek: Direct Query modeline özel SQL tanımları ekleme
Bu örnekte C, R, N tabloları için özel SQL tanımları, iki tablolar arası ilişkiyle birlikte Direct Query uygulamasındaki veri modeline eklenir. Coalesce fonksiyonu, bir N_NATIONKEY alan değerinin C_NATIONKEY değerine eşit olup olmadığını veya her ikisinin null olup olmadığını kontrol etmek için kullanılır.
İpucu notu
Coalesce, bir alan değerinin null olup olmadığını görmek için kontrol eklemenin önerilen yoludur. Daha fazla bilgi için bk. coalesce - kod ve grafik fonksiyonu.
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));
Örnek: Veri modeli yöneticisi ile yapılan bir veri modeline özel SQL ile tablolar ekleme
Bu örnekte Direct Query veri modeli öncelikle, Veri modeli yöneticisi ile oluşturulmuş DirectQueryModel.main nesnesindeki içeriklerle oluşturulur. Ardından veri modeline, C_CUSTKEY ve C_ACCTBAL alanlarını içeren ek bir C tablosu eklenir. ORDERS içindeki O_CUSTKEY alanı ile C içindeki C_CUSTKEY alanı arasında bir ilişki oluşturulur.
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);
Örnek: Özel bir SQL tablosuyla Direct Query veri modeli oluşturma
Bu örnekte Direct Query veri modeli, yeniden adlandırılan C_KEY ve C_BAL alanlarıyla özel bir C SQL tablosuyla oluşturulur. Ardından IMPORT LIVE, DirectQueryModel.main kaynağından Veri modeli yöneticisi içinde oluşturulan veri modelini ekler. Bu veri modelinde, Siparişler tablosu ve o modeldeki Orders ile Customer arasında mevcut bir ilişki bulunur. Ardından Customers ile Orders arasındaki mevcut ilişki kaldırılır ve Orders ile C arasında yeni bir ilişki tanımlanır.
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);
Örnek: Değişkenler içeren bir veri modeli oluşturma
Bu örnekte MULT değişkeni önce 100 değeriyle tanımlanır. Ardından S alanını hesaplamak için PS_Supplycost toplamına çarpan olarak uygulanır.
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;
Örnek: Qlik deyimleriyle veri modeli oluşturma
Bu örnekte, veri modelini oluşturmak için hem değişkenler hem deyimler kullanılır. ORDERS_AGGREGATIONS tablosunda deyimler, ORDERS_GROUP_TOTAL_PRICE içindeki değerleri tanımlamak için kullanılır. Bir sayfada, ORDERS_GROUP_TOTAL_PRICE içindeki değerleri etkileyecek seçimler yapıldığında değer, sorgu tarafından veritabanına döndürülen verilere dayanarak yeniden değerlendirilecektir.
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;
;
Bu sayfa size yardımcı oldu mu?
Bu sayfa veya içeriği ile ilgili bir sorun; bir yazım hatası, eksik bir adım veya teknik bir hata bulursanız, bize bildirin, düzeltelim!