Accéder au contenu principal Passer au contenu complémentaire

Exemples de custom SQL for Direct Query

Les exemples suivants montrent certaines des options à votre disposition lors de l'utilisation de custom SQL for Direct Query.

Exemple : Ajout de définitions custom SQL au modèle Direct Query

Dans cet exemple, les définitions custom SQL des tables C, R et N sont ajoutées au modèle de données dans l'application Direct Query avec deux relations inter-table. L'utilisation de la fonction Coalesce permet de vérifier si une valeur de champ de N_NATIONKEY est égale à la valeur de C_NATIONKEY ou si les deux sont nulles.

Note Conseil

La méthode Coalesce est celle recommandée pour inclure un contrôle permettant de vérifier si une valeur de champ est nulle. Pour plus d'informations, consultez coalesce - fonction de script et fonction de graphique.

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

Exemple : Ajout de tables avec custom SQL à un modèle de données élaboré avec Gestionnaire de modèle de données

Dans cet exemple, le modèle de données Direct Query est d'abord élaboré à l'aide du contenu de l'objet DirectQueryModel.main, qui a été créé avec Gestionnaire de modèle de données. Ensuite, une table supplémentaire, C, ainsi que les champs C_CUSTKEY et C_ACCTBAL, sont ajoutés au modèle de données. Une relation est établie entre le champ O_CUSTKEY dans ORDERS et le champ C_CUSTKEY dans 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);

Exemple : Élaboration d'un modèle de données Direct Query avec une table custom SQL

Dans cet exemple, le modèle de données Direct Query est élaboré avec une table custom SQL, C, avec les champs renommés C_KEY et C_BAL. Ensuite, IMPORT LIVE ajoute le modèle de données créé dans Gestionnaire de modèle de données depuis DirectQueryModel.main. Ce modèle de données contient la table Orders et comporte une relation existante entre Orders et Customer dans ce modèle. Ensuite, la relation existante entre Customers et Orders est abandonnée et une nouvelle relation est définie entre Orders et 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);

Exemple : Élaboration d'un modèle de données incluant des variables

Dans cet exemple, la variable MULT est définie d'abord par une valeur 100. Elle est ensuite appliquée sous forme de multiplicateur à la somme de PS_Supplycost pour calculer le champ 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;

Exemple : Élaboration d'un modèle de données avec des expressions Qlik

Dans cet exemple, les variables et les expressions sont utilisées pour créer le modèle de données. Dans la table ORDERS_AGGREGATIONS, les expressions sont utilisées pour définir les valeurs de ORDERS_GROUP_TOTAL_PRICE. Chaque fois que des sélections, effectuées dans une feuille, sont susceptibles d'avoir un impact sur les valeurs de ORDERS_GROUP_TOTAL_PRICE, l'expression est réévaluée sur les données renvoyées par la requête lancée auprès de la base de données.

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

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !