본문 바로가기

Qlik Sense 개발가이드

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

날짜, 키없이 증분 적재 (Incremental Load Without Date or Key )

소스 데이터에서 사용 가능한 마지막 업데이트 날짜없이 증분로드 필드를 수행하는 옵션을 찾는 스레드가 거의 없었습니다.이 경우 증분로드 기능을 통해 새 레코드를 삽입하는 데 도움이 되는 옵션 중 하나는 Qlik에서 시퀀스 생성기를 만드는 것입니다 Script, 아래에서 완전한 스크립트를 확인하십시오. 첨부 된 동일한 스크립트는 동일한 애플리케이션을 활성화합니다.

 

초기 데이터

 

스크립트

전체 3 개의 구역으로 구성

 

 

Main 구역

let vpath= 'lib://Folder_Conn/';

let vqvdpath ='lib://Folder_Conn/QVD_Data/';

let vfilename= 'Data.qvd';

let vfilesize= FileSize('$(vqvdpath)$(vfilename)');

 

 

trace '<<<<<<<<<<<<<<< QVD Size is' $(vfilesize);

 

초기전체 적재 구역

if len('$(vfilesize)')=0 then

 

    trace '<<<<<<<<<<<초기 전체 적재 >>>>>>>>>>>>>>>>>>>>>';

 

    [First Load]:

    Load RecNo() as SI,

           *

    FROM [$(vpath)Incremental_Data.xlsx]

    (ooxml, embedded labels, table is [Sheet1]);

 

    Store [First Load] into [$(vpath)QVD_Data/Data.qvd](qvd);

 

    Inc_Key:

    Load num(max(FieldValue(('SI'),Recno()))) as MaxNum

    AutoGenerate num((FieldValueCount('SI')));

 

    Drop Table [First Load];

 

    Store Inc_Key into [$(vpath)QVD_Data/Inc_Key.qvd](qvd);

    Let v_IncKey=Peek('MaxNum',0,'Inc_Key');

    Drop Table Inc_Key;

 

    trace '<<<<<<<<<<<<<<<<  초기적재 건수는 : ' $(v_IncKey);

 

증분적재 (Insert Only) 구역

ElseIf len('$(vfilesize)') > 0 then

    Trace '<<<<<<<<<<<<<<<<<<< 증분적재 >>>>>>>>>>>>>>>>>>';

    Inc_Key:

    LOAD

        MaxNum

    FROM [$(vpath)QVD_Data/Inc_Key.qvd]

    (qvd);

 

    Let v_IncKey=Peek('MaxNum',0,'Inc_Key');

    trace '<<<<<<<<<<<<<<<>>>>>>>>>>>';

    trace '<<<<<<<< Record # : '$(v_IncKey);

    Drop Table Inc_Key;

 

    IncrementalData:

    Load * ,

    Recno() as SI

    FROM [$(vpath)Incremental_Data.xlsx]

    (ooxml, embedded labels, table is [Sheet1])

    where RecNo()>$(v_IncKey);

 

    let vRows=NoOfRows('IncrementalData');

 

    if $(vRows)= 0 then

        trace '<<<<<<<<<<<<<<< 증분적재 레코드가 없습니다 >';

        Exit Script;

    Else

 

    trace '<<<<<<<<<<< 증분적재 레코드 건수 : ' $(vRows);

 

    Concatenate(IncrementalData)

    load *

    FROM  [$(vpath)QVD_Data/Data.qvd](qvd);

    Store IncrementalData into  [$(vpath)QVD_Data/Data.qvd];

 

    New_Inc_Key:

    Load num(max(FieldValue(('SI'),Recno()))) as MaxNum,

    'New' as flag

    AutoGenerate num((FieldValueCount('SI')));

 

    let vNewKey= Peek('MaxNum',0,'New_Inc_Key');

    Trace '<<<<<<<<<<<<<<< 증분적재 후 키 : '$(vNewKey);

    Store New_Inc_Key into [$(vpath)QVD_Data/Inc_Key.qvd];

    drop table New_Inc_Key;

    drop table IncrementalData;

EndIf;

 

trace '<<<<<<<<<<<<<<<<<< Thank Qliker >>>>>>>>>>>>>>>';

 

수행

Main 에서 지정한 (let vqvdpath ='lib://Folder_Conn/QVD_Data/' 위치에 2 개의 파일 생성

 

Data.qvd 에는 초기에 읽은 데이터 추가 됨

Inc_Key.qvd 에는 최종 RowNo 를 갖고 있는 1 개의 레코드가 생성됨

 

Easy QlikViewer 를 이용하여 Data.qvd 확인

 

8 개의 레코드 및 SI 필드가 추가되어 있슴 (Load 스크립트문 참조)

 

증분레코드 추가

엑셀파일을 열어서 2 개의 레코드 추가

 

증분레코드 추가 실행

다시 로드 스크립트 문 수행

 

2 건이 추가 되었음을 알리는 메시지 출력

 

증분적재후 QVD 파일 확인

 

새롭게 추가한 레코드가 먼저 나옴.

증분 적재의 원리는 변경된 내용을 먼저 읽고, 기존의 파일을 읽어서 최종 적재함.

스크립트 문 참조

 

모든 과정이 정상적으로 수행되었습니다.

 

Qlik Sense를 사용 했으므로 변수 경로 정의의 Lib 문을 사용자 환경에 맞게 변경하십시오.

기본 키를 사용하는 기본 방법을 사용하여 증분로드를 통해 업데이트 및 삭제 작업을 수행하도록 동일한 코드를 확장 할 수 있습니다.

 

 

클릭센스에 대한 기술자료는

https://qliksense.tistory.com/

 

클릭커

차체대 시각화 솔루션 Qlik Sense 란? Qlik Sense 에 대하여 살펴보자.

qliksense.tistory.com

 

클릭센스에 대한 기술문의는 

wslee@illootech.co.kr 

 

 

Incremental Load Without DateorKey.pdf
0.24MB