Constrain 문은 스크립트 변수를 정의하기 위해 Let 또는 Set 문과 함께 사용할 수 있습니다. Constrain 문을 사용하면 이러한 변수에 대한 가능한 값에 대한 제약 조건을 정의할 수 있습니다. 변수 정의가 제약 조건을 위반하면 다시 로드가 실패합니다. 제약 조건을 사용하면 변수 값이 특정 유형과 일치하고, 특정 숫자 범위 내에 속하며, 정의한 허용 가능한 값과 일치하도록 요구할 수 있습니다.
Constrain variablename = json
여기서:
variablename은 스크립트 변수입니다.
json은 제약 조건을 지정하는 유효한 JSON 개체입니다.개별 제약 조건은 키-값 쌍으로 이 개체에 추가됩니다.
Constrain 문을 사용하여 원치 않는 변수 값이 분석 애플리케이션에 로드되는 것을 방지합니다.
고려사항
변수에 대한 Constrain 정의는 유효한 JSON 개체여야 합니다.
하나의 변수에 대해 두 개 이상의 제약 조건을 지정할 수 있습니다.변수에 대한 모든 제약 조건은 단일 제약 조건 개체에 포함되어야 합니다.예를 보려면 예 - 다중 제약 조건를 참조하십시오.
특정 이름의 스크립트 변수를 응용 프로그램에 이미 로드한 경우, 나중에 해당 변수에 대한 제약 조건과 값을 정의하려는 시도는 원래 변수와 다시 정의된 변수 간의 충돌로 인해 실패할 수 있습니다.
이러한 충돌을 해결하려면 빈 정의를 삽입하여 변수 제약 조건과 값을 다시 설정합니다.예:
CONSTRAIN x;
LET x;
CONSTRAIN x;
SET x;
그런 다음 로드 스크립트의 후속 섹션에서 변수와 해당 제약 조건을 다시 정의할 수 있습니다.긴 형식의 예는 예 - 변수 정의 충돌 해결을 참조하십시오.
변수 정의와 제약 조건 정의의 순서는 중요하지 않습니다.그러나 변수 관련 다시 로드 실패가 발생하는 경우 중단점이 발생하는 줄은 달라집니다.
Constrain 스크립트 문은 스크립트 변수에 대한 변수 정의만 제한합니다.공개 API를 사용하여 스크립트 및 최종 사용자 변수(API를 사용하여 시트 보기 또는 세션 변수로 만들기 또는 업데이트된 변수)에 제약 조건을 적용할 수도 있습니다.자세한 내용은 변수 제약 조건 정의를 위한 개발자 대안을 참조하십시오.
변수에 대해 어떤 값과도 일치하지 않는 시나리오를 방지하기 위해 제약 조건의 유효성이 검사됩니다.유효하지 않은 제약 조건의 예시:
{"minnum": 5000, "maxnum": 4}
{"type": "text", "maxnum": 4}
변수 제약 조건 정의를 위한 개발자 대안
로드 스크립트에서 Constrain 문을 사용하는 대신 공개 API를 사용하여 변수 제약 조건을 정의할 수도 있습니다.API를 통해 제약 조건을 정의하는 경우 로드 스크립트에서 직접 또는 시트 보기에서 변수 값을 업데이트하려는 모든 시도에는 제약 조건이 적용됩니다.
공개 API를 통해 변수 제약 조건을 정의하려면 QlikEngine JSON API의 GenericVariableConstraints 속성인 GenericVariableProperties (영어로만 제공)를 사용합니다.
예 - type
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 a 유형이어야 함을 지정하는 number 문.
변수 LET를 정의하는 a 문.
로드 스크립트
CONSTRAIN a = {"type": "text"};
LET a = 1000;
결과
데이터 로드를 요청합니다.
제약 조건에 a 변수에 대한 텍스트 유형이 필요하기 때문에 다시 로드가 실패합니다.변수 정의는 숫자입니다.
이와 대조적으로 제약 조건에서 type을 number로 지정하면 다시 로드가 성공합니다.
예 - maxnum
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 최대 3000의 값을 가질 수 있음을 지정하는 b 문.
변수 LET를 정의하는 b 문.
CONSTRAIN b = {"maxnum": "3000"};
LET b = 3001;
결과
데이터 로드를 요청합니다.
제약 조건이 변수 b에 대해 최댓값 3000을 요구하기 때문에 다시 로드가 실패합니다.변수 정의는 3001로 평가됩니다.
이와 대조적으로 b를 2999로 지정하면 다시 로드가 성공합니다.
예 - minnum
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 최소 3000의 값을 가질 수 있음을 지정하는 b 문.
변수 LET를 정의하는 c 문.
CONSTRAIN c = {"minnum": "3000"};
LET c = 2999;
결과
데이터 로드를 요청합니다.
제약 조건이 변수 c에 대해 최솟값 3000을 요구하기 때문에 다시 로드가 실패합니다.변수 정의는 2999로 평가됩니다.
이와 대조적으로 c를 3000으로 지정하면 다시 로드가 성공합니다.
예 - valuesnum
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 숫자형이어야 하며 2, 3 또는 4여야 함을 지정하는 d 문.
변수 LET를 정의하는 d 문.
CONSTRAIN d = {"valuesnum": [2,3,4]};
LET d = 1;
결과
데이터 로드를 요청합니다.
변수 d이 1로 평가되는데, 이는 가능한 세 가지 값 목록에 없기 때문에 다시 로드가 실패합니다.
이와 대조적으로 d를 2로 지정하면 다시 로드가 성공합니다.
예 - valuestext
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 다음 텍스트 값 중 하나여야 함을 지정하는 e 문:
Department A
Department B
Department C
변수 SET를 정의하는 e 문.
CONSTRAIN e = {"valuestext": ["Department A", "Department B", "Department C"]};
SET e = Department D;
결과
데이터 로드를 요청합니다.
변수 e가 Department D이고, 이는 제약 조건에 의해 정의된 허용 값 목록에 없기 때문에 다시 로드가 실패합니다.
이와 대조적으로 e를 Department C로 지정하면 다시 로드가 성공합니다.
예 - SET 및 LET
다음 예에서는 변수 정의 중에 SET 또는 LET를 사용할 때 제약 조건이 적용되는 방식의 차이점을 보여 줍니다.모든 예에서는 type 요구 사항을 적용하는 제약 조건을 사용하지만 이러한 원칙은 일반적으로 모든 제약 조건 유형에 적용됩니다.
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 f 유형이어야 함을 지정하는 number 문.
변수 SET를 정의하는 f 문.
로드 스크립트
CONSTRAIN f = {"type": "number"};
SET f = 500*2;
결과
데이터 로드를 요청합니다.
제약 조건이 변수 f에 숫자 유형을 요구하기 때문에 다시 로드가 실패합니다.변수 정의에는 숫자 표현식이 포함되어 있지만 SET 문이 사용되었기 때문에 정의가 텍스트로 평가됩니다.
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 g 유형이어야 함을 지정하는 text 문.
변수 LET를 정의하는 g 문.
로드 스크립트
CONSTRAIN g = {"type": "text"};
LET g = 500*2;
데이터 로드를 요청합니다.
제약 조건에 g 변수에 대한 텍스트 유형이 필요하기 때문에 다시 로드가 실패합니다.변수 정의에는 숫자 표현식이 포함되어 있으며 LET 문이 사용되어 정의가 숫자로 평가됩니다.
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 h 유형이어야 함을 지정하는 text 문.
변수 SET를 정의하는 h 문.
로드 스크립트
CONSTRAIN h = {"type": "text"};
SET h = 500*2;
데이터 로드를 요청합니다.
다시 로드가 성공합니다.제약 조건에는 h 변수에 대한 텍스트 유형이 필요합니다.변수 정의에는 숫자 표현식이 포함되어 있지만 SET 문이 사용되었기 때문에 정의가 텍스트로 평가됩니다.
개요
데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Constrain에 대한 변수 정의가 i 유형이어야 함을 지정하는 number 문.
변수 LET를 정의하는 i 문.
로드 스크립트
CONSTRAIN i = {"type": "number"};
LET i = 500*2;
데이터 로드를 요청합니다.
다시 로드가 성공합니다.제약 조건에는 i 변수에 대한 숫자 유형이 필요합니다.변수 정의에는 숫자 표현식이 포함되어 있으며 LET 문이 사용되어 정의가 숫자로 평가됩니다.
변수가 허용되는 값 중 하나인 한, 변수가 텍스트 또는 숫자가 될 수 있도록 하는 Constrain 문입니다.
변수 LET를 정의하는 k 문.
로드 스크립트
CONSTRAIN k = {"valuestext": ["abc","def","ghi"], "valuesnum": [0,1,3,5]};
LET k = 'def';
데이터 로드를 요청합니다.
다시 로드가 성공합니다.변수 k의 값은 허용 가능한 값 목록에서 찾을 수 있습니다.마찬가지로 k를 3으로 지정하면 성공적으로 다시 로드됩니다.
예 - 변수 정의 충돌 해결
개요
이 예는 이전 로드에서 응용 프로그램에 이미 정의된 변수에 대한 제약 조건을 추가할 때 변수 정의 충돌이 발생할 수 있는 방식을 보여 줍니다.
로드 스크립트 1: 스크립트 변수 설정
데이터 로드 편집기를 엽니다.다음 스크립트를 추가합니다.
LET vConflictExample = 'Department C';
데이터 로드를 요청합니다.다시 로드가 성공합니다.변수 vConflictExample이(가) 스크립트 변수로 응용 프로그램에 생성되었습니다.
로드 스크립트 2: 이전에 로드된 스크립트 변수에 대한 제약 조건 정의 시도
로드 스크립트 1을 삭제합니다.다음 스크립트를 추가합니다.
CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;
데이터 로드를 요청합니다.
새 제약 조건과 값 정의가 호환되더라도 제약 조건 오류로 인해 다시 로드가 실패합니다.이는 로드 스크립트 1이 이미 텍스트 값을 포함한 변수를 응용 프로그램에 로드했고, 이 값이 응용 프로그램에 계속 남아 있기 때문입니다.이 문제를 해결하려면 변수 제약 조건과 정의를 다시 설정해야 합니다.로드 스크립트 3을 참조하십시오.