기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

Direct Query에 대한 사용자 지정 SQL 예

다음 예에서는 Direct Query에 대한 사용자 지정 SQL을 사용할 때의 몇 가지 옵션을 보여 줍니다.

예: Direct Query 모델에 사용자 지정 SQL 정의 추가

이 예에서는 테이블 C, R, N에 대한 사용자 지정 SQL 정의가 두 개의 테이블 간 관계와 함께 Direct Query 앱의 데이터 모델에 추가됩니다. Coalesce 함수를 사용하면 N_NATIONKEY 필드 값이 C_NATIONKEY 값과 같은지, 둘 다 null인지 확인하는 데 사용됩니다.

팁 메모

Coalesce는 필드 값이 null인지 확인하는 검사를 포함하는 권장 방법입니다. 자세한 내용은 coalesce - 스크립트 및 차트 함수를 참조하십시오.

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_CUSTKEYC_ACCTBAL 필드가 있는 추가 테이블 C가 데이터 모델에 추가됩니다. ORDERSO_CUSTKEY 필드와 CC_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_KEYC_BAL이 있는 사용자 지정 SQL 테이블 C로 구성됩니다. 다음으로 IMPORT LIVEDirectQueryModel.main에서 데이터 모델 관리자로 만들어진 데이터 모델을 추가합니다. 이 데이터 모델에는 Orders 테이블이 포함되어 있으며 해당 모델에서 OrdersCustomer 사이에 기존 관계가 있습니다. 그러면 CustomersOrders의 기존 관계가 삭제되고 OrdersC 사이에 새로운 관계가 정의됩니다.

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

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 개선 방법을 알려 주십시오!