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!