Direct Query을 사용하여 클라우드 데이터베이스에 직접 액세스하기
데이터를 메모리에 가져오거나 로드할 필요 없이 SQL 데이터베이스를 읽으려면 Direct Query을 사용합니다.
Direct Query은 사용자가 개별 요구 사항에 맞게 데이터에 액세스하는 방법에 대한 더 많은 옵션을 제공합니다. Direct Query을 통해 데이터에 액세스하면 사용자는 데이터를 기본 데이터 소스에 유지할 수 있습니다. 이는 인메모리 Qlik Cloud 응용 프로그램이 제공하는 유연성 대신 사용자가 데이터와 상호 작용하는 속도를 높여 줍니다.
일반적으로 가능하면 항상 데이터를 Qlik Cloud에 가져오는 것이 좋습니다. 인메모리 Qlik Cloud 응용 프로그램은 환경을 더 잘 사용자 지정하고 데이터를 최대한 활용할 수 있도록 해 줍니다. 그러나 데이터를 가져오는 것으로는 목표를 달성할 수 없는 상황이라면 Direct Query이 해결책이 될 수 있습니다. 간소화된 기능 덕분에 Direct Query 응용 프로그램은 새로운 사용자가 완벽하게 작동하고 빠른 인메모리 응용 프로그램을 만드는 첫 걸음을 내딛는 데 도움이 될 수도 있습니다.
데이터 모델 관리자를 사용하여 테이블 및 필드를 선택하고 이들 간의 관계를 정의하여 Direct Query 응용 프로그램을 만들 수 있습니다. 자세한 내용은 Direct Query 응용 프로그램 만들기을 참조하십시오.
로드 스크립트에서 사용자 지정 SQL을 사용하여 Direct Query 응용 프로그램의 데이터 모델을 정의할 수도 있습니다. 이를 통해 데이터 모델을 빌드하는 동안 변수 및 Qlik 표현식을 사용할 수 있습니다. 자세한 내용은 사용자 지정 SQL을 사용하여 Direct Query 응용 프로그램 만들기을 참조하십시오.
Direct Query 사용 사례 예
다음과 같은 경우에는 인메모리 응용 프로그램 대신 Direct Query을 사용하는 것을 고려할 수 있습니다.
| 사용 사례 | 목적 및 설명 |
|---|---|
| 대용량 데이터 소스 | Direct Query은 행이 2,000만 개 이상인 응용 프로그램의 경우 초기화가 더 빠르고 리소스를 덜 소모합니다. 이는 응용 프로그램이 주로 모니터링 또는 상태 보고에 사용되고 선택이 거의 또는 전혀 수행되지 않는 경우에 매우 유용할 수 있습니다. |
| 효율적인 인메모리 응용 프로그램 | Direct Query은 영향을 받는 모든 테이블에 필터링을 적용하여 데이터 슬라이스를 Qlik Cloud 엔진으로 빠르고 쉽게 추출하는 기능을 제공합니다. 자세한 내용은 Direct Query 응용 프로그램 설정을 템플릿 응용 프로그램으로 내보내기을 참조하십시오. |
| 라이트백용 Direct Query | Qlik Automate 기반의 라이트백이 기본 데이터베이스 데이터를 수정하도록 설정된 경우, Direct Query은 수정된 데이터베이스 결과를 직접 표시할 수 있습니다. 인메모리 응용 프로그램에서 동일한 기능을 사용하려면 사용자가 수정된 테이블을 다시 가져와야 합니다. |
| 새 데이터베이스 및 테이블 탐색 | Direct Query을 사용하여 새롭거나 익숙하지 않은 데이터베이스 및 테이블을 탐색할 수 있습니다. 이를 통해 사용자는 기본 데이터 소스에서 데이터를 가져와야 하는지 여부에 대해 정보에 입각한 결정을 내릴 수 있습니다. |
자습서
Qlik Sense 응용 프로그램 사용 방법에 대한 자습서는 자습서 - 기본 정보을 참조하십시오.
Direct Query에 대한 자습서는 다음을 참조하십시오.
지원되는 기능
Direct Query 응용 프로그램은 인메모리 응용 프로그램과 비교하여 다른 기능을 제공합니다.
Direct Query은 다음을 지원합니다.
-
데이터 연결 유형:
정보 메모Direct Query에서는 Qlik 데이터 게이트웨이 - 직접 액세스 데이터 연결을 사용할 수 없습니다.-
Amazon Redshift
-
Azure SQL
-
Azure Synapse Analytics
-
Databricks
-
Google BigQuery
-
Microsoft SQL Server
-
PostgreSQL
-
Snowflake
정보 메모데이터 연결에서는 스칼라 함수의 하위 집합이 지원됩니다. -
-
인메모리 데이터 분석 에뮬레이션:
-
집합 분석의 하위 집합.
-
임의의 복잡한 모델에 대한 다중 테이블 차트. 인메모리 응용 프로그램에 대한 기존 모델 요구 사항은 여전히 적용됩니다. 예를 들어 테이블 간의 연결 루프는 허용되지 않습니다.
-
기본 집계 유형:
-
Sum
-
Count
-
Min
-
Max
-
Avg
-
Only
-
-
기본 데이터베이스에서 제공하는 함수 및 연산 집합을 기반으로 하는 집계 전 및 집계 후 계산.
-
-
테이블 관계 유형:
-
내부 조인
-
전체 외부 조인
-
-
반복적 모델링 및 대시보드 생성.
-
시각화 기능:
-
표준 차트:
-
막대 차트
-
불릿 차트
-
버튼
-
콤보 차트
-
컨테이너
-
필터 창
-
게이지
-
KPI
-
꺾은선형 차트
-
지도
-
메코 차트
-
원형 차트
-
산점도
-
테이블
-
텍스트 및 이미지
-
폭포수 차트
-
-
대시보드 번들:
-
비디오 플레이어
-
변수 입력
-
-
시각화 번들:
-
깔때기형
-
다중 KPI
-
레이더
-
생키
-
워드 클라우드
-
-
-
필드 검색 기능의 하위 집합:
-
특수 기호(예: 패턴 검색의 경우 "*" 및 "?", 표현식 기반 검색의 경우 "=")가 없는 검색 문자열은 전체 문자열 값에 대한 접두사 검색으로 해석됩니다.
-
패턴 검색 기호 및 기능:
-
"*" - 0개 이상의 모든 기호
-
"?" - 단일 기호
-
-
범위 기반 검색(">", "<", ">=", "<=" 기준):
-
수치 값의 경우 수치 값을 기준으로 하한/상한 경계가 감지됩니다. 예를 들어 >10<100은 <100>10과 동일합니다. 둘 다 [SearchedField] > 10 AND [SearchedField] < 100으로 해석됩니다.
-
기타 데이터 유형의 경우 검색 조건에서의 순서에 따라 하한/상한 경계가 감지됩니다. 예를 들어 >Value1<Value2는 <Value2>Value1과 동일하지 않습니다. 두 번째 경우 Value2는 하한 경계에 해당하는 것으로 간주되어 [SearchedField] < Value2 OR [SearchedField] > Value1로 해석됩니다.
-
-
표현식이 Direct Query 제한 사항을 충족한다고 가정한 표현식 기반 검색.
정보 메모인메모리 검색 기능의 전체 목록은 선택 항목 또는 시각화 내에서 검색을 참조하십시오. -
-
$(=...) 표현식의 Qlik 엔진 함수.
Direct Query의 KPI 또는 사용자 지정 SQL 표현식 내에서 다음 Qlik 스크립트 및 차트 함수를 사용할 수 있습니다.
-
리터럴 및 문자열 연산자
위 옵션 중 하나 이상을 사용하는 표현식은 Qlik 엔진 내에서만 확장됩니다.
정보 메모동일한 단일 $(=...) 표현식 내에서 원격 기본 SQL 함수와 Qlik 엔진 함수를 혼합하여 사용하는 것은 지원되지 않습니다.Qlik 엔진 함수 사용과 원격 SQL 데이터베이스 함수(선택적으로 + 집합/선택 포함)를 결합하려면 중첩된 $(=...) 표현식을 사용합니다.
$(= ...<EngineFuncs> ... $(=... <set/selection &| Native SQL funcs>) ... )
예:
'$(=Replace(GetUserAttr('userEmail'), '$(=Char(111))' , Chr(48)))'
위의 중첩된 표현식 예에서 Replace(), GetUserAttr() 및 Chr() 함수는 Qlik 엔진 함수이며 가장 바깥쪽 $(=…) 표현식에 둘러싸여 있습니다. 그러나 중첩된 $(=Char(111)) 표현식은 엔진 함수를 참조하지 않습니다. 이는 원격 SQL 데이터베이스 함수(예: MS SQL)입니다.
Qlik Cloud에서 사용자의 이메일이 'root@qlik.com'이라고 가정하면 위의 표현식 확장은 다음 순서로 진행됩니다.
-
원격 SQL 데이터베이스를 통해 비엔진 함수인 $(=CHAR(111))을 확장하여 소문자 o를 얻습니다.
-
CHR(48) 엔진 함수를 문자 "0'으로 확장합니다.
-
GetUserAttr('userEmail')을 'root@qlik.com'으로 확장합니다.
-
마지막으로 ‘$(=Replace('root@qlik.com', ‘o' , ‘0’)’을 확장하여 최종 결과 'r00t@qlik.com'을 얻습니다.