tableau性能優化?
公司已經採購tableau,但是一個月的數據在一千萬條左右,tableau跑單個視圖在30以上,掃儀錶板更慢,請教各位大神,有什麼好的解決辦法嗎?
我曾經優化過公司的Tableau Server性能,以下是一點經驗。
第一步:想清楚用戶和儀錶板交互的全過程。
「儀錶板速度慢」是一個癥狀,作為治療醫生,我們需要通過「望聞問切」了解病症產生的原因。這裡面最重要的,就是想清楚用戶和儀錶板交互的全過程,因為「慢」可能發生在任何一個環節,沒有搞清楚全局,就是盲人摸象。
以下是用戶和儀錶板交互時,伺服器上發生的全過程【極簡版】:
- 用戶在Tableau Server上打開儀錶板;
- Tableau Server向資料庫發起查詢;
- 資料庫查詢數據,聚合後返回給Tableau Server;
- Tableau Server進行表計算,繪製圖形;
- 用戶瀏覽器載入圖形。
以上步驟,視具體情況略有變化,但總體差異不大。
第二步:學會使用官方提供的性能測試。
有了全局理解,下面就需要藉助Tableau提供的性能分析功能——性能記錄工作簿,對指定儀錶板進行分析,就像醫生讓病人拍片一樣。如果你還不會這一招,趕快Get新技能吧:
https://onlinehelp.tableau.com/current/server/zh-cn/perf_record_create_server.htm
第三步:優化步驟。
經過了前兩步,你對儀錶板為什麼慢就有了明確的答案,此時就可以採取定向的優化步驟。
3.1 資料庫優化
- 提升伺服器硬體配置
- 使用寬表,減少使用表關聯
- 使用表而非視圖
- 增加索引
3.2 儀錶板設計優化
- 提升伺服器硬體配置,包括使用分散式伺服器
- 減少自定義SQL的使用
- 減少表關聯和數據融合的使用
- 使用高粒度匯總表,而低粒度的明細表
- 使用數據提取(.hpyer最好)
- 善用數據源篩選器,將Tableau使用的數據限制在最低數量級【如資料庫中有1億行,但你實際上只需要其中的10萬行,那麼就沒有必要讓Tableau連接1億行數據。如無必要,勿增數據。】
- 將在Tableau計算的複雜指標,前移至在資料庫中計算
- 在用戶初始打開的界面,只顯示最少必要數據
最後,無論使用何種優化方法,「性能優化」面臨著不變的物理定律,即:
在硬體和軟體相同的條件下,數據量越大,圖形越複雜,速度越慢。
因此,終極的性能調優方法是只使用最少必要數據進行分析或製作報表。在連接數千萬行後台表進行分析或做報表前,一定要三思:一定要這樣嗎?一定要這樣嗎?一定要這樣嗎?如果確實無法避免,要麼投入大資源優化(加硬體簡單粗暴有效,但很貴),要麼對此類報表的性能有一定忍耐度。
總結起來,後台資料庫表結構越簡潔高效,數據量越小,前台Tableau圖表越簡單,實現方法越優雅,用戶的總體性能就越快。
發佈於 2018-11-21繼續瀏覽內容知乎發現更大的世界打開Chrome繼續JackRacerhi there!- Tableau支持數據源最好的是自家的hyper文件,因此在ETL階段盡量把各種異構數據源全部整合到一個hyper文件裡面,每月刷新hyper數據源,實時連接hyper文件;
- 如果表上有很多表計算的話需要考慮把儘可能多的計算放在ETL階段先固化下來,表計算是影響視圖性能的大頭;
- 數據源篩選器 - 上下文篩選器 - LOD - 普通篩選器 - 聚合計算 - 表計算,如有可能所有的計算儘可能往左邊挪;
- 實在不行,按照分析主題,將報表分拆為幾個單獨主題的報表,報表之間做跳轉。
- 伺服器上性能分析頁面看看每個報表loading時間,針對性地改善一下。
- Tableau支持數據源最好的是自家的hyper文件,因此在ETL階段盡量把各種異構數據源全部整合到一個hyper文件裡面,每月刷新hyper數據源,實時連接hyper文件;
- 如果表上有很多表計算的話需要考慮把儘可能多的計算放在ETL階段先固化下來,表計算是影響視圖性能的大頭;
- 數據源篩選器 - 上下文篩選器 - LOD - 普通篩選器 - 聚合計算 - 表計算,如有可能所有的計算儘可能往左邊挪;
- 實在不行,按照分析主題,將報表分拆為幾個單獨主題的報表,報表之間做跳轉。
- 伺服器上性能分析頁面看看每個報表loading時間,針對性地改善一下。
- 1.測試表明,對於相同的數據,IE7需要11秒返回運算值,而Firefox需要3秒, 因此tableau所搭乘的平台十分重要
- 2.當處理大量數據時,可考慮先對數據預處理,然後再導入tableau
- 3.使用儘可能少的數據源,然後去掉沒有必要的數據
- 4.如果可以的話,關閉自動更新
- 5.使用「數據提取」
- 6.使用篩選時,盡量少使用「排除」。因為使用排除時,tableau會掃描所有的數據
- 7.有可能的話,使用boolean進行計算(用別名表示)
歡迎加入我們微信,一起學習和分享數據分析知識
https://u.wechat.com/MClLWuTQelDk2dNEy_X05iM (二維碼自動識別)
你這種情況可以從以下幾方面排查原因進而進行優化:
1.要保證安裝tableau的機器本身配置達到要求,如果機器配置比較低,必然會慢;
2.如果數據在資料庫中很慢,導進tableau做分析必然會慢;
3.建議採用提取的數據連接方式,並且,如果是多表,建議盡量使用表連接而不是數據融合或者自定義SQL;
4.優化計算,減少計算公式的複雜度;
5.可在Tableau Desktop和Tableau Server創建性能記錄,監測是在哪方面引起速度慢,參考以下鏈接:
Desktop:https://onlinehelp.tableau.com/current/pro/desktop/zh-cn/perf_record_create_desktop.html
Server:https://onlinehelp.tableau.com/current/server/zh-cn/perf_record_create_server.htm
我覺得題主可能對tableau的理解有點誤差。
雖然tableau沒有limit但是1000+萬行肯定是慢成狗了。它主要還是做圖做dashboard的工具。我不覺得任何business context下需要用全部1000+萬行做圖。
說白了,數據還是處理一下再導進tableau吧,顆粒級別再好好想想雖然不知道tableau是什麼,但很大程度上歸因於查詢性能。嘗試返回較少的數據,不要查詢記錄總數。
推薦閱讀:
TAG:Tableau |