Direct Query için özel SQL örnekleri | Qlik Cloud Yardımı
Ana içeriğe geç Tamamlayıcı içeriğe geç

Direct Query için özel SQL örnekleri

Aşağıdaki örneklerde, Direct Query için özel SQL kullanılırken sunulan bazı seçenekler gösterilmektedir.

Örnek: Direct Query modeline özel SQL tanımları ekleme

Bu örnekte, C, R, N tablolarına yönelik özel SQL tanımları, iki tablo arası ilişkiyle birlikte Direct Query uygulamasındaki veri modeline eklenir. N_NATIONKEY alan değerinin C_NATIONKEY değerine eşit olup olmadığını veya her ikisinin de null değerine eşit olup olmadığını kontrol etmek için Coalesce işlevi kullanılır.

İpucu notu

Coalesce, bir alan değerinin null değerine eşit olup olmadığını görmek üzere bir kontrol eklemek için önerilen yöntemdir. Daha fazla bilgi için bkz. coalesceKomut dosyası 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 oluşturulmuş bir veri modeline özel SQL içeren tablolar ekleme

Bu örnekte, Direct Query veri modeli ilk olarak Veri modeli yöneticisi ile oluşturulan DirectQueryModel.main nesnesindeki içeriklerle yapılandırılır. Ardından, C_CUSTKEY ve C_ACCTBAL alanlarını içeren ek bir C tablosu veri modeline eklenir. ORDERS tablosundaki O_CUSTKEY alanı ile C tablosundaki C_CUSTKEY alanı arasında bir ilişki kurulur.

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 SQL tablosu içeren bir Direct Query veri modeli yapılandırma

Bu örnekte, Direct Query veri modeli; yeniden adlandırılmış C_KEY ve C_BAL alanlarını içeren özel bir SQL tablosu olan C ile yapılandırılır. Ardından, IMPORT LIVE, Veri modeli yöneticisi içinde oluşturulan veri modelini DirectQueryModel.main üzerinden ekler. Bu veri modeli Orders tablosunu içerir ve söz konusu modelde Orders ile Customer arasında mevcut bir ilişki bulunur. Daha sonra, 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 yapılandırma

Bu örnekte, ilk olarak MULT değişkeni 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 ifadeleriyle bir veri modeli yapılandırma

Bu örnekte, veri modelini oluşturmak için hem değişkenler hem de ifadeler kullanılır. ORDERS_AGGREGATIONS tablosunda, ORDERS_GROUP_TOTAL_PRICE içindeki değerleri tanımlamak için ifadeler kullanılır. Bir sayfada ORDERS_GROUP_TOTAL_PRICE içindeki değerleri etkileyecek seçimler yapıldığında, ifade veritabanına gönderilen sorgu tarafından döndürülen veriler üzerinde yeniden değerlendirilir.

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; ;

Örnek: Özel SQL ifadelerinde işlevleri kullanma

Aşağıdaki özel SQL deyimi, özel SQL içinde yürütüldüğünde genişletilen bir $(=…) Engine ifadesinin basit bir kullanımını gösterir. Bu ifade, uygulama oturumunun kullanıcı bilgilerine bağlı olarak uzak veritabanı satırlarını alır. E-posta adresi 'user1@qlik.com' olan bir Direct Query uygulama oturumu kullanıcısı tarafından bir grafik, sorgu veya seçim gerçekleştirildiğinde, uzak SQL veritabanından veri satırlarının dinamik olarak alınması, yalnızca C_NAME alanının 'Customer#000000007' değerini içerdiği satırlarla eşleşecek şekilde filtrelenir. Aksi takdirde, Direct Query uygulamasının oturum kullanıcısının e-postası 'user1@qlik.com' değilse, yalnızca C_NAME alanının 'Customer#000000009' değerini içerdiği satırlar alınır ve gösterilir.

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

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 lütfen bize bildirin!