Qlik之資料如何做增量 三

2021-10-01 09:18:31 字數 3112 閱讀 5419

對於資料量很大的需求來說,例如幾千萬,上億條資料,qlik要載入很長時間,是相當的費時間,所以這個記錄一下,如何在qlik中做資料的增量

1.先跑一遍全量資料,儲存在qlik伺服器裡(例如取20190101到20191210的資料,那我就先跑20190101到20191201的全量資料)

1.  select * from test where time >= '20190101' and where time < '20191201'  

2. store 使用者資料 into [lib://test_qvd (win-i1nf3g039d9_qs_chanpin_dev)/使用者資料201901_201912.qvd];

上面的第二句,就是要儲存在qlik伺服器中的路徑,存入乙個qvd檔案(全量的資料)。

2. 然後在自動生成的指令碼裡面,加上全量和增量的**,如下:

unqualify *;

[使用者資料_temp_da60bde4-1ebd-e1e9-2a3f-1f7a1a09]:

//增量資料

load

[a] as [b],

[c] as [d]

resident [使用者資料];

concatenate([使用者資料_temp_da60bde4-1ebd-e1e9-2a3f-1f7a1a09]) //很重要

//全量資料

load

[a] as [b],

[c] as [d]

from [lib://fft_qvd (win-i1nf3g039d9_qs_chanpin_dev)/使用者資料201909_201912.qvd](qvd);

drop table [使用者資料];

rename table [使用者資料_temp_da60bde4-1ebd-e1e9-2a3f-1f7a1a09] to [使用者資料];

[autocalendar]:

declare field definition tagged ('$date')

fields

dual(year($1), yearstart($1)) as [year] tagged ('$axis', '$year'),

dual('q'&num(ceil(num(month($1))/3)),num(ceil(num(month($1))/3),00)) as [quarter] tagged ('$quarter', '$cyclic'),

dual(year($1)&'-q'&num(ceil(num(month($1))/3)),quarterstart($1)) as [yearquarter] tagged ('$yearquarter', '$qualified'),

dual('q'&num(ceil(num(month($1))/3)),quarterstart($1)) as [_yearquarter] tagged ('$yearquarter', '$hidden', '$simplified'),

month($1) as [month] tagged ('$month', '$cyclic'),

dual(year($1)&'-'&month($1), monthstart($1)) as [yearmonth] tagged ('$axis', '$yearmonth', '$qualified'),

dual(month($1), monthstart($1)) as [_yearmonth] tagged ('$axis', '$yearmonth', '$simplified', '$hidden'),

dual('w'&num(week($1),00), num(week($1),00)) as [week] tagged ('$weeknumber', '$cyclic'),

date(floor($1)) as [date] tagged ('$axis', '$date', '$qualified'),

date(floor($1), 'd') as [_date] tagged ('$axis', '$date', '$hidden', '$simplified'),

if (daynumberofyear($1) <= daynumberofyear(today()), 1, 0) as [inytd] ,

year(today())-year($1) as [yearsago] ,

if (daynumberofquarter($1) <= daynumberofquarter(today()),1,0) as [inqtd] ,

4*year(today())+ceil(month(today())/3)-4*year($1)-ceil(month($1)/3) as [quartersago] ,

ceil(month(today())/3)-ceil(month($1)/3) as [quarterrelno] ,

if(day($1)<=day(today()),1,0) as [inmtd] ,

12*year(today())+month(today())-12*year($1)-month($1) as [monthsago] ,

month(today())-month($1) as [monthrelno] ,

if(weekday($1)<=weekday(today()),1,0) as [inwtd] ,

(weekstart(today())-weekstart($1))/7 as [weeksago] ,

week(today())-week($1) as [weekrelno] ;

derive fields from fields [user_amount] using [autocalendar] ;

3.最後,跑個增量(20191201-20191210),**如下

1.  select * from test where time >= '20190101' and where time >= '20191201'
這個時候的載入,就會由兩部分組成,全量(from)+增量,這裡接不截屏了。。。。

如何做資料產品?

1 產品給誰用?資料給誰看?使用者分幾類?不同類使用者訴求有無差別?2 ta為什麼要看資料?看完之後做什麼?要說清楚給使用者設計的資料產品在解決什麼問題,到底要給使用者看哪些資料?在實際的操作過程中,可能面臨理解不一的情況。這裡需要統一資料口徑,要保證使用者對資料概念的理解和你的理解是一樣的,這是資...

如何做資料的分類?

常見的資料分類方式有2種,一種是按照資料所屬的類別進行層次分類,一種是採用關鍵字或者標籤的方式進行分類。到底哪種方式好呢?我想本身並不應該有明顯的界限,如果資料本身就不叫有層次劃分如 生物學中的種 屬 科 目等層次的分類,那麼採用層次分模擬較好 一般而言採用關鍵字的方式比較有彈性,使資料可以隸屬為多...

如何做資料的分類?

常見的資料分類方式有2種,一種是按照資料所屬的類別進行層次分類,一種是採用關鍵字或者標籤的方式進行分類。到底哪種方式好呢?我想本身並不應該有明顯的界限,如果資料本身就不叫有層次劃分如 生物學中的種 屬 科 目等層次的分類,那麼採用層次分模擬較好 一般而言採用關鍵字的方式比較有彈性,使資料可以隸屬為多...