Ga naar hoofdinhoud Ga naar aanvullende inhoud

Voorbeelden van aangepaste SQL voor Direct Query

De volgende voorbeelden geven een aantal opties aan wanneer aangepaste SQL wordt gebruikt voor Direct Query.

Voorbeeld: aangepaste SQL‑definities toevoegen aan het Direct Query-model

In dit voorbeeld worden naast twee intertabel-relaties aangepaste SQL-definities voor de tabellen C, R en N toegevoegd aan het gegevensmodel in de Direct Query-app. Het gebruik van de Coalesce-functie wordt gebruikt om te controleren of een veldwaarde van N_NATIONKEY gelijk is aan de waarde van C_NATIONKEY, of dat beide gelijk zijn aan nul.

Tip

Coalesce is de aanbevolen manier om een controle toe te voegen om te kijken of een veldwaarde gelijk is aan nul. Ga voor meer informatie naar coalesce - script- en diagramfunctie.

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

Voorbeeld: tabellen met aangepaste SQL toevoegen aan een gegevensmodel dat is gemaakt met Gegevensmodelbeheer

In dit voorbeeld wordt het Direct Query-gegevensmodel eerst samengesteld met de inhoud in het DirectQueryModel.main-object dat is gemaakt met Gegevensmodelbeheer. Vervolgens wordt er een extra tabel, C met de velden C_CUSTKEY en C_ACCTBAL, toegevoegd aan het gegevensmodel. Er wordt een relatie tot stand gebracht tussen het veld O_CUSTKEY in ORDERS en het veld 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);

Voorbeeld: een Direct Query-gegevensmodel opstellen met een aangepaste SQL-tabel

In dit voorbeeld is het Direct Query-gegevensmodel opgesteld met een aangepaste SQL-tabel, C, met de velden C_KEY en C_BAL waarvoor de namen zijn gewijzigd. Vervolgens voegt IMPORT LIVE het gegevensmodel toe dat is aangemaakt in Gegevensmodelbeheer vanuit DirectQueryModel.main. Dit gegevensmodel bevat de tabel Bestellingen en heeft in dat model een bestaande relatie tussen Orders en Customer. Vervolgens wordt de bestaande relatie tussen Customers en Orders verwijderd en wordt er een nieuwe relatie tussen Orders en C gedefinieerd.

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

Voorbeeld: een gegevensmodel met variabelen samenstellen

In dit voorbeeld wordt de variabele MULT eerst gedefinieerd met de waarde 100. Vervolgens wordt deze toegepast als een vermenigvuldiger op de som van PS_Supplycost om het veld S te berekenen.

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;

Voorbeeld: een gegevensmodel met Qlik-uitdrukkingen opstellen

In dit voorbeeld worden zowel variabelen als uitdrukkingen gebruikt om het gegevensmodel op te stellen. In de tabel ORDERS_AGGREGATIONS worden uitdrukkingen gebruikt om de waarden in ORDERS_GROUP_TOTAL_PRICE te definiëren. Wanneer er selecties in een werkblad worden gemaakt die invloed zouden kunnen hebben op de waarden ORDERS_GROUP_TOTAL_PRICE, wordt de uitdrukking opnieuw geëvalueerd op de gegevens die door de query op de database worden geretourneerd.

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

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!