Gå till huvudinnehåll Gå till ytterligare innehåll

Exempel på anpassad SQL för Direct Query.

I de följande exemplen visas några av alternativen när du använder anpassad SQL för Direct Query.

Exempel: Lägga till anpassade SQL-definitioner i Direct Query-modellen

I det här exemplen läggs anpassade SQL-definitioner för tabellerna C, R och N till i datamodellen i Direct Query-appen tillsammans med två relationer mellan tabeller. Coalesce-funktionen används för att kontrollera om ett fältvärde på N_NATIONKEY är lika med värdet för C_NATIONKEY, eller om båda är lika med null.

Anteckning om tips

Coalesce är det rekommenderade sättet att lägga in en kontroll för att se om ett fältvärde är lika med null. coalesce - skript- och diagramfunktion

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

Exempel: Lägga till tabeller med anpassad SQL i en datamodell som gjorts med Hanterare för datamodell

I det här exemplet konstrueras Direct Query-datamodellen först med innehållet i DirectQueryModel.main-objektet, som skapades med Hanterare för datamodell. Därefter läggs ytterligare en tabell, C med fälten C_CUSTKEY och C_ACCTBAL till i datamodellen. En relation skapas mellan fältet O_CUSTKEY i ORDERS med fältet C_CUSTKEY i 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);

Exempel: Skapa en Direct Query-datamodell med en anpassad SQL-tabell

I det här exemplet konstrueras Direct Query-datamodellen med en anpassad SQL-tabell, C, med de omdöpta fälten C_KEY och C_BAL. Därefter lägger IMPORT LIVE till datamodellen som skapats i Hanterare för datamodell från DirectQueryModel.main. Den här datamodellen innehåller tabellen Ordrar och har en befintlig relation mellan Orders och Customer i modellen. Därefter tas den befintliga relationen mellan Customers och Orders bort och en ny relation definieras mellan Orders och 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);

Exempel: Konstruera en datamodell inklusive variabler

I det här exempelet defineras variabeln MULT först med ett värde på 100. Därefter tillämpas den som en multiplicerare för summan av PS_Supplycost för att beräkna fältet 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;

Exempel: Konstruera en datamodell med Qlik-uttryck

I det här exemplet används båda variablerna och uttrycken för att bygga datamodellen. I tabellen ORDERS_AGGREGATIONS används uttryck för att definiera värdena i ORDERS_GROUP_TOTAL_PRICE. När urval görs i ett ark som påverkar värdena i ORDERS_GROUP_TOTAL_PRICE kommer uttrycket att utvärderas på nytt för de data som returneras till databasen av frågan.

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

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!