다음 예에서는 Direct Query에 대한 사용자 지정 SQL을 사용할 때의 몇 가지 옵션을 보여 줍니다.
예: Direct Query 모델에 사용자 지정 SQL 정의 추가
이 예에서는 테이블 C, R, N에 대한 사용자 지정 SQL 정의가 두 개의 테이블 간 관계와 함께 Direct Query 앱의 데이터 모델에 추가됩니다. Coalesce 함수를 사용하면 N_NATIONKEY 필드 값이 C_NATIONKEY 값과 같은지, 둘 다 null인지 확인하는 데 사용됩니다.
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));
예: 데이터 모델 관리자로 만든 데이터 모델에 사용자 지정 SQL이 포함된 테이블 추가
이 예에서 Direct Query 데이터 모델은 먼저 데이터 모델 관리자로 만들어진 DirectQueryModel.main 개체의 콘텐츠로 구성됩니다. 그런 다음 C_CUSTKEY 및 C_ACCTBAL 필드가 있는 추가 테이블 C가 데이터 모델에 추가됩니다. ORDERS의 O_CUSTKEY 필드와 C의 C_CUSTKEY 필드 사이에 관계가 형성됩니다.
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);
예: 사용자 지정 SQL 테이블을 사용하여 Direct Query 데이터 모델 구성
이 예에서 Direct Query 데이터 모델은 이름이 변경된 필드 C_KEY 및 C_BAL이 있는 사용자 지정 SQL 테이블 C로 구성됩니다. 다음으로 IMPORT LIVE는 DirectQueryModel.main에서 데이터 모델 관리자로 만들어진 데이터 모델을 추가합니다. 이 데이터 모델에는 Orders 테이블이 포함되어 있으며 해당 모델에서 Orders와 Customer 사이에 기존 관계가 있습니다. 그러면 Customers와 Orders의 기존 관계가 삭제되고 Orders와 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);
예: 변수를 포함하는 데이터 모델 구성
이 예에서는 변수 MULT이 값 100으로 먼저 정의됩니다. 그런 다음 PS_Supplycost 합계에 승수로 적용되어 필드 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;
예: Qlik 표현식을 사용하여 데이터 모델 구성
이 예에서는 변수와 표현식이 모두 데이터 모델을 구축하는 데 사용됩니다. 테이블 ORDERS_AGGREGATIONS에서는 ORDERS_GROUP_TOTAL_PRICE의 값을 정의하기 위해 수식을 사용합니다. ORDERS_GROUP_TOTAL_PRICE의 값에 영향을 줄 수 있는 선택이 시트에서 이루어질 때마다 데이터베이스에 대한 쿼리에 의해 반환된 데이터에 대해 표현식이 다시 평가됩니다.
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;
;
이 페이지가 도움이 되었습니까?
이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 개선 방법을 알려 주십시오!