首页 > 解决方案 > 十亿行表增量负载,在 qlik 上进行硬删除

问题描述

所以我第一次想出了一种阅读我的大桌子的方法。我每年都在部分阅读它,所以我最终得到了 Qvd_2011、Qvd_2012、... Qvd.2021,所以决赛桌将是它们的串联。

我的问题是,如何在不花费太长时间的情况下进行硬删除增量加载?

我的增量加载脚本是

NoConcatenate
TempYear:
load Distinct year(date(floor(datetime),'DD/MM/YYYY')) as Year;

SQL SELECT datetime
FROM public.tab1;


LET NumRows=NoOfRows('TempYear');
trace $(NumRows);
For n=1 To $(NumRows)

let vYear = Peek('Year',$(n)-1,'TempYear');
trace $(vYear);
TempSize:
NoConcatenate

LOAD
tab1_pk,
size,
year(date(floor(datetime),'DD/MM/YYYY')) as YearOfInterest;

SQL select
tab1.`pk` "tab1_pk",tab1.`datetime`,
tab2.`fk` "tab2_fk", tab2.`size` "size"
from
public.tab1 tab1
INNER JOIN
public.tab2 tab2
on  tab2.`fk`=tab1.`pk`
where year(tab1.`datetime`)='$(vYear)' and  tab1.`pk`>'$(MaxInitialID)';     //based on another table

Size:
LOAD
tab1_pk,
sum(size) 
resident TempSize
group by tab1_pk;

DROP TABLE TempSize;


// let vFileName='Size-' &'$(vYear)';
// store Image_Size into '$(vPathQVD)/$(vFileName).qvd';//into $(vFileName).qvd (qvd);

next n;
drop table TempYear;


Concatenate
Load * from [$(vPathQVD)Initial.qvd] (qvd)
WHERE NOT EXISTS(tab1_pk)

;
**Inner Join
Load tab1_pk as tab1_pk;
SQL SELECT tab1.`pk` "tab1_pk" from
public.tab1 tab1
INNER JOIN
public.tab2 tab2
on tab1.`pk`=tab2.`fk`;**

我如何处理粗体部分(** 在最后一个内部连接之后),这样它就不需要 AGES 加载?事实上,加载至少需要 7 天,并且仍在继续......我如何在这里也进行年份拆分?

标签: qlikviewqliksense

解决方案


推荐阅读