Ir para conteúdo principal Pular para conteúdo complementar

Exemplos de SQL personalizado para o Direct Query

Os exemplos a seguir mostram algumas das opções ao usar SQL personalizado para o Direct Query.

Exemplo: adicionando definições de SQL personalizado no modelo do Direct Query

Neste exemplo, definições de SQL personalizado para tabelas C, R, N são adicionadas ao modelo de dados no aplicativo Direct Query junto com dois relacionamentos entre tabelas. A função Coalesce é utilizada para verificar se o valor de um campo de N_NATIONKEY é igual ao valor de C_NATIONKEY, ou se ambos são iguais a nulo.

Nota de dica

Coalesce é a maneira recomendada de incluir uma verificação para ver se o valor de um campo é igual a nulo. Para obter mais informações, consulte coalesce – função de script e 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));

Exemplo: adicionando tabelas com SQL personalizado a um modelo de dados feito com o Gerenciador do modelo de dados

Neste exemplo, o modelo de dados do Direct Query é construído primeiro com o conteúdo do objeto DirectQueryModel.main, que foi criado com o Gerenciador do modelo de dados. Em seguida, uma tabela adicional, C com os campos C_CUSTKEY e C_ACCTBAL, é adicionada ao modelo de dados. É feito um relacionamento entre o campo O_CUSTKEY no ORDERS com o campo C_CUSTKEY no 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);

Exemplo: construindo um modelo de dados do Direct Query com uma tabela de SQL personalizado

Neste exemplo, o modelo de dados do Direct Query é construído com uma tabela de SQL personalizado, C, com os campos renomeados C_KEY e C_BAL. Em seguida, o IMPORT LIVE adiciona o modelo de dados criado no Gerenciador do modelo de dados a partir de DirectQueryModel.main. Este modelo de dados contém a tabela Pedidos e possui um relacionamento existente entre Orders e Customer e nesse modelo. Então, o relacionamento existente entre Customers e Orders é eliminado e um novo relacionamento é definido entre Orders e 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);

Exemplo: construindo um modelo de dados incluindo variáveis

Neste exemplo, a variável MULT é definida primeiro com um valor de 100. Em seguida, é aplicado como multiplicador à soma de PS_Supplycost para calcular o 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;

Exemplo: construindo um modelo de dados com expressões Qlik

Neste exemplo, tanto variáveis quanto expressões são usadas para construir o modelo de dados. Na tabela ORDERS_AGGREGATIONS, são usadas expressões para definir os valores em ORDERS_GROUP_TOTAL_PRICE. Sempre que forem feitas seleções em uma pasta que possam impactar os valores em ORDERS_GROUP_TOTAL_PRICE, a expressão será reavaliada nos dados retornados pela consulta ao banco de dados.

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 ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!