NoConcatenate
NoConcatenate 접두사를 사용하면 동일한 필드 집합을 포함한 두 개의 로드된 테이블이 두 개의 개별 내부 테이블로 처리됩니다. 그렇지 않은 경우 이 테이블은 자동으로 연결됩니다.
구문:
NoConcatenate( loadstatement | selectstatement )
기본적으로 스크립트에서 이전에 로드된 테이블과 동일한 수의 필드 및 일치하는 필드 이름을 포함하는 테이블이 로드되면 Qlik Sense는 이 두 테이블을 자동으로 연결합니다. 이는 두 번째 테이블의 이름이 다르게 지정되더라도 발생합니다.
그러나 두 번째 테이블의 LOAD 문이나 select 문 앞에 스크립트 접두사 NoConcatenate가 포함되어 있으면 이 두 테이블이 별도로 로드됩니다.
NoConcatenate의 일반적인 사용 사례는 원본 데이터의 복사본을 유지하면서 해당 복사본에서 일부 임시 변환을 수행하기 위해 테이블의 임시 복사본을 만들어야 하는 경우입니다. NoConcatenate는 소스 테이블에 암시적으로 다시 추가하지 않고 해당 복사본을 만들 수 있는지 확인합니다.
국가별 설정
달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다. YYYY/MM/DD. 날짜 형식은 데이터 로드 스크립트의 SET DateFormat 문에 지정됩니다. 기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다. 아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다. 또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.
앱의 기본 국가별 설정은 Qlik Sense가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다. 액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다. 이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense는 사용 중인 브라우저와 동일한 언어로 표시됩니다.
예 | 결과 |
---|---|
Source: LOAD A,B from file1.csv; CopyOfSource: NoConcatenate LOAD A,B resident Source; |
A 및 B를 측정값으로 사용하는 테이블이 로드됩니다. 동일한 필드를 가진 두 번째 테이블은 NoConcatenate 변수를 사용하여 별도로 로드됩니다. |
예 1 - 암시적 연결
개요
이 예에서는 두 개의 로드 스크립트를 순차적으로 추가합니다.
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
Transactions라는 테이블로 전송되는 날짜 및 금액이 포함된 초기 데이터 집합.
첫 번째 로드 스크립트
Transactions:
LOAD
*
Inline [
id, date, amount
1, 08/30/2018, 23.56
2, 09/07/2018, 556.31
3, 09/16/2018, 5.75
4, 09/22/2018, 125.00
5, 09/22/2018, 484.21
6, 09/22/2018, 59.18
7, 09/23/2018, 177.42
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
-
id
-
date
-
amount
id | date | amount |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
두 번째 로드 스크립트
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
-
동일한 필드가 있는 두 번째 데이터 집합이 Sales라는 테이블로 전송됩니다.
Sales:
LOAD
*
Inline [
id, date, amount
8, 10/01/2018, 164.27
9, 10/03/2018, 384.00
10, 10/06/2018, 25.82
11, 10/09/2018, 312.00
12, 10/15/2018, 4.56
13, 10/16/2018, 90.24
14, 10/18/2018, 19.32
];
결과
데이터를 로드하고 테이블로 이동합니다.
id | date | amount |
---|---|---|
1 | 08/30/2018 | 23.56 |
2 | 09/07/2018 | 556.31 |
3 | 09/16/2018 | 5.75 |
4 | 09/22/2018 | 125.00 |
5 | 09/22/2018 | 484.21 |
6 | 09/22/2018 | 59.18 |
7 | 09/23/2018 | 177.42 |
8 | 10/01/2018 | 164.27 |
9 | 10/03/2018 | 384.00 |
10 | 10/06/2018 | 25.82 |
11 | 10/09/2018 | 312.00 |
12 | 10/15/2018 | 4.56 |
13 | 10/16/2018 | 90.24 |
14 | 10/18/2018 | 19.32 |
스크립트가 실행되면 동일한 필드 이름의 동일한 필드 수를 공유하는 두 데이터 집합으로 인해 Sales 테이블이 기존 Transactions 테이블에 암시적으로 연결됩니다. 이는 결과 집합 ‘Sales’의 이름을 지정하려고 시도하는 두 번째 테이블 이름 태그에도 불구하고 발생합니다.
데이터 로드 진행률 로그를 보면 Sales 데이터 집합이 암시적으로 연결되어 있음을 알 수 있습니다.
예 2 – 사용 사례 시나리오
개요
이 사용 사례 시나리오에는 다음이 있습니다.
-
다음이 포함된 트랜잭션 데이터 집합:
-
id
-
date
-
amount(GBP)
-
-
다음이 포함된 통화 테이블:
-
USD에서 GBP로의 변환율
-
-
다음이 포함된 두 번째 트랜잭션 데이터 집합:
-
id
-
date
-
amount(USD)
-
5개의 스크립트를 순차적으로 로드합니다.
-
첫 번째 로드 스크립트에는 Transactions라는 테이블로 전송되는 GBP 단위의 날짜와 금액이 포함된 초기 데이터 집합이 포함되어 있습니다.
-
두 번째 로드 스크립트에는 다음이 포함됩니다.
-
Transactions_in_USD라는 테이블로 전송되는, 날짜와 금액(USD)이 있는 두 번째 데이터 집합.
-
암시적 연결을 방지하기 위해 Transactions_in_USD 데이터 집합의 LOAD 문 앞에 배치되는 noconcatenate 접두사.
-
-
세 번째 로드 스크립트에는 Transactions_in_USD 테이블에서 GBP와 USD 간의 통화 환율을 만드는 데 사용할 join 접두사가 포함되어 있습니다.
-
네 번째 로드 스크립트에는 초기 Transactions 테이블에 Transactions_in_USD를 추가할 concatenate 접두사가 포함되어 있습니다.
-
다섯 번째 로드 스크립트에는 데이터가 Transactions 테이블에 연결된 Transactions_in_USD 테이블을 제거하는 drop table 문이 포함되어 있습니다.
첫 번째 로드 스크립트
Transactions:
Load * Inline [
id, date, amount
1, 12/30/2018, 23.56
2, 12/07/2018, 556.31
3, 12/16/2018, 5.75
4, 12/22/2018, 125.00
5, 12/22/2018, 484.21
6, 12/22/2018, 59.18
7, 12/23/2018, 177.42
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
- id
- date
- amount
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
테이블에서 금액(GBP)이 있는 초기 데이터 집합을 보여 줍니다.
두 번째 로드 스크립트
Transactions_in_USD:
NoConcatenate
Load * Inline [
id, date, amount
8, 01/01/2019, 164.27
9, 01/03/2019, 384.00
10, 01/06/2019, 25.82
11, 01/09/2019, 312.00
12, 01/15/2019, 4.56
13, 01/16/2019, 90.24
14, 01/18/2019, 19.32
];
결과
데이터를 로드하고 테이블로 이동합니다.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 19.32 |
Transactions_in_USD 테이블의 두 번째 데이터 집합이 추가된 것을 볼 수 있습니다.
세 번째 로드 스크립트
이 로드 스크립트는 USD에서 GBP로의 환율을 Transactions_in_USD 테이블에 조인합니다.
Join (Transactions_in_USD)
Load * Inline [
rate
0.7
];
결과
데이터를 로드하고 데이터 모델 뷰어로 이동합니다. Transactions_in_USD 테이블을 선택하면 모든 기존 레코드에 0.7의 'rate' 필드 값이 있음을 알 수 있습니다.
네 번째 로드 스크립트
Resident LOAD를 사용하여 이 로드 스크립트는 금액을 USD로 변환한 후 Transactions_in_USD 테이블을 Transactions 테이블에 연결합니다.
Concatenate (Transactions)
LOAD
id,
date,
amount * rate as amount
Resident Transactions_in_USD;
결과
데이터를 로드하고 테이블로 이동합니다. 8행에서 14행까지 금액(GBP)이 포함된 새 항목이 표시됩니다.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
8 | 01/01/2019 | 164.27 |
9 | 01/03/2019 | 268.80 |
9 | 01/03/2019 | 384.00 |
10 | 01/06/2019 | 18.074 |
10 | 01/06/2019 | 25.82 |
11 | 01/09/2019 | 218.40 |
11 | 01/09/2019 | 312.00 |
12 | 01/15/2019 | 3.192 |
12 | 01/15/2019 | 4.56 |
13 | 01/16/2019 | 63.168 |
13 | 01/16/2019 | 90.24 |
14 | 01/18/2019 | 13.524 |
14 | 01/18/2019 | 19.32 |
다섯 번째 로드 스크립트
이 로드 스크립트는 네 번째 로드 스크립트 결과 테이블에서 중복 항목을 삭제하고 금액이 GBP인 항목만 남깁니다.
drop tables Transactions_in_USD;
결과
데이터를 로드하고 테이블로 이동합니다.
id | date | amount |
---|---|---|
1 | 12/30/2018 | 23.56 |
2 | 12/07/2018 | 556.31 |
3 | 12/16/2018 | 5.75 |
4 | 12/22/2018 | 125.00 |
5 | 12/22/2018 | 484.21 |
6 | 12/22/2018 | 59.18 |
7 | 12/23/2018 | 177.42 |
8 | 01/01/2019 | 114.989 |
9 | 01/03/2019 | 268.80 |
10 | 01/06/2019 | 18.074 |
11 | 01/09/2019 | 218.40 |
12 | 01/15/2019 | 3.192 |
13 | 01/16/2019 | 63.168 |
14 | 01/18/2019 | 13.524 |
다섯 번째 로드 스크립트를 로드한 후 결과 테이블에는 두 트랜잭션 데이터 집합에 있는 14개의 트랜잭션이 모두 표시됩니다. 그러나 트랜잭션 8-14의 금액은 GBP로 변환되었습니다.
두 번째 로드 스크립트에서 Transactions_in_USD 앞에 사용된 NoConcatenate 접두사를 제거하면 “테이블 'Transactions_in_USD'를 찾을 수 없음” 오류와 함께 스크립트가 실패합니다. 이는 Transactions_in_USD 테이블이 원본 Transactions 테이블에 자동으로 연결되었기 때문입니다.