사용자 지정 SQL을 사용하여 Direct Query 앱 만들기
Direct Query 앱에서 사용자 지정 SQL 쿼리를 사용하여 로드 스크립트에서 데이터 모델을 만듭니다. 사용자 지정 SQL은 데이터 모델 관리자를 사용하여 Direct Query에 대한 데이터 모델을 정의하는 대신 사용할 수 있습니다.
사용자 지정 SQL을 사용하여 Direct Query 데이터 모델을 만들면 SQL 문을 사용하여 SQL 쿼리 자체에서 만들어진 테이블과 필드를 정의할 수 있습니다. 또한 Qlik 앱의 사용자 지정 SQL 문은 사용자 지정 SQL 문에서 로드 스크립트 변수와 Qlik 표현식 매크로를 사용할 수 있습니다. 이를 통해 보다 동적인 데이터 모델이 가능하고 사용자 지정 SQL 정의 테이블과 열이 변수 또는 표현식 평가 결과에 맞게 조정될 수 있습니다.
사용자 지정 SQL은 로드 스크립트에서 자체적으로 사용할 수 있습니다. 데이터 로드 편집기에서 데이터 모델 관리자와 사용자 지정 SQL을 조합하여 데이터 모델을 정의할 수도 있습니다.
데이터 모델의 일부를 데이터 모델 관리자로 지정할 수 있는 경우 최적의 SQL 성능을 위해 데이터 모델 관리자를 사용하여 해당 부분을 지정합니다. 데이터 모델 관리자는 정의된 데이터 모델에서 Direct Query 쿼리를 실행할 때 사용할 테이블 정의에 더 효율적입니다.
사용자 지정 SQL을 사용하여 데이터 모델을 만들려면 다음을 수행합니다.
-
로드 스크립트에 section directquery를 추가합니다.
로드 스크립트에는 하나의 SECTION DIRECTQUERY 섹션만 존재할 수 있습니다. 섹션은 로드 스크립트의 마지막 섹션이어야 합니다.
데이터 모델 관리자로 데이터 모델을 정의하지 않았더라도 로드 스크립트에 LIB CONNECT 문, section directquery 문을 추가하고 스크립트를 로드하면 앱이 Direct Query 앱으로 변합니다.
-
다음 문을 사용하여 데이터 모델을 구축합니다.
-
SELECT
SELECT 문을 사용하여 로드할 테이블과 열을 선택합니다. 예: <TableName> SELECT <custom SQL>.
로드 스크립트에서 고유한 테이블 이름을 정의하지 않으면 테이블 이름이 Table<스크립트 줄 번호>로 지정됩니다.
-
CREATE RELATIONSHIP
CREATE RELATIONSHIP을 사용하여 데이터 모델의 필드와 테이블 간의 관계를 정의합니다.
-
DROP RELATIONSHIP
DROP RELATIONSHIP을 사용하여 데이터 모델에서 이전에 정의된 관계를 삭제합니다.
-
DROP TABLE
DROP TABLE 을 사용하여 테이블 간의 충돌 가능성을 피하기 위해 데이터 모델에서 이전에 정의된 테이블을 삭제합니다.
-
LET, SET
LET 및 SET 문을 사용하여 변수 또는 Qlik 표현식을 정의합니다.
테이블과 필드의 이름은 데이터 모델 전체에서 고유하게 지정되어야 합니다. 데이터 모델 관리자에서 테이블을 정의한 후 사용자 지정 SQL에서 테이블을 재정의하려고 하면 데이터 모델 관리자에서 만들어진 테이블을 삭제하거나 사용자 지정 SQL에서 테이블과 필드의 이름을 바꾸지 않으면 실패합니다.
-
section directquery 섹션 내에서 지원되지 않는 스크립트 문은 데이터를 로드할 때 발생하는 오류를 생성합니다. 스크립트 디버깅 또는 강제 계속에 대한 모든 설정은 무시됩니다.
사용자 지정 SQL 로드 스크립트의 예는 Direct Query에 대한 사용자 지정 SQL 예를 참조하십시오.
사용자 지정 SQL, 변수 및 표현식
Direct Query의 사용자 지정 SQL 정의를 사용하면 사용자 지정 SQL 문 내에서 스크립트 변수와 Qlik 표현식 매크로를 모두 사용할 수 있습니다.
이 기능은 변수 또는 Qlik 표현식 평가 결과에 맞게 조정되는 사용자 지정 SQL 정의 테이블 및 열을 사용하여 앱의 데이터 모델에 동적 변수 및 표현식 영향력과 유연성을 제공합니다.
사용자 지정 SQL의 변수
SET 또는 LET 문을 사용하여 변수를 정의합니다. $(<variable name>) 형식을 사용하여 로드 스크립트에 변수를 추가합니다.
사용자 지정 SQL의 변수 참조는 다시 로드 시 평가됩니다. 앱 사용 중 변수 값이 변경된 경우, 스크립트 다시 로드를 수행하지 않으면 해당 변수를 사용하는 사용자 지정 SQL에 변경 내용이 반영되지 않습니다.
사용자 지정 SQL 정의에 동적 변수를 원하는 경우 변수를 Qlik 표현식의 일부로 참조하여 해당 사용자 지정 SQL 정의를 사용하는 모든 쿼리 실행에서 해당 변수가 평가되도록 합니다.
변수에 대한 자세한 내용은 데이터 로드 편집기에서 변수를 사용하여 작업을 참조하십시오.
사용자 지정 SQL의 표현식
표현식을 사용하면 앱 데이터 모델의 테이블과 열을 나타내기 위해 원격 데이터베이스로 전송되는 사용자 지정 SQL의 콘텐츠를 수정할 수 있습니다. 데이터 모델에 사용되는 표현식은 단일 값으로 확인되어야 합니다.
표현식이 단일 값으로 평가되는지 테스트하려면 KPI에 표현식으로 추가합니다. 작동하는 경우 사용자 지정 SQL에서 표현식을 사용할 수 있습니다.
해당 SQL 정의를 사용하는 모든 쿼리 실행에서 표현식은 동적으로 평가됩니다. 테이블 또는 필드의 사용자 지정 SQL 문이 쿼리 실행 중에 Qlik 표현식을 사용할 때마다 해당 Qlik 표현식이 먼저 평가되어 표현식의 현재 결과를 검색합니다. 이러한 결과는 원본 쿼리를 대신하여 실행되도록 사용자 지정 SQL 문에 삽입됩니다. Qlik 표현식을 평가하면 원격 데이터베이스에 대한 SQL 쿼리가 생성될 수도 있습니다. Qlik 표현식을 평가하면 원격 데이터베이스에 대한 SQL 쿼리가 생성될 수도 있습니다.
로드 중에 표현식이 확장되지 않으면 null 값이 반환됩니다. 이는 사용자의 표현식이 유효하지 않다는 의미는 아닙니다. 평가를 위해 앱에서 사용자가 표현식을 선택해야 할 수도 있습니다.
사용자 지정 SQL 및 데이터 모델 관리자를 사용하여 데이터 모델 만들기
사용자 지정 SQL과 데이터 모델 관리자의 조합을 사용하여 Direct Query에 대한 데이터 모델을 만들 수 있습니다. 그러나 몇 가지 실제 고려 사항이 있습니다.
-
가장 좋은 방법은 로드 스크립트에 사용자 지정 SQL을 추가하기 전에 데이터 모델 관리자에서 수행하려는 모든 모델링을 완료하는 것입니다. 사용자 지정 SQL과 데이터 모델 관리자는 데이터 모델 관리자를 사용하여 로드된 테이블과 필드 간의 관계를 정의하고, 사용자 지정 SQL을 추가 사용자 지정에 사용할 때 함께 사용하는 것이 가장 좋습니다.
-
데이터 모델 관리자로 만들어진 데이터 모델 부분과 사용자 지정 SQL로 만들어진 부분은 별도로 관리되었다가 스크립트를 다시 로드하는 도중 함께 결합됩니다. 데이터 모델 관리자는 사용자 지정 SQL에서 정의한 데이터 모델을 표시하지 않습니다. 전체 데이터 모델 보기를 보려면 데이터 모델 뷰어를 사용합니다.
-
데이터 모델 관리자로 만들어진 데이터 모델과 사용자 지정 SQL로 정의된 데이터 모델은 동일한 데이터베이스 연결을 사용해야 합니다.
-
로드 스크립트에 추가된 IMPORT LIVE 문을 데이터 모델 관리자로 이동할 수 있습니다. 로드 스크립트는 순차적으로 평가되므로 새 위치가 사용자 지정 SQL 요구 사항에 영향을 미칠 수 있습니다. 예를 들어, 최종 데이터 모델에서 원치 않는 관계가 만들어지거나 테이블 이름이 중복될 수 있습니다.
-
테이블과 필드의 이름은 데이터 모델 전체에서 고유하게 지정되어야 합니다. 데이터 모델 관리자에서 테이블을 정의한 후 사용자 지정 SQL에서 테이블을 재정의하려고 하면 데이터 모델 관리자에서 만들어진 테이블을 삭제하거나 사용자 지정 SQL에서 테이블과 필드의 이름을 바꾸지 않으면 실패합니다.
제한 사항
Direct Query에 대한 사용자 지정 SQL에는 다음과 같은 제한 사항이 있습니다.
-
사용자 지정 SQL은 단일 데이터베이스만 사용할 수 있습니다.
-
Qlik 표현식 매크로가 포함된 하나 이상의 사용자 지정 SQL 문을 사용하는 Direct Query 앱은 On-Demand 앱의 선택 앱으로 사용할 수 없습니다. 이는 인 메모리 앱인 생성된 템플릿 앱이 로드 스크립트에서 Qlik 표현식 매크로를 지원할 수 없기 때문입니다.
-
Direct Query 사용자 지정 SQL은 분석 활동 센터에 추가된 스크립트에 지원되지 않습니다. 스크립트에 대한 자세한 내용은 카탈로그의 스크립트 작업을 참조하십시오.