기본 콘텐츠로 건너뛰기

On-demand 템플릿 앱의 바인딩 표현식

템플릿 앱의 데이터 바인딩은 On-demand 앱에 데이터가 로드될 때 실행되는 쿼리를 공식화하는 데 사용되는 해당 선택 앱의 데이터를 지정합니다.

바인딩 표현식의 기본 형식($(odag_FIELDNAME))이 표현식을 바인딩하는 데 사용할 수 있는 유일한 방법은 아닙니다. 다른 접두사를 사용하여 선택 내용을 세분화하고 탬플릿 앱이 데이터를 정확하게 로드할 수 있도록 할 수 있습니다.

경고: 원래 On-demand App GenerationQlik Sense 확장을 사용하여 만든 템플릿 앱은 필드의 다양한 선택 내용을 바인딩하기 위해 아래 설명된 방법을 사용하여 변경해야 합니다.

사용 가능한 바인딩 접두사

일반 접두사 형식은 odag[s|o][n][cnt]입니다. 여기서,

  • s - 선택한 값만 포함
  • o - 선택적 값만 포함
  • n - 숫자 버전 선택, 기본적으로 인용 부호로 묶지 않음
  • cnt - 실제 값 대신 값 수 삽입

다음 표에는 사용 가능한 바인딩 접두사의 모든 버전 목록이 나와 있습니다. 이 예에서는 필드 이름 MyField를 1,2,3(선택한 값(녹색 값))으로 가정하고 4(선택한 선택적 값(흰색 값)인)로 가정합니다.

바인딩 접두사
접두사 설명 대체 값
odag_ 선택한 값(녹색)과 선택적 값(흰색)으로 대체됩니다. 값의 텍스트 버전을 선택합니다. 이 접두사는 문자열 값의 표준 접두사입니다. $(odag_MyField) '1','2','3','4'
odagcnt_ 해당 odag_ 바인딩의 값 수로 대체됩니다. 이 접두사는 쿼리 최적화에 사용됩니다. $(odagcnt_MyField) 4
odagn_

선택한 값(녹색)과 선택적 값(흰색)으로 대체됩니다. 값의 숫자 버전을 선택합니다. 이 접두사는 숫자 값의 표준 접두사입니다.

참고:

데이터 모델이 선택된 값이나 선택적 필드 값이 없는 경우 표현식에서 noValue를 지정해야 합니다. 예: $(odagn_MyField){"noValue":"-99999"}.

자세한 내용은 값 따옴표 및 구분 기호 변경을 참조하십시오.

$(odagn_MyField) 1,2,3,4
odagncnt_ 해당 odagn_ 바인딩의 값 수로 대체됩니다. 이 접두사는 쿼리 최적화용입니다. $(odagncnt_MyField) 4
odago_

선택적 값(흰색)으로 대체됩니다. 값의 텍스트 버전을 선택합니다. 이 접두사는 쿼리 최적화용입니다.

대규모 데이터베이스 최적화.

$(odago_MyField) '4'
odagocnt_ 해당 odago_ 바인딩의 값 수로 대체됩니다. 이 접두사는 쿼리 최적화용입니다. $(odagocnt_MyField) 1
odagon_

선택적 값(흰색)으로 대체됩니다. 값의 숫자 버전을 선택합니다. 이 접두사는 쿼리 최적화용입니다.

대규모 데이터베이스 최적화.

$(odagon_MyField) 4
odagoncnt_ 해당 odagon_ 바인딩의 값 수로 대체됩니다. 이 접두사는 쿼리 최적화용입니다. $(odagoncnt_MyField) 1
odags_

선택한 값(녹색)으로 대체됩니다. 값의 텍스트 버전을 선택합니다. 이 접두사는 쿼리 최적화용입니다.

대규모 데이터베이스 최적화.

$(odags_MyField) '1','2','3'
odagscnt_ 해당 odags_ 바인딩의 값 수로 대체됩니다. 이 접두사는 쿼리 최적화용입니다. $(odagscnt_MyField) 3
odagsn_

선택한 값(녹색)으로 대체됩니다. 값의 숫자 버전을 선택합니다. 이 접두사는 쿼리 최적화용입니다.

대규모 데이터베이스 최적화.

