0
나는 트랜잭션 테이블을 가지고 있으며 매일 새 레코드가 추가됩니다. 증분 데이터 만로드하는 QVD 파일을 작성하려고합니다.qlikview에서 증분로드를 수행하는 방법
나는 트랜잭션 테이블을 가지고 있으며 매일 새 레코드가 추가됩니다. 증분 데이터 만로드하는 QVD 파일을 작성하려고합니다.qlikview에서 증분로드를 수행하는 방법
새 레코드를 식별하려면 날짜 (시간) 열이 필요합니다. 그런 다음
당신이 이런 식으로 할 수 있습니다 : 여기
///$tab Main
SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='#.##0,00 €;-#.##0,00 €';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD.MM.YYYY';
SET TimestampFormat='DD.MM.YYYY hh:mm:ss[.fff]';
SET MonthNames='Jan;Feb;Mrz;Apr;Mai;Jun;Jul;Aug;Sep;Okt;Nov;Dez';
SET DayNames='Mo;Di;Mi;Do;Fr;Sa;So';
set vSourceDir = 'C:\devel\qlikview\2013\Incremental_Load\';
///$tab Initial
// Initial data load
/*
Sales:
LOAD OrderId,
ProductId,
CustomerId,
Amount,
date(Date_updated) as Date_updated
FROM
$(vSourceDir)Data.xlsx
(ooxml, embedded labels, table is Orders);
STORE Sales INTO $(vSourceDir)sales.qvd (qvd);
*/
///$tab Load from QVD
// load sales.qvd
Sales:
LOAD OrderId,
ProductId,
CustomerId,
Amount,
date(Date_updated) as Date_updated
FROM
$(vSourceDir)sales.qvd
(qvd);
Sort_Sales:
LOAD *
Resident Sales
Order By Date_updated;
LET vLastUpdateDate = date(Peek('Date_updated', -1, 'Sort_Sales'));
DROP TABLE Sales;
///$tab Perform Incremental load
// load only new (incremental) data
Incremental:
NoConcatenate
LOAD OrderId,
ProductId,
CustomerId,
Amount,
date(Date_updated) as Date_updated
FROM
$(vSourceDir)Data.xlsx
(ooxml, embedded labels, table is NewOrders)
where date(Date_updated) >= '$(vLastUpdateDate)';
///$tab Update QVD
// load data from qvd without the records that where changed
Concatenate
LOAD OrderId,
ProductId,
CustomerId,
Amount,
date(Date_updated) as Date_updated
FROM
$(vSourceDir)sales.qvd (qvd)
where not exists(OrderId);
STORE Incremental INTO $(vSourceDir)sales.qvd;
하는 것은 엄격하게, 날짜/시간 필드가 될 것입니다 뭔가를 필요로하지 않는 설명 https://www.youtube.com/watch?v=UkKTmnKSNQo
에게 HTH
입니다 "보장되는"것은 단조 증가하고있다. 일부 데이터베이스 (많은?)는 정수를 기본 키로 사용하므로 롤오버 (또는 다시 채우기)에 관심이없는 한이 충분할 수 있습니다. 중요한 것은 그것이 연속적이든 정수 든 "비교 가능"하다는 것입니다. – r2evans