在做數(shù)據(jù)分析時(shí)你有沒(méi)有遇到這些問(wèn)題:
數(shù)據(jù)量大,怎么也找不到特定日期的文件
老板要看某年某月的銷售數(shù)據(jù),你要從百萬(wàn)量級(jí)數(shù)據(jù)中一條條尋找
……
要是使用永洪BI,會(huì)不會(huì)有一種方法,讓我們?cè)诎偃f(wàn)量級(jí)的數(shù)據(jù)中,一眼鎖定要找的那一條?有的,那便是文件過(guò)濾。
首先,我們來(lái)說(shuō)一下什么是meta,什么是文件過(guò)濾。
01 什么是meta
meta是集市文件上打的標(biāo)簽,可以大致理解為這個(gè)集市文件的屬性。
比如,某個(gè)集市數(shù)據(jù),我們是按天入的,每天生成的集市文件是前一天的數(shù)據(jù),給這個(gè)集市文件添加了一個(gè)屬性(屬性名:date,屬性值:昨天的日期),這個(gè)就叫做meta。
這個(gè)舉個(gè)常見(jiàn)例子,有某個(gè)部門的銷售數(shù)據(jù),每天的銷售數(shù)據(jù)存儲(chǔ)在一個(gè)excel中,這個(gè)excel的文件名上帶上這天的日期。集市文件的meta就相當(dāng)于excel文件的文件名上的日期。
02 什么是文件過(guò)濾
先說(shuō)說(shuō)文件,這里的“文件”,指的是增量任務(wù)生成的集市文件,這個(gè)文件是存儲(chǔ)在m節(jié)點(diǎn),安裝目錄/Yonghong/cloud下,也就是存儲(chǔ)在m節(jié)點(diǎn)磁盤上的。
文件過(guò)濾,接著上面excel的比喻講,大致就是每天的銷售數(shù)據(jù),存儲(chǔ)在一個(gè)excel文件中,這個(gè)excel的文件名還帶上了這天的日期。
要查詢某天的銷售數(shù)據(jù)就很快了,根據(jù)日期直接定位到要查詢的這天,快速準(zhǔn)確找到這天的數(shù)據(jù),不需要所有的excel數(shù)據(jù)都打開(kāi)去查一下。
回到文件過(guò)濾也是類似的效果,給每個(gè)集市文件打上了meta,meta的值是每個(gè)集市文件對(duì)應(yīng)的數(shù)據(jù)的日期,那么要查詢某天,或者某段時(shí)間的數(shù)據(jù),就可以快速定位并查詢,不需要所有的集市文件都查一遍,然后去找到想要的日期的數(shù)據(jù)。
說(shuō)到這里是不是有個(gè)大概的概念,接下來(lái)說(shuō)說(shuō)為什么要什么文件過(guò)濾。
03 為什么做文件過(guò)濾
舉個(gè)例子,某個(gè)部門的銷售數(shù)據(jù),每天大概有100萬(wàn)左右,一年大概就是3億+。如果存儲(chǔ)在excel中,一個(gè)excel文件假設(shè)存儲(chǔ)的是100萬(wàn)左右,那么1年就有365個(gè)excel。
如果不把每天的數(shù)據(jù)存儲(chǔ)在同一個(gè)excel,且文件名上標(biāo)上每天的日期,那么當(dāng)要查某天,或者某段時(shí)間的數(shù)據(jù),是不是一個(gè)很大的工作量,需要把這365個(gè)excel都打開(kāi)查一遍。
對(duì)應(yīng)到產(chǎn)品的集市中也是一樣,一個(gè)集市文件最大存儲(chǔ)的行數(shù)大概100萬(wàn)行,如果這些數(shù)據(jù)都是按天增量的,且在集市文件生成的時(shí)候就給這些文件打上了meta。
meta值是數(shù)據(jù)對(duì)應(yīng)的日期,那么當(dāng)查詢某一天的數(shù)據(jù)的時(shí)候,就可根據(jù)meta的值進(jìn)行過(guò)濾,只查meta值為這天的這一個(gè)集市文件,那么計(jì)算量就是100萬(wàn)。
再來(lái)看一下如果不使用文件過(guò)濾,就需要把這365個(gè)集市文件都查詢一遍,最終再過(guò)濾出這一天的數(shù)據(jù),計(jì)算量是3億+。
使用文件過(guò)濾是為了減少實(shí)際計(jì)算量,減少計(jì)算量后計(jì)算需要的時(shí)間也可以大幅減少,那么報(bào)表打開(kāi)也就更快了。
下面做個(gè)比較,可以看到使用文件過(guò)濾與否,查詢相同的時(shí)間的數(shù)據(jù),實(shí)際的后臺(tái)計(jì)算量和計(jì)算時(shí)間的巨大差別。
場(chǎng)景 | 是否使用文件過(guò)濾 | 計(jì)算文件個(gè)數(shù) | 計(jì)算數(shù)據(jù)量 | 假設(shè)一個(gè)集市文件(100萬(wàn))計(jì)算時(shí)長(zhǎng) | 計(jì)算需要時(shí)間 |
某部門銷售數(shù)據(jù)每天100萬(wàn),1年365百萬(wàn),默認(rèn)查詢昨天的數(shù)據(jù) | 是 | 1 | 1百萬(wàn) | 100ms | 100ms |
否 | 365 | 365百萬(wàn) | 365000ms=36s | ||
某部門銷售數(shù)據(jù)每天100萬(wàn),1年365百萬(wàn),默認(rèn)查詢上個(gè)月的數(shù)據(jù) | 是 | 30 | 30百萬(wàn) | 100ms | 3000ms=3s |
是 | 365 | 365百萬(wàn) | 365000ms=36s | ||
備注:這里的計(jì)算時(shí)間是按照m節(jié)點(diǎn)的計(jì)算能力為1計(jì)算,實(shí)際情況不止1,但是實(shí)際也不會(huì)只有一個(gè)組件,每個(gè)組件都會(huì)有這樣一個(gè)集市查詢 |
前面已經(jīng)了解了,文件過(guò)濾是什么以及為什么要用文件過(guò)濾,接下來(lái)就是文件過(guò)濾怎么用?
文件過(guò)濾的使用前提:數(shù)據(jù)已經(jīng)通過(guò)增量的方式入到集市中,且在入的時(shí)候已經(jīng)按照日期打好meta。
首先來(lái)看一下咱們?cè)隽壳乙呀?jīng)打好meta的集市數(shù)據(jù)。
集市文件夾:咖啡銷售數(shù)據(jù) 下的集市文件 |
數(shù)據(jù)對(duì)應(yīng)月份 | meta名 | meta值 |
2020年銷售數(shù)據(jù).6cb2f7790.0.0.zb | 2020-01 | _Date_Range_ | 2020-01 |
2020年銷售數(shù)據(jù).6cb2f7790.1.0.zb | 2020-02 | 2020-02 | |
2020年銷售數(shù)據(jù).6cb2f7790.2.0.zb | 2020-03 | 2020-03 | |
2020年銷售數(shù)據(jù).6cb2f7790.3.0.zb | 2020-04 | 2020-04 | |
2020年銷售數(shù)據(jù).6cb2f7790.4.0.zb | 2020-05 | 2020-05 | |
2020年銷售數(shù)據(jù).6cb2f7790.5.0.zb | 2020-06 | 2020-06 | |
2020年銷售數(shù)據(jù).6cb2f7790.6.0.zb | 2020-07 | 2020-07 | |
2020年銷售數(shù)據(jù).6cb2f7790.7.0.zb | 2020-08 | 2020-08 | |
2020年銷售數(shù)據(jù).6cb2f7790.8.0.zb | 2020-09 | 2020-09 | |
2020年銷售數(shù)據(jù).6cb2f7790.9.0.zb | 2020-10 | 2020-10 | |
2020年銷售數(shù)據(jù).6cb2f7790.10.0.zb | 2020-11 | 2020-11 | |
2020年銷售數(shù)據(jù).6cb2f7790.11.0.zb | 2020-12 | 2020-12 | |
2020年銷售數(shù)據(jù) 是增量的時(shí)候設(shè)置的文件名 6cb2f7790 是隨機(jī)碼 0.0-11.0 是集市文件編號(hào) .zb 是集市文件后綴 |
使用步驟:
1、在“創(chuàng)建數(shù)據(jù)集”模塊,新建數(shù)據(jù)集市數(shù)據(jù)集,選擇增量任務(wù)中設(shè)置的文件夾名稱,就得到一個(gè)數(shù)據(jù)集市數(shù)據(jù)集。
2、在數(shù)據(jù)集市數(shù)據(jù)集添加文件過(guò)濾,比如查詢某一天的數(shù)據(jù),對(duì)應(yīng)的文件過(guò)濾如下:
3、使用這個(gè)數(shù)據(jù)集市數(shù)據(jù)集制作報(bào)告,并將步驟2中定義的參數(shù)coffeeMonth的值,在報(bào)告中傳遞到數(shù)據(jù)集使用。
注意:參數(shù)的數(shù)據(jù)類型和格式一定要跟meta的數(shù)據(jù)類型和格式一致,如果不一致需要腳本處理。
4、保存報(bào)告并查看效果,在報(bào)告中篩選選擇某個(gè)月,實(shí)際底層查詢的集市文件只查詢這個(gè)月對(duì)應(yīng),而不是集市文件。
查詢效果見(jiàn)下圖,底層實(shí)際計(jì)算情況見(jiàn)截圖(查詢2020-01月的數(shù)據(jù),使用文件過(guò)濾和不使用文件過(guò)濾的對(duì)比)。
?
什么時(shí)候適合用文件過(guò)濾?
集市查詢數(shù)據(jù)量大的時(shí)候;查詢的時(shí)候咱們只查詢部分?jǐn)?shù)據(jù),而不是全量數(shù)據(jù);希望提升查詢性能;能夠有用于增量同步的字段,比如日期,或者有經(jīng)常篩選的字段用于打meta后的文件過(guò)濾。
舉個(gè)例子,一個(gè)查詢包含的數(shù)據(jù)量很大,時(shí)間跨度比較大(比如有3年的數(shù)據(jù)),每次查詢的范圍不是太大(比如每次查詢大概3個(gè)月的數(shù)據(jù),查詢范圍不定),這種就比較適合用文件過(guò)濾,將每次實(shí)際計(jì)算的計(jì)算量從3年縮減到三個(gè)月。
真正實(shí)現(xiàn)前臺(tái)篩選多長(zhǎng)時(shí)間范圍,后臺(tái)計(jì)算的就是多長(zhǎng)時(shí)間的數(shù)據(jù),而不是這個(gè)查詢所有的數(shù)據(jù)計(jì)算完成再來(lái)篩選時(shí)間范圍。
最后總結(jié)一下,集市查詢,相對(duì)直連的情況一般對(duì)于報(bào)告的查詢速度,是有顯著的優(yōu)化的,但是一個(gè)查詢的總數(shù)據(jù)量很大的時(shí)候,實(shí)際查詢的并不是全部時(shí)間段的情況下,用文件過(guò)濾能進(jìn)一步優(yōu)化查詢性能。
fqj
評(píng)論