$(odagsn_MyField) 1,2,3
odagsncnt_ 해당 odagsn_ 바인딩의 값 수로 대체됩니다. 이 접두사는 쿼리 최적화용입니다. $(odagsncnt_MyField) 3
참고:

빈 값이 텍스트 버전에서 필터링됩니다. 숫자가 아닌 값과 NaN 값이 숫자 버전에서 필터링됩니다.

대규모 데이터베이스 최적화

odags_odagsn_ 접두사는 쿼리를 최적화하기 위한 것입니다. 바인딩된 필드에 선택 항목이 없는 경우 odag_는 모든 값을 포함하지만 odags_는 아무 값도 포함하지 않습니다. 경우에 따라 odags_odagscnt_ 접두사를 사용하는 것이 더 효율적입니다. 이렇게 하면 값 집합이 비어 있는지 테스트할 수 있습니다. 예를 들어 다음은 odag_MyField의 모든 값을 테스트하는 것보다 MyField에 선택된 항목이 없는 경우 더 효과적입니다.

WHERE ($(odagscnt_MyField)=0 OR MyColumn IN ($(odags_MyField)))

odags_는 On-demand 필드가 아닌 선택 앱에서 선택할 대체 필드가 있는 경우에 사용할 수 없습니다. 예를 들어 사용자가 CountryName에서 선택해도 바인딩 표현식이 연결된 필드 CountryCode에 있는 경우 odags_를 사용할 수 없습니다. 이러한 경우 대신 odago_를 사용할 수 있습니다. odago_ 바인딩에 값이 없으면 모든 값을 포함해야 하거나 어떤 값도 포함할 수 없음을 의미할 수 있습니다.

바인딩 숫자 값

On-demand 앱에 바인딩할 데이터가 문자열 대신 숫자로 구성되어 있으면 숫자 필드에서 인용 부호로 묶는 동작을 비활성화하는 것이 유용합니다. 예를 들어 판매 레코드에 숫자 DAY_OF_WEEK 열이 포함되어 있고 선택 앱의 사용자가 DAY_OF_WEEK의 임의 조합을 선택하게 하려는 경우 선택 앱을 로드하는 데 사용되는 집계 쿼리를 확대하면 DAY_OF_WEEKSELECT 목록과 GROUP BY 목록에 모두 포함됩니다. DAY_OF_WEEK 값을 선택할 때 이 값이 따옴표로 묶여 있으면 데이터베이스가 문자열에서 숫자로의 자동 유형 변환을 지원하지 않는 경우 런타임 쿼리 오류가 발생할 수 있습니다.

이 상황을 처리하기 위해 바인딩 표현식 접미사의 숫자 버전을 사용할 수 있습니다. 그러면 문자열 값이 아닌 선택 앱에서 숫자 값을 사용하도록 필드 바인딩이 적용됩니다. 다음 숫자 버전을 사용할 수 있습니다.

  • odagn_
  • odagon_
  • odagsn_

숫자 버전을 사용하여, 선택한 값을 저장하는 이중 값의 숫자 부분에서 값이 선택되며, 이 값은 기본적으로 인용 부호로 묶지 않습니다.

특정 수를 선택하도록 요구

경우에 따라 On-demand 앱 쿼리에 특정 필드의 특정 숫자 또는 값 범위가 포함되도록 요구할 필요가 있을 수 있습니다. 예를 들어 시작일과 종료일 사이의 모든 판매를 가져오기 위해 On-demand 앱 쿼리에 BETWEEN 절을 포함하는 경우 YEARQUARTER 필드의 바인드 표현식에 [2]의 접미사 구문을 사용할 수 있습니다. 그러면 YEARQUARTER에 대해 다음과 같이 정확히 2개의 값을 선택해야 합니다.

$(odag_YEARQUARTER)[2]

선택 앱의 On-demand 앱 탐색 포인트는 정확히 두 개의 YEARQUARTER 값이 선택되어 있지 않으면 비활성화된 상태로 유지됩니다. 정확히 두 개의 YEARQUARTER 값을 선택해야 한다는 메시지가 표시됩니다.

