qlikview - 十亿行表增量负载,在 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 天,并且仍在继续......我如何在这里也进行年份拆分?
解决方案
推荐阅读
- c# - 如何仅在按下按钮时将对象移动特定量?
- python - 获取外部导入的python内置函数代码
- model-view-controller - 使用 VS 的 MVC:为什么在使用 View() 时出现错误,但在使用 View(viewname) 时却没有?
- python - 为什么 img[0:overlap,:,:] = 1 工作,但在 numpy 但不是 img = img[0:overlap,:,:] = 1 没有?
- sql - 如何确定 Oracle ORA_Hash 函数的最佳 Max_bucket 和 Seed_value?
- asp.net - 为什么我的注册表有效而我的登录表格无效
- avr - 如何以编程方式识别连接到我的计算机的微控制器
- c# - 带有异步 lambda 的 Parallel.ForEach 等待所有迭代完成
- java - 在 Netty 中解码和编码多种数据包类型
- php - AJAX GET & POST 方法在 Laravel 中不起作用。显示错误