Saltar al contenido principal Saltar al contenido complementario

Ejemplos de SQL personalizado para Direct Query

Los ejemplos siguientes muestran algunas de las opciones al utilizar SQL personalizado para Direct Query.

Ejemplo: Agregar definiciones SQL personalizadas al modelo de Direct Query

En este ejemplo se agregan definiciones SQL personalizadas para las tablas C, R y N al modelo de datos de la app de Direct Query junto con dos relaciones entre tablas. El uso de la función Coalesce se utiliza para comprobar si el valor de un campo N_NATIONKEY es igual al valor de C_NATIONKEY, o si ambos son iguales a nulo.

Nota de sugerencia

Coalesce es la forma recomendada de incluir una verificación para ver si el valor de un campo es igual a nulo. Para más información, vea coalesce - función de script y de gráfico.

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

Ejemplo:Agregar tablas con SQL personalizado a un modelo de datos creado con Gestor del modelo de datos

En este ejemplo, el modelo de datos de Direct Query se construye primero con el contenido del objeto DirectQueryModel.main que se creó con Gestor del modelo de datos. Luego se agrega una tabla adicional C con los campos C_CUSTKEY y C_ACCTBAL al modelo de datos. Se establece una relación entre el campo O_CUSTKEY en ORDERS con el campo C_CUSTKEY en 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);

Ejemplo:Crear un modelo de datos de Direct Query con una tabla SQL personalizada

En este ejemplo, el modelo de datos de Direct Query se construye con una tabla SQL personalizada, C, con los campos renombrados C_KEY y C_BAL. A continuación, IMPORT LIVE agrega el modelo de datos creado en Gestor del modelo de datos desde DirectQueryModel.main. Este modelo de datos contiene la tabla Pedidos y una relación existente entre Orders y Customer en dicho modelo. Luego, la relación existente entre Customers y Orders se elimina y se define una nueva relación entre Orders y 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);

Ejemplo: Construir un modelo de datos que incluya variables

En este ejemplo, la variable MULT se define primero con un valor de 100. Después, se aplica como multiplicador a la suma de PS_Supplycost para calcular el campo 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;

Ejemplo: Crear un modelo de datos con expresiones de Qlik

En este ejemplo, se utilizan variables y expresiones para construir el modelo de datos. En la tablaORDERS_AGGREGATIONS, se utilizan expresiones para definir los valores en ORDERS_GROUP_TOTAL_PRICE. Siempre que se realicen selecciones en una hoja que puedan afectar los valores de ORDERS_GROUP_TOTAL_PRICE, la expresión se volverá a evaluar en los datos devueltos por la consulta a la base de datos.

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

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.