天天看點

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

近年來,大資料與大資料分析已成為炙手可熱的話題,相關的技術與分析工具也備受大家的關注,這篇文章将着重讨論在資料可視化報表開發時,資料的處理及展示方法。本文中提到的資料的處理均基于IBM Platform Analytics資料ETL(Extract, transform, load)架構,其中列存儲資料庫Vertica提供的分析函數為特殊的資料處理提供了可能。資料可視化分析則用到了目前主流的資料可視化工具Tableau進行說明。

利用Vertica内置函數實作資料聚合

Vertica将資料以列的方式進行存儲,大大提高了查詢的性能,在以讀取為主要負載的工作環境中大大降低了磁盤的I/O。除此之外,他還能對資料進行有效的壓縮以減少存儲空間。

此外,Vertica提供了一系列高效的SQL分析函數。與聚合函數相同SQL分析函數也傳回一個聚合後的結果,但是與聚合函數的不同點在于,SQL分析函數在資料集上并不進行group by操作,分析函數結果将重複出現在資料集的每一行中用于更進一步的分析。

例如,在以下資料集License中:

lic_type            num
-------------------------------------------
lic1                 3
lic1                 2
lic2                 4
           

要得到每類license的個數, 聚合函數的查詢/結果是:

=> select lic_type, sum(num) as total from License group by lic_type
lic_type                  total
--------------------------------------------
lic1                        5
lic2                        4
           

SQL分析函數的查詢/結果是:

=> select lic_type, num, sum(num) over(partition by lic_type) as total from License
lic_type                  num            total
---------------------------------------------
lic1                       3                5
lic1                       2                5
---------------------------------------------
lic2                       4                4
           

在ETL中進行的SQL分析函數的聚合可直接存儲于用于可視化分析報表的資料表中,避免了報表上聚合操作,增加了資料分析的靈活性。

同時,Vertica提供的時間序列分析函數也非常值得一提。它将随着時間變化的值以一定的時間間隔分組,并對此進行分析和聚合。例如,當資料庫中存有lic1在時間點10:00:00及10:00:03的使用情況,如下:

time_stamp             lic_type          num
-----------------------------------------------
10:00:00                lic1              2
10:00:03                lic1              5
=> select slice_time, TS_FIRST_VALUE(num, 'LINEAR') num FROM License TIMESERIES slice_time AS '1 seconds' OVER(PARTITION BY lic_type ORDER BY time_stamp);
           

運作如上查詢,10:00:00和10:00:03中每間隔1秒鐘将通過線性插值的方式補上一個點,結果如下:

time_stamp             lic_type          num
-----------------------------------------------
10:00:00                lic1              2
10:00:01                lic1              3
10:00:02                lic1              4
10:00:03                lic1              5
           

對于時間序列函數的合理使用可以用于在資料分析中将統計資料與采樣資料進行合理的轉換與合并,後文将對此函數具體使用場景進行詳述。

應用Tableau實作資料可視化

Tableau作為一款商業智能與資料分析軟體,具有極好的可視化效果,兼顧了良好的分析能力。Tableau 用于開發報表的簡單、易用程度令人發指,使用者不需要對複雜的程式設計和統計原理非常精通,隻需要根據需求将資料簡單的拖放到工具簿中即可得到自己想要的資料可視化圖形,即以最低的學習成本完成有價值的資料分析。但簡單、易用的特點并沒有妨礙其擁有強大的性能,基本的統計預測和趨勢預測,資料源的動态更新都是Tableau的基本功能。

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

圖1. 使用Tableau完成的報表

資料分析及可視化分析方法

1 資料收集方式

IBM Platform Analytics是專門針對IBM Platform LSF (Load Sharing Facility) 的大資料聯機解決方案。在要求高的分布式關鍵任務型高性能計算環境,IBM Platform LSF軟體産品提供一個高性能負載管理平台,這個平台有一套綜合的基于智能的,政策驅動的排程政策,友善使用者使用所有運算基礎設施資源,幫助保障最佳的應用性能。排程的基本機關是作業(Job),IBM Platform Analytics對于資料的分析主要集中于LSF的負載及機器硬體情況。

