Insert & Update
증분 로드는 새 레코드 또는 갱신 된 레코드만 데이터베이스에서 생성된 QVD로 로드하는 방법이다.
증분 로드는 전체로드와 비교할 때 매우 효율적으로 실행되므로 유용하다. 특히 대용량 데이터 세트의 경우 에 더욱 유용하다.
Incremental load 는 3 가지 유형을 갖는다.
- Insert Only (Do not validate for duplicated records)
- Insert and Update
- Insert, Update and Delete
Insert Only
절차 :
1) 새 레코드를 식별하고 로드
2)이 데이터를 QVD 파일로 연결
3) 기존 QVD 파일을 새로운 연결된 테이블로 교체
스크립트문
let vpath= 'lib://QlikerData/';
let vqvdpath ='lib://QlikerData/QVD_Data/';
let vfilename= 'Incremental_Insert_Only.qvd';
let vfilesize= FileSize('$(vqvdpath)$(vfilename)');
if len('$(vfilesize)')=0 then // 제일 처음 적재시 모든 파일 적재
[$(vfilename)]:
Load *
FROM [lib://QlikerData/Incremental_Insert Only.xlsx]
(ooxml, embedded labels, table is Sheet1);
Store [$(vfilename)] into [$(vqvdpath)$(vfilename)];
Drop Table [$(vfilename)];
ElseIf len('$(vfilesize)') > 0 then // 증분적재 (Insert Only)
[Tmp]:
Load Max(수정일자) As Max_수정일자
FROM [[$(vpath)QVD_Data/$(vfilename)]
(qvd);
Let v최종수정일자 = Peek('Max_수정일자', 0, 'Tmp');
Drop Table [Tmp];
[$(vfilename)]:
Load *
FROM [lib://QlikerData/Incremental_Insert Only.xlsx]
(ooxml, embedded labels, table is Sheet2)
Where 수정일자 > $(v최종수정일자);
Concatenate
Load *
FROM [[$(vpath)QVD_Data/$(vfilename)]
(qvd);
Store [$(vfilename)] Into [[$(vpath)QVD_Data/$(vfilename)];
EndIf;
//-------< End of Incremental Insert Only >----------------------
trace '<<<<<<<<<<<<<<<<<< Thank Qliker >>>>>>>>>>>>>>>';
Insert and Update Case
위 데이터에서 서울 A3 상품의 단가는 600 -> 650 으로 변경하고, 서울, A4 상품은 추가로 생성하고자 한다.
키는 지역+상품코드 (상품단가키) 로 유니크하게 존재 한다.
스크립트문
let vpath= 'lib://QlikerData/';
let vqvdpath ='lib://QlikerData/QVD_Data/';
let vfilename= 'Incremental_Insert n_Update.qvd';
let vfilesize= FileSize('$(vqvdpath)$(vfilename)');
if len('$(vfilesize)')=0 then // 제일 처음 적재시 모든 파일 적재
[$(vfilename)]:
LOAD 지역 & '+' & 상품코드 As 삼품단가키,
지역,
상품코드,
단가,
수정일자
FROM [lib://QlikerData/Incremental_Insert n_Update.xlsx]
(ooxml, embedded labels, table is Sheet1);
Store [$(vfilename)] into [$(vqvdpath)$(vfilename)];
Drop Table [$(vfilename)];
ElseIf len('$(vfilesize)') > 0 then // 증분적재 (Insert & Update)
[Tmp]:
Load Max(수정일자) As Max_수정일자
FROM [[$(vpath)QVD_Data/$(vfilename)]
(qvd);
Let v최종수정일자 = Peek('Max_수정일자', 0, 'Tmp');
Drop Table [Tmp];
[$(vfilename)]:
Load 지역 & '+' & 상품코드 As 삼품단가키,
*
FROM [lib://QlikerData/Incremental_Insert n_Update.xlsx]
(ooxml, embedded labels, table is Sheet2)
Where 수정일자 > $(v최종수정일자);
Concatenate
Load
*
FROM [[$(vpath)QVD_Data/$(vfilename)]
(qvd)
Where Not Exists(삼품단가키) ;
Store [$(vfilename)] Into [[$(vpath)QVD_Data/$(vfilename)];
EndIf;
//-------< End of Insert and Update Case >----------------------
trace '<<<<<<<<<<<<<<<<<< Thank Qliker >>>>>>>>>>>>>>>';
Qlik 문서의 데이터 소스에 있는 데이터의 양이 많아지면 파일을 로드 하는데 걸리는 시간도 늘어나므로 분석 프로세스가 느려집니다.
데이터를 로드하는데 소요되는 시간을 최소화하기 위한 한 가지 방법은 소스 또는 업데이트 된 레코드에 새로 추가 된 레코드만 로드하는 것입니다.
원본 또는 Qlik 문서에 새로 추가되거나 변경된 레코드만 로드하는 개념을 증분 로드라고 합니다.
소스에서 새 레코드를 식별하기 위해 고유 키 또는 각 행에 대한 날짜 시간을 사용합니다. 고유 한 키 또는 데이터 시간 필드 값은 소스 파일에서 Qlik 문서로 이동해야 합니다.
클릭센스에 대한 기술자료는
https://qliksense.tistory.com/
클릭커
차체대 시각화 솔루션 Qlik Sense 란? Qlik Sense 에 대하여 살펴보자.
qliksense.tistory.com
클릭센스에 대한 기술문의는
wslee@illootech.co.kr
'Qlik Sense 개발가이드' 카테고리의 다른 글
맵차트에서 2 개의 포인트레이어 사용 (0) | 2020.08.30 |
---|---|
관리도 차트 (Control Chart) (0) | 2020.08.03 |
클릭센스-증분적재 (Incremental Load) - 1 (0) | 2020.08.02 |
네트워크 차트(연관도 분석) - Network Chart (2) | 2020.07.31 |
빅데이터 시각화 고급 사용법 (0) | 2020.07.29 |