선택 수량 제약 조건은 선택 앱과 On-demand 앱 간에 필수 연결을 만듭니다. 이는 수량 제약 조건을 사용하지 않는 바인드 표현식과는 다릅니다. 예를 들어 다음과 같이 템플릿 앱의 스크립트에 수량 제약 조건이 없는 바인드 표현식이 포함된 경우입니다.

$(odag_MYFIELD)

선택 앱에 MYFIELD라는 필드가 포함되어야 한다거나 필드가 있어도 해당 필드의 선택된 값이 존재해야 한다는 요구 사항이 없습니다. 선택 앱에 MYFIELD라는 필드가 포함되어 있지 않거나 사용자가 단순히 해당 필드에서 아무런 선택을 하지 않는 경우, 레코드 제한 값 조건을 충족하기 위해 다른 선택을 하면 On-demand 앱 탐색 포인트를 계속 사용할 수 있습니다.

반면에 바인드 표현식은 다음과 같습니다.

$(odag_MYFIELD)[1+]

이제 선택 앱은 두 가지 요구 사항이 있습니다.

  • 선택 앱에 MYFIELD라는 필드가 포함되어 있어야 합니다.
  • 사용자가 MYFIELD에 대해 하나 이상의 값을 선택해야 합니다.

이 유형의 바인드 표현식은 템플릿 앱과 함께 사용할 수 있는 선택 앱을 제한하기 때문에 신중하게 사용해야 합니다. 선택 수량 요구 사항을 해당 템플릿 앱에 연결하는 모든 선택 앱에 부과하려는 확신이 없는 한 이 수량 제약 조건을 템플릿 앱의 바인딩에 사용해서는 안 됩니다.

데이터 바인딩 프로세스를 수행하기 위해 On-demand 앱 서비스는 스크립트의 주석에 영향을 받지 않는 문자열 대체 방법을 사용합니다. 즉, 이러한 주석에 앱 생성 후 바인딩된 값 목록이 포함되기를 원하지 않는다면 주석에 바인드 표현식을 사용하지 않아야 합니다.

다른 수량 제약 조건은 가능합니다. 다음 표에는 선택 수량 제약 조건의 다양한 조합이 요약되어 있습니다.

선택 수량 제약 조건의 다양한 조합
제약 조건 패턴 선택 요구 사항
$(odag_YEARQUARTER)[2] 정확히 2개의 YEARQUARTER 값을 선택해야 합니다.
$(odag_YEARQUARTER)[2-4] 2개에서 4개 사이의 YEARQUARTER 값을 선택해야 합니다.
$(odag_YEARQUARTER)[2+] 2개 이상의 YEARQUARTER 값을 선택해야 합니다.
$(odag_YEARQUARTER)[2-] 최대 2개까지 YEARQUARTER 값을 선택할 수 있습니다.
참고: 템플릿 앱의 모든 수량 제약 조건이 충족되었는지 결정하는 검사는 앱 생성 프로세스 중에 수행됩니다. 수량 제약 조건을 위반하면 앱 생성 요청이 거부되고 오류 메시지가 표시됩니다.

값 따옴표 및 구분 기호 변경

선택 앱에서 선택된 필드의 값 목록이 템플릿 앱의 스크립트에 삽입된 경우 값은 작은따옴표로 묶이고 쉼표로 구분됩니다. 이러한 문자가 인용 부호와 구분 기호에 대한 기본 문자입니다. 이러한 값은 각 필드의 바인딩 문에 추가된 구문에서 변경할 수 있습니다. 예:

$(odag_ORIGIN){"quote": "|", "delimiter": ";"}

이러한 새 값은 선택 앱에서 가져온 바인딩 값 목록을 작성할 때 사용됩니다. 예를 들어 선택된 값이 해당 연도의 처음 3개월인 경우 목록은 다음과 같이 구성됩니다.

|January|;|February|;|March|

인용 부호 및 구분 기호 문자의 기본값은 대부분의 표준 SQL 데이터베이스에서 작동합니다. 그러나 일부 SQL 데이터베이스에는 작동하지 않을 수 있으며 NoSQLREST 등 여러 동적 데이터 소스에서는 작동하지 않습니다. 이러한 소스의 경우 인용 부호 및 구분 기호 문자를 변경하려면 이 바인딩 표현식을 추가해야 합니다.