統計資料的收集

最常見的一類資料是統計型資料。以LSF為例,統計資料表記錄着曆史上完成的作業包括這些作業的基本資訊,例如開始時間,結束時間,使用的硬體資源等等。這些資料可用于統計一段時間内叢集的負載情況。

采樣資料的收集

采樣資料包括對目前負載的采樣統計及對硬體的采樣統計。以LSF為例,負載的采樣一般記錄着采樣點上作業運作的情況,包括運作狀态,目前使用的硬體資源等;硬體的采樣一般記錄着采樣點上硬體的使用情況。采樣的資料實時反映了被監測的負載或硬體系統情況,能精确說明系統的健康狀況。

2 統計資料到采樣資料的轉換

有時候我們隻能得到負載的統計型資料,為展示出以時間變化為序列的負載情況需要進行一定的轉化。以License的統計資料為例。License Event表中的每條記錄存儲了某一License被check in和check out的具體時間,及License的個數。以1小時為間隔,要計算這一小時内某個License的最大及平均使用個數需要這1小時内各個時刻License使用情況的資訊,當然時間粒度越小,值越精确。假設時間粒度為1分鐘,這裡我們需要用到Vertica提供的時間序列函數制造這1小時内每隔1分鐘的假采樣點,在某采樣點上已經被check out還未check in的License總數即可當作此采樣點的License使用總和,1小時,共60個采樣點中最大的License使用值及其平均License使用值即為這1小時内License的最大使用及平均使用個數。

2016-01-01 10:00:00到11:00:00假采樣點的生成:

SELECT TIME_STAMP, LIC_VENDOR_NAME, LIC_FEATURE_NAME, SUM(R.LIC_USAGE) AS LIC_USAGE
FROM (SELECT TIME_STAMP                        
              FROM (SELECT timestamp'2016-1-1 10:00:00'
                            FROM dual
                            UNION
                            SELECT timestamp'2016-1-1 11:00:00' AS SAMPLING_TIME
                            FROM dual) T TIMESERIES TIME_STAMP AS '1 minute' OVER(ORDER BY SAMPLING_TIME)) T,
(SELECT CHECKOUT, CHECKIN, LIC_VENDOR_NAME,LIC _FEATURE_NAME, LIC_USAGE
FROM LICENSE_EVENT ) R
WHERE T.TIME_STAMP_UTC >= R.CHECKOUT AND T.TIME_STAMP_UTC <= R.CHECKIN     
GROUP BY , , 
           

3 往更高時間粒度上的聚合

實際資料采集分析中,為保證精确度,資料采集的時間粒度可能很小,但是在報表展示中,細粒度的資料對宏觀的分析沒有幫助的同時大量的資料查詢還降低了報表展示的性能,是以采樣資料有時需要向更高的粒度進行聚合。在聚合中對于任意度量需要儲存的聚合值必須包含其最大值,最小值,總和及細粒度的間隔,這些資訊可幫助我們在更高粒度的資料表中還原出此度量的最大值,最小值及平均值,沒有資訊的丢失。

4 資料的展示方式

時間過濾器

報表中時間過濾器可以幫助使用者隻關注于感興趣的時間區間,基于大量的使用者需求和執行個體,最有效便捷的時間過濾方式可以是提供使用者三個選項參數和一個時間過濾表。使用者通過選項參數鎖定較大範圍的時間區間,點選時間過濾表得到更精确的時間區域。三個選項包括:顯示天數,使用給定時間作為起點或以今天作為時間終點,給定的時間起點。除此之外,對于某些和工作時間有關的負載需要以使用者自定義工作時間進行過濾計算。例如IBM Platform Analytics提供如圖2的時間過濾器。

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

圖2. 時間過濾器

