# Direct Query을 사용하여 클라우드 데이터베이스에 직접 액세스하기

데이터를 메모리에 가져오거나 로드할 필요 없이 SQL 데이터베이스를 읽으려면 Direct Query을 사용합니다.

Direct Query은 사용자가 개별 요구 사항에 맞게 데이터에 액세스하는 방법에 대한 더 많은 옵션을 제공합니다. Direct Query을 통해 데이터에 액세스하면 사용자는 데이터를 기본 데이터 소스에 유지할 수 있습니다. 이는 인메모리 Qlik Cloud 응용 프로그램이 제공하는 유연성 대신 사용자가 데이터와 상호 작용하는 속도를 높여 줍니다.

일반적으로 가능하면 항상 데이터를 Qlik Cloud에 가져오는 것이 좋습니다. 인메모리 Qlik Cloud 응용 프로그램은 환경을 더 잘 사용자 지정하고 데이터를 최대한 활용할 수 있도록 해 줍니다. 그러나 데이터를 가져오는 것으로는 목표를 달성할 수 없는 상황이라면 Direct Query이 해결책이 될 수 있습니다. 간소화된 기능 덕분에 Direct Query 응용 프로그램은 새로운 사용자가 완벽하게 작동하고 빠른 인메모리 응용 프로그램을 만드는 첫 걸음을 내딛는 데 도움이 될 수도 있습니다.

데이터 모델 관리자를 사용하여 테이블 및 필드를 선택하고 이들 간의 관계를 정의하여 Direct Query 응용 프로그램을 만들 수 있습니다. 자세한 내용은 [Direct Query 응용 프로그램 만들기](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/create-direct-query-app.htm)을 참조하십시오.

로드 스크립트에서 사용자 지정 SQL을 사용하여 Direct Query 응용 프로그램의 데이터 모델을 정의할 수도 있습니다. 이를 통해 데이터 모델을 빌드하는 동안 변수 및 Qlik 표현식을 사용할 수 있습니다. 자세한 내용은 [사용자 지정 SQL을 사용하여 Direct Query 응용 프로그램 만들기](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/create-data-model-custom-sql.htm)을 참조하십시오.

## Direct Query 사용 사례 예

다음과 같은 경우에는 인메모리 응용 프로그램 대신 Direct Query을 사용하는 것을 고려할 수 있습니다.

Direct QueryDirect Query 사용 사례

| 사용 사례 | 목적 및 설명 |
| --- | --- |
| 대용량 데이터 소스 | Direct Query은 행이 2,000만 개 이상인 응용 프로그램의 경우 초기화가 더 빠르고 리소스를 덜 소모합니다. 이는 응용 프로그램이 주로 모니터링 또는 상태 보고에 사용되고 선택이 거의 또는 전혀 수행되지 않는 경우에 매우 유용할 수 있습니다. |
| 효율적인 인메모리 응용 프로그램 | Direct Query은 영향을 받는 모든 테이블에 필터링을 적용하여 데이터 슬라이스를 Qlik Cloud 엔진으로 빠르고 쉽게 추출하는 기능을 제공합니다. 자세한 내용은 [Direct Query 응용 프로그램 설정을 템플릿 응용 프로그램으로 내보내기](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/export-to-template-app-direct-query.htm)을 참조하십시오. |
| 라이트백용 Direct Query | Qlik Automate 기반의 라이트백이 기본 데이터베이스 데이터를 수정하도록 설정된 경우, Direct Query은 수정된 데이터베이스 결과를 직접 표시할 수 있습니다. 인메모리 응용 프로그램에서 동일한 기능을 사용하려면 사용자가 수정된 테이블을 다시 가져와야 합니다. |
| 새 데이터베이스 및 테이블 탐색 | Direct Query을 사용하여 새롭거나 익숙하지 않은 데이터베이스 및 테이블을 탐색할 수 있습니다. 이를 통해 사용자는 기본 데이터 소스에서 데이터를 가져와야 하는지 여부에 대해 정보에 입각한 결정을 내릴 수 있습니다. |

## 자습서

Qlik Sense 응용 프로그램 사용 방법에 대한 자습서는 [자습서 - 기본 정보](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Tutorials/introduction-beginning-with-basics.htm)을 참조하십시오.

Direct Query에 대한 자습서는 다음을 참조하십시오.

* [Direct Query - 1부: 개요 및 작동](https://www.youtube.com/watch?v=ZiTgqYvFFho)

* [Direct Query - 2부: ODAG(On Demand Application Generation)를 사용한 하이브리드 분석 솔루션](https://www.youtube.com/watch?v=15uIcFY6DJc)

정보 메모Qlik Cloud의 Direct Query 기능은 QlikView의 Direct Query 문과 다릅니다. 자세한 내용은 [Direct Query.](https://help.qlik.com/ko-KR/qlikview/May2022/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/direct-query.htm)를 참조하십시오.

## 지원되는 기능

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개 이상의 모든 기호

    * "?" - 단일 기호

  * 범위 기반 검색("&gt;", "&lt;", "&gt;=", "&lt;=" 기준):

    * 수치 값의 경우 수치 값을 기준으로 하한/상한 경계가 감지됩니다. 예를 들어 &gt;10&lt;100은 &lt;100&gt;10과 동일합니다. 둘 다 [SearchedField] &gt; 10 AND [SearchedField] &lt; 100으로 해석됩니다.

    * 기타 데이터 유형의 경우 검색 조건에서의 순서에 따라 하한/상한 경계가 감지됩니다. 예를 들어 &gt;Value1&lt;Value2는 &lt;Value2&gt;Value1과 동일하지 않습니다. 두 번째 경우 Value2는 하한 경계에 해당하는 것으로 간주되어 [SearchedField] &lt; Value2 OR [SearchedField] &gt; Value1로 해석됩니다.

  * 표현식이 Direct Query 제한 사항을 충족한다고 가정한 표현식 기반 검색.

  정보 메모인메모리 검색 기능의 전체 목록은 [선택 항목 또는 시각화 내에서 검색](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Selections/SelectionsToolbar/search-selections.htm)을 참조하십시오.

* $(=...) 표현식의 Qlik 엔진 함수.

  Direct Query의 KPI 또는 사용자 지정 SQL 표현식 내에서 다음 Qlik 스크립트 및 차트 함수를 사용할 수 있습니다.

  * [**GetUserAttr**](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

  * [**if**](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/if.htm)

  * [**Chr**](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Chr.htm)

  * [**Replace**](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Replace.htm)

  * 리터럴 및 문자열 연산자

  위 옵션 중 하나 이상을 사용하는 표현식은 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'이라고 가정하면 위의 표현식 확장은 다음 순서로 진행됩니다.

  1. 원격 SQL 데이터베이스를 통해 비엔진 함수인 $(=CHAR(111))을 확장하여 소문자 o를 얻습니다.

  2. CHR(48) 엔진 함수를 문자 "0'으로 확장합니다.

  3. GetUserAttr('userEmail')을 'root@qlik.com'으로 확장합니다.

  4. 마지막으로 ‘$(=Replace('root@qlik.com', ‘o' , ‘0’)’을 확장하여 최종 결과 'r00t@qlik.com'을 얻습니다.

* [Direct Query 제한 사항](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/limitations-direct-query.htm)
* [Direct Query 응용 프로그램에서 ODAG 링크 만들기](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/create-odag-links-direct-query.htm)
* [지원되는 데이터 유형](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/data_type_direct_query.htm)