날짜, 키없이 증분 적재 (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/
클릭센스에 대한 기술문의는
wslee@illootech.co.kr
'Qlik Sense 개발가이드' 카테고리의 다른 글
관리도 차트 (Control Chart) (0) | 2020.08.03 |
---|---|
클릭센스-증분적재 (Incremental Load) - 2 (0) | 2020.08.02 |
네트워크 차트(연관도 분석) - Network Chart (2) | 2020.07.31 |
빅데이터 시각화 고급 사용법 (0) | 2020.07.29 |
클릭센스 피벗테이블에서 동적정렬 및 비정형 포맷 (0) | 2020.06.14 |