QlikWorld 2020 글로벌 컨퍼런스 데이터를 최대한 활용하는 방법을 알아 보려면 가입하십시오. 서두르세요. 지금 등록하면 할인된 가격으로 제공됩니다.

On-demand 템플릿 앱 만들기

On-demand 템플릿 앱은 하나의 중요한 차이점이 있는 일반 Qlik Sense 앱입니다. 해당 로드 스크립트에는 데이터 소스에서 만들어진 쿼리를 공식화하는 데 사용되는 데이터 바인딩 표현식이 포함되어 있습니다. 이러한 데이터 바인딩 표현식은 On-demand 앱 생성 시간에 사용되어 선택 앱의 선택 상태에서 값을 읽어서 이 값을 템플릿 앱 스크립트에 바인딩하여 생성된 앱에 사용자가 제어하는 데이터 하위 집합이 로드됩니다.

템플릿 앱은 일반적으로 선택 앱과 동일한 데이터 소스에 연결됩니다. 선택 앱의 로드 스크립트는 중요한 차원 및 측정값의 대화형 시각화를 제공하면서 데이터 볼륨을 줄이기 위해 일반적으로 집계된 데이터를 로드합니다. 템플릿 앱의 로드 스크립트는 보다 세밀한 데이터의 제어된 하위 집합을 로드하는 쿼리를 사용합니다.

참고: On-demand 템플릿 앱은 데이터를 직접 로드하지 않습니다. 템플릿 앱에서 데이터를 로드하려고 하면 오류가 발생합니다. 템플릿 앱 연결은 유효해야 하지만 연결이 제대로 작동하는지 테스트하려면 On-demand 앱을 생성해야 합니다. On-demand 앱이 생성되면 On-demand 선택 앱의 선택 상태를 로드하기 위해 On-demand 앱 서비스에서 로드 스크립트를 수정합니다. On-demand 앱이 오류 없이 생성되면 선택 앱과 템플릿 앱의 연결이 올바르게 작동하는 것입니다.

템플릿 앱의 구조

템플릿 앱은 On-demand 앱 탐색 링크를 사용하여 선택 앱에 연결됩니다. 앱 탐색 링크에는 On-demand 앱에 데이터가 로드될 때 쿼리되는 레코드 수를 제어하는 속성이 포함되어 있습니다. 템플릿 앱의 로드 스크립트에는 On-demand 앱에 데이터가 로드될 때 실행되는 쿼리를 공식화하는 데 사용되는 선택 앱의 필드 데이터를 지정하는 데이터 바인딩 표현식이 포함되어 있습니다.

참고: ProgramData\Qlik\Examples\OnDemandApp\sample에 설치된 Qlik Sense Enterprise on Windows에 샘플 On-demand 템플릿 앱이 포함되어 있습니다.

데이터 바인딩 표현식의 양식은 다음과 같습니다.

$(od_FIELDNAME)

od_ 접두사는 선택 앱의 선택 상태를 템플릿 앱에서 정의한 On-demand 앱의 로드 스크립트에 바인딩하는 데 사용됩니다. od_ 접두사 다음에 오는 데이터 바인딩 표현식 부분은 선택 앱의 필드와 일치하는 이름이어야 합니다. On-demand 앱이 생성되면 선택 앱의 현재 선택 상태는 각 필드에 대해 바인딩할 원하는 값을 가져오는 데 사용됩니다. 새로 만든 On-demand 앱의 로드 스크립트에 있는 $(od_FIELDNAME) 표현식은 발생할 때마다 선택 앱의 선택 상태에서 해당 필드에 대해 선택된 값 목록으로 대체됩니다.

INLINE load 문을 사용하여 값을 바인딩하는 방법에 대해 더 자세히 알아보려면 On-demand 템플릿 앱의 바인딩 표현식을 참조하십시오.

유효한 SQL 구문이 되게 하려면 여러 값에서 필터링하기 위해 템플릿 앱의 SELECT 문에 IN 절을 사용해야 합니다. 권장되는 방법은 올바른 WHERE 절을 만들기 위해 하위 루틴을 작성하는 것입니다.

SUB ExtendWhere(Name, ValVarName) LET T = Name & '_COLNAME'; LET ColName = $(T); LET Values = $(ValVarName); IF len(Values) > 0 THEN IF len(WHERE_PART) > 0 THEN LET WHERE_PART = '$(WHERE_PART) AND $(ColName) IN ( $(Values) )'; ELSE LET WHERE_PART = ' WHERE $(ColName) IN ( $(Values) )'; ENDIF ENDIF END SUB;

