Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

Beispiele für benutzerdefinierte SQL für Direct Query

Die folgenden Beispiele zeigen einige der Optionen für die Verwendung von benutzerdefinierter SQL für Direct Query.

Beispiel: Hinzufügen von benutzerdefinierten SQL-Definitionen zum Direct Query-Modell

In diesem Beispiel werden benutzerdefinierte SQL-Definitionen für die Tabellen C, R und N zum Datenmodell in der Direct Query-App hinzugefügt. Hinzu kommen zwei Beziehungen zwischen Tabellen. Die Funktion Coalesce wird verwendet, um zu prüfen, ob ein Feldwert von N_NATIONKEY dem Wert von C_NATIONKEY entspricht oder ob beide gleich null sind.

Tipphinweis

Coalesce ist die empfohlene Methode zum Einschließen der Prüfung, ob ein Feldwert gleich null ist. Weitere Informationen finden Sie unter coalesce - Skript- und Diagrammfunktion.

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

Beispiel: Hinzufügen von Tabellen mit benutzerdefinierter SQL zu einem mit dem Datenmodell-Manager erstellten Datenmodell

In diesem Beispiel wird das Direct Query-Datenmodell zuerst mit den Inhalten im DirectQueryModel.main-Objekt erstellt, das mit dem Datenmodell-Manager erstellt wurde. Dann wird eine zusätzliche Tabelle C mit den Feldern C_CUSTKEY und C_ACCTBAL zum Datenmodell hinzugefügt. Es wird eine Beziehung zwischen dem Feld O_CUSTKEY in ORDERS und dem Feld C_CUSTKEY in C eingerichtet.

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

Beispiel: Erstellen eines Direct Query-Datenmodells mit einer benutzerdefinierten SQL-Tabelle

In diesem Beispiel wird das Direct Query-Datenmodell mit einer benutzerdefinierten SQL-Tabelle C erstellt, die die umbenannten Felder C_KEY und C_BAL enthält. Dann fügt IMPORT LIVE das im Datenmodell-Manager erstellte Datenmodell über DirectQueryModel.main hinzu. Dieses Datenmodell enthält die Tabelle „Orders“ und eine vorhandene Beziehung zwischen Orders und Customer in diesem Modell. Dann wird die bestehende Beziehung wischen Customers und Orders entfernt und eine neue Beziehung zwischen Orders und C definiert.

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

Beispiel: Erstellen eines Datenmodells mit Variablen

In diesem Beispiel wird zuerst die Variable MULT mit einem Wert von 100 erstellt. Sie wird dann als Multiplikator auf die Summe von PS_Supplycost angewendet, um das Feld S zu berechnen.

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;

Beispiel: Erstellen eines Datenmodells mit Qlik Formeln

In diesem Beispiel werden sowohl Variablen als auch Formeln zum Erstellen des Datenmodells verwendet. In der Tabelle ORDERS_AGGREGATIONS werden Formeln verwendet, um die Werte in ORDERS_GROUP_TOTAL_PRICE zu definieren. Sobald Auswahlen in einem Arbeitsblatt getroffen werden, die sich auf die Werte in ORDERS_GROUP_TOTAL_PRICE auswirken, wird die Formel erneut ausgewertet, und die Daten werden von der Abfrage an die Datenbank zurückgegeben.

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

Hat diese Seite Ihnen geholfen?

Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!