본문 바로가기

Qlik Sense 개발가이드

클릭센스-증분적재 (Incremental Load) - 2

Insert & Update

증분 로드는 레코드 또는 갱신 레코드만 데이터베이스에서 생성된 QVD 로드하는 방법이다.

증분 로드는 전체로드와 비교할 매우 효율적으로 실행되므로 유용하다. 특히 대용량 데이터 세트의 경우 더욱 유용하다

 

Incremental load 3 가지 유형을 갖는다.

  1. Insert Only (Do not validate for duplicated records)
  2. Insert and Update
  3. 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 

 

Incremental Load.zip
0.47MB