ExtendWhere 서브루틴을 호출하기 전에 WHERE_PART 변수를 설정해야 합니다.

SET WHERE_PART = '';

SQL 문에 선택 앱에서 삽입하는 절 외에 변경되지 않는 WHERE 절을 포함하려면 SET문에 'WHERE <condition>'을 삽입합니다. 그렇지 않으면 간단한 SET 문을 사용합니다.

다음은 ExtendedWhere 서브루틴 사용 방법에 대한 예입니다.

FOR EACH fldname IN 'ORIGIN', 'DEST', 'YEAR', 'QUARTER', 'ORIGIN_STATE_ABR', 'DEST_STATE_ABR' LET vallist = $(fldname); WHEN (IsNull(vallist)) LET vallist = ''; IF len(vallist) > 0 THEN CALL ExtendWhere('$(fldname)','vallist'); ENDIF NEXT fldname

필드 이름 목록은 사용자가 만든 각 필드 바인딩에 사용되는 필드 이름과 일치해야 합니다.

각 필드에 대한 값 목록이 작성되고 나면 SELECT 문을 작성할 수 있습니다. 예:

SQL SELECT "MKT_ID", "YEAR", "QUARTER", "ORIGIN", "ORIGIN_STATE_ABR", "DEST", "DEST_STATE_ABR", "TICKET_CARRIER", "FARE_CLASS", "PASSENGERS", "DISTANCE", 1 AS "FLIGHT_COUNT" FROM "SAPH7T"."/QT/AIRPORT_FACT" $(WHERE_PART);

SELECT 문의 $(WHERE_PART) 부분이 위에서 설명한 대로 FOR-NEXT 루프 실행으로 생성된 WHERE 절을 포함하도록 확장됩니다. SELECT 키워드를 수행하는 열 식 목록이 특정 데이터베이스 테이블의 열과 일치하도록 수정해야 합니다.

경고: On-demand 앱 바인딩 변수를 만들 때 템플릿 앱 모델의 필드 이름을 사용하지 않도록 합니다. 스크립트에 정의된 변수는 데이터 시각화를 만들 때 참조되는 템플릿 앱 모델에서 사용할 수 있습니다. 모델의 필드와 겹치지 않는 앱 바인딩 변수를 선택하면 템플릿 앱 모델의 필드와 데이터 로드 스크립트의 On-demand 앱 바인딩 변수 사이의 의도치 않은 혼동을 방지할 수 있습니다. 좋은 방법은 On-demand 앱 바인딩 변수에 대해 접두사를 설정하는 것입니다. 예를 들어 ORIGIN 대신 X_ORIGIN을 사용합니다.

단일 사인온(SSO)

On-demand 앱은 SSO를 지원하는 데이터 소스와 함께 single sign-on (SSO)을 사용할 수 있습니다. 엔진 및 데이터 소스는 SSO를 허용하도록 구성해야 합니다.

자세한 내용은 Qlik Sense에서 SAML 단일 사인온에 대해 SAP HANA 구성 (영어로만 제공)단일 사인온에 대해 Cloudera Impala 구성 (영어로만 제공)을 참조하십시오.

SSO에 대해 엔진 및 데이터 소스를 구성한 후 템플릿 앱은 템플릿 앱 스크립트에 다음 구문을 추가하여 SSO를 활성화해야 합니다.

///!ODAG_SSO

On-Demand App Service는 On-demand 앱이 생성될 때 및 On-demand 앱이 다시 로드될 때마다 스크립트를 구문 분석합니다.

On-demand 앱이 SSO에서 로드되면 최종 사용자의 ID가 데이터 소스로 전송됩니다. 최종 사용자는 템플릿 앱의 데이터 연결에서 사용되는 소스에 대한 액세스 권한이 있어야 합니다. 대규모 데이터 집합이 선택된 경우에도 사용자에게 해당 소스에 대한 액세스 권한이 있는 데이터만 로드됩니다.

경고: single sign-on (SSO)을 사용하는 템플릿 앱에서 생성된 On-demand 앱은 게시할 수 없습니다.

템플릿 앱에 대한 노드 다시 로드

관리자는 템플릿 앱에 부하 분산 규칙을 설정하여 다중 노드 환경에서 On-demand 앱을 다시 로드할 위치를 제어할 수 있습니다. 부하 분산 규칙이 설정되면 템플릿 앱에 대한 링크로 생성된 모든 앱이 템플릿 앱에 적용되는 규칙에 따라 로드됩니다. 자세한 내용은 on-demand 앱 관리 (영어로만 제공)를 참조하십시오.