다음 표에는 따옴표 및 구분 기호 문자를 변경하는 형식 매개 변수가 나와 있습니다.

형식 매개 변수
매개 변수 기본값 정의
quote

텍스트 접두사의 경우 '(작은따옴표)

숫자 접두사의 경우 비어 있음

각 값의 앞뒤에 추가됨
delimiter ,(쉼표) 모든 값 사이에 추가됨
quoteReplace ''(큰따옴표)

값이 비어 있지 않고 따옴표가 비어 있지 않은 경우에는 값 내에 있는 따옴표의 모든 값이 지정된 문자열로 대체됩니다.

참고: quoteReplace는 숫자 접두사(예: odagn_)의 매개 변수로 지원되지 않습니다. 숫자 접두사는 quoteReplace를 무시합니다.
noValue (비어 있음)

필드에 대해 선택된 값이 없는 경우 대신 이 값이 사용됩니다. 이 매개 변수는 특정 필드에 대해 선택된 값이 없는 경우에 유용합니다.

값은 소스 데이터에 없는 값으로 설정해야 합니다. 숫자 값의 경우 예를 들어 데이터베이스의 모든 값이 양인 경우 음수 값을 사용합니다.

참고: 인용 부호로 묶지 않은 값의 경우 선택된 필드 값이 빈 집합일 수 있으면 noValue를 지정해야 합니다.

다음 표에는 odag_odagn_에 대한 서식 사양 및 생성된 값이 나와 있습니다. 생성된 삽입 값은 기본 데이터 값 VAL1, VAL2를 기반으로 합니다.

odag_ 예제 서식 사양 및 생성된 값
서식 사양 설명 생성된 삽입 값
지정되지 않음

값 목록이 쉼표로 구분되고 '로 묶입니다.

'VAL1','VAL2'
{"quote": "", "delimiter": ""} 연결된 값 VAL1VAL2

{"quote": "X", "delimiter": "Y"}

값이 X로 묶이고 Y로 구분됩니다.  XVAL1XYXVAL2X
{"quote": "XX", "delimiter": "YY"} 값이 XX로 묶이고 YY로 구분됩니다.  XXVAL1XXYYXXVAL2XX
{"quote": "X"} 값이 X로 묶이고 ,(기본값)로 구분됩니다.  XVAL1X,XVAL2X
{"delimiter": "YY"} '(기본값)로 묶이고 YY로 구분됩니다. 'VAL1'YY'VAL2'
{"quote": ""} 값이 인용 부호로 묶이지 않고 ,로 구분됩니다. VAL1,VAL2
{"quote": "A", "quoteReplace": "\\A"}

값이 A로 묶이고 쉼표(기본값)로 구분됩니다. 필드 내부 값이 \A로 대체됩니다.

참고:

이 예에서 \는 json 형식의 이스케이프 문자이므로 두 개의 \가 필요합니다.

AV\AL1A,AV\AL2A
odagn_ 예제 서식 사양 및 생성된 값
서식 사양 설명 생성된 삽입 값
지정되지 않음

값 목록이 인용 부호로 묶이지 않고 쉼표로 구분됩니다. 숫자 값이 사용됩니다.

VAL1,VAL2
{"delimiter": "YY"} 값이 인용 부호로 묶이지 않고 YY로 구분됩니다. VAL1YYVAL2
{"quote": "A", "quoteReplace": "\\A"} odag_ 접두사에 비해 quoteReplace 매개 변수는 무시됩니다. AVAL1A,AVAL2A

개별 값 처리

개별 필드 값 처리가 필요한 경우 inline 메서드를 사용하여 변수 Values의 값을 생성하고 Replace 또는 다른 함수를 사용하여 임의 처리를 수행합니다. 아래 예에서는 Replace가 자리 표시자 값으로 사용됩니다.

MyTempBindingData: LOAD * INLINE [VAL $(odag_MyField){"quote": "", "delimiter": "\n"} ]; _TempTable: LOAD Concat(chr(39) & Replace(text, from_str, to_str) & chr(39), ',') as CombinedData Resident MyTempBindingData; LET Values = Peek('CombinedData',0,'_TempTable'); drop table _TempTable; drop table MyTempBindingData;