柱狀圖與線(區域)圖使用場景

當時間作為坐标軸時柱狀圖與線(區域圖)的最大差別是,柱狀圖應該用于顯示離散的資料,而線(區域)圖應該用于顯示連續産生的資料例如采樣資料,若在離散資料的展示中使用線(區域)圖,結果是沒有值的時間點将被前後點線性連接配接起來,并不能很好的反映真實情況,如圖3:

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

圖3. 基于時間軸的柱狀圖使用執行個體

圖3展示了1月9日到22日作業完成的分布情況,柱狀圖顯示的負載情況清晰明了。

用于排序的柱狀圖

要對負載情況進行全面分析的另一方法則是以負載的數量為路徑成本進行排序,例如運作在某一時間段内作業的長短情況。進行排序前首先需要對作業運作時間進行歸類,1分鐘内和2分鐘内的作業對使用者來說都是短作業,歸類即使報表展示簡單明了對使用者來說整體情況也一目了然。

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

圖4. 用于排序的柱狀圖

報表的互動及分析流

互動式報表給資料的挖掘提供了無限可能,例如使用者可以通過點選時間清單中任意一天僅檢視一天内的負載硬體情況,通過點選任意作業運作時間分類檢視此分類下所有作業的資訊,或是點選任意叢集檢視此叢集下硬體的詳細資訊。一個簡單的例子:

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

圖5. 互動式報表

上面的例子中,使用者先點選他所關注的作業,在這裡是運作時間在1分鐘到3分鐘裡的所有作業,作業挂起時間表在使用者點選後進行了過濾,正如圖5所展示的,1分鐘到3分鐘裡的作業挂起時間都在5秒之内,點選0s到5s的柱子,具體作業運作情況的資料表将隻顯示使用者關心的作業情況即運作在1分鐘到3分鐘内,挂起在5秒内的作業。

5. 典型的使用者用例

記憶體的申請與使用對比

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

圖6. 記憶體的申請與使用對比

在”Requested Vs Used Memory Ranks”表中,使用者首先鎖定記憶體請求在”4GB to 8GB”這一分類,從資料表中可以看到,大量的申請了4GB到8GB的作業隻使用了小與1GB的記憶體,點選”4GB to 8GB” 在”Requested Vs Used Chart”表中顯示了申請4GB到8GB的作業在真正使用記憶體類别上的分布。使用者可以進一步鑽取資料,檢視使用小與1GB的記憶體在Project上的分布,如圖7:

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

圖7. 記憶體的申請與使用對比-鑽取資料

使用者可以隻選擇排列靠前的Project在”Requested Vs Used Memory – Workload Data”表中檢視每個項目中運作的作業的詳細情況,找出LSF系統的瓶頸。

系統負載情況

圖8是一個典型的展示系統負載情況的報表。”Capacity Usage”圖表清晰地指出在GeneralProject上以小時為機關負載量最大,占總體的50%以上。當使用者點選GeneralProject,”Capacity Usage Detail”表中展示了在GeneralProject上負載在不同次元上的分布情況:Research部門與其他部門相比負載量遙遙領先,而在Research部門中,又屬使用者Michael,及區域圖中橙色部分代表的區域,運作了最多的負載。互動鑽取式的資訊展示方法可以幫助使用者對LSF上運作的負載進行快速深入的了解。

資料可視化經驗談-基于Tableau和Vertica的分析方法利用Vertica内置函數實作資料聚合應用Tableau實作資料可視化資料分析及可視化分析方法結束語

圖8. 系統負載情況

結束語

以上提到的資料分析可視化方法,都是我們在開發IBM Platform Analytics時通過豐富的使用者用例及使用回報總結的寶貴經驗,PA下一步将在資料分析和預測上持續前進。

作者簡介:雒琛,2014年加入IBM至今,從事軟體開發工作,研究方向為大資料分析及資料可視化。

責編:周建丁([email protected])

繼續閱讀