操:開源BI工具核心架構(gòu)與部署全解析)
數(shù)據(jù)可視化分析做到一定程度大家都會(huì)遇到同一個(gè)坎手里有數(shù)但講不清楚。SQL會(huì)寫、Python也會(huì)跑可每次匯報(bào)前都要臨時(shí)拼圖表不是樣式對(duì)不齊就是同事要的數(shù)據(jù)口徑對(duì)不上。我之前在項(xiàng)目里折騰過好幾套可視化方案最后真正留下來天天在用的反而是這款叫DataEase的開源工具。這篇是DataEase實(shí)操系列的起點(diǎn)先把它的來龍去脈、核心架構(gòu)和部署方式講透后面的文章再逐個(gè)功能往下拆。如果你是做數(shù)據(jù)分析、運(yùn)維監(jiān)控、業(yè)務(wù)報(bào)表這類工作的人或者正在準(zhǔn)備基于Python的手表數(shù)據(jù)監(jiān)控及分析可視化之類的課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)這篇文章都適合你。就算你完全沒接觸過BI工具只要跟著走一遍也能把DataEase跑起來并且搞清楚它和畫圖工具的本質(zhì)區(qū)別。1. 為什么數(shù)據(jù)分析做了半天最后卡在了展示這一環(huán)先聊點(diǎn)實(shí)際的。很多人一開始接觸數(shù)據(jù)可視化第一反應(yīng)是用Python的Matplotlib、Pyecharts畫圖或者用Excel硬湊。這些方式做單張圖沒問題但一旦涉及多張圖聯(lián)動(dòng)、數(shù)據(jù)定時(shí)刷新、多人共享看板維護(hù)成本就上來了。1.1 一個(gè)很常見的尷尬場(chǎng)景我接過一個(gè)挺典型的任務(wù)給某個(gè)硬件設(shè)備運(yùn)維團(tuán)隊(duì)做一套監(jiān)控看板數(shù)據(jù)來自MySQL每天新增幾十萬條設(shè)備狀態(tài)記錄。最開始我直接用Python寫腳本讀取數(shù)據(jù)庫(kù)再用Flask起一個(gè)Web服務(wù)前端用ECharts畫折線圖。功能是能做出來但后續(xù)需求一變就頭疼——運(yùn)維同事說要看某個(gè)時(shí)間段的環(huán)比又要加一個(gè)設(shè)備維度篩選再后來產(chǎn)品經(jīng)理說要移動(dòng)端能看整個(gè)開發(fā)鏈路就變得很長(zhǎng)。這個(gè)場(chǎng)景你一定不陌生數(shù)據(jù)分析和可視化本身不是核心難點(diǎn)難的是把數(shù)據(jù)接入、數(shù)據(jù)處理、圖表展示、權(quán)限管理這一整條鏈路串起來。如果每個(gè)環(huán)節(jié)都要自己開發(fā)時(shí)間和精力都耗在重復(fù)造輪子上了。1.2 DataEase在這個(gè)環(huán)節(jié)的價(jià)值在哪DataEase讓我覺得順手的地方在于它把這條鏈路里最繁瑣的部分變成了開箱即用的功能數(shù)據(jù)源接入、數(shù)據(jù)集加工、圖表拖拽、看板布局、用戶權(quán)限全部在瀏覽器里完成不需要寫前端頁(yè)面也不需要單獨(dú)開發(fā)后端接口。它和畫圖工具最大的區(qū)別在于畫圖工具只解決圖怎么畫DataEase解決的是從數(shù)據(jù)到?jīng)Q策的完整過程。你可以把它理解成一塊已經(jīng)裝修好的毛坯房——墻、水電、門窗都在你只需要把自己想要的家具圖表搬進(jìn)來擺好。提示如果你的需求只是臨時(shí)出一張圖發(fā)給別人用Python或Excel更輕量。但如果是要長(zhǎng)期維護(hù)、多人協(xié)作、數(shù)據(jù)定期更新的可視化看板DataEase這類BI工具的價(jià)值就體現(xiàn)出來了。2. 認(rèn)識(shí)DataEase從項(xiàng)目背景到整體架構(gòu)既然要實(shí)操就不能只知道它能干什么還得知道它是什么做的。這部分不要求你記住每個(gè)組件但理解了整體架構(gòu)后面遇到問題排查起來會(huì)順很多。2.1 它不是單純的畫圖工具DataEase是飛致云旗下的一款開源數(shù)據(jù)可視化分析工具定位是人人可用的開源數(shù)據(jù)可視化分析工具。它強(qiáng)調(diào)開源和人人可用這兩個(gè)點(diǎn)是有原因的開源意味著你可以免費(fèi)使用、二次開發(fā)甚至部署到內(nèi)網(wǎng)環(huán)境這對(duì)數(shù)據(jù)敏感的企業(yè)尤其重要人人可用則指的是操作門檻低業(yè)務(wù)人員經(jīng)過簡(jiǎn)單培訓(xùn)就能上手做看板不強(qiáng)制要求會(huì)寫代碼。我之前用過不少BI工具有的是國(guó)外產(chǎn)品文檔和社區(qū)支持對(duì)國(guó)內(nèi)用戶不太友好有的商業(yè)產(chǎn)品功能很強(qiáng)但License費(fèi)用不低。DataEase在開源和易用之間找到了一個(gè)平衡點(diǎn)加上中文文檔完善、社區(qū)活躍這也是我最終選擇深入研究它的直接原因。2.2 核心組件與運(yùn)行邏輯從部署角度看DataEase不是一個(gè)單體程序而是由前端、后端和幾個(gè)中間件組成的系統(tǒng)。以主流的v2版本為例整體架構(gòu)大致包含這些角色組件作用類比前端Vue瀏覽器里的操作界面負(fù)責(zé)圖表渲染和交互餐廳的門面后端Spring Boot處理業(yè)務(wù)邏輯、權(quán)限控制、接口調(diào)度后廚的廚師團(tuán)隊(duì)MySQL存儲(chǔ)元數(shù)據(jù)、用戶信息、儀表板配置等餐廳的賬本Redis緩存熱點(diǎn)數(shù)據(jù)提升訪問速度備菜區(qū)提前把常用的菜備好Doris / 查詢引擎加速大規(guī)模數(shù)據(jù)的聚合查詢中央廚房批量處理食材不同版本的具體組件構(gòu)成會(huì)有些差異部署時(shí)會(huì)由安裝腳本自動(dòng)拉取和配置你不用手動(dòng)一個(gè)個(gè)裝。理解這個(gè)架構(gòu)的意義在于當(dāng)你遇到看板加載慢圖表數(shù)據(jù)出不來這類問題時(shí)能大致判斷是前端渲染問題、后端接口問題還是數(shù)據(jù)查詢問題排查方向就不會(huì)跑偏。我見過不少人在群里問為什么我的圖表轉(zhuǎn)圈圈最后發(fā)現(xiàn)是服務(wù)器內(nèi)存不足Doris直接被系統(tǒng)殺掉了。如果你不了解架構(gòu)里有這么一號(hào)組件遇到這個(gè)問題會(huì)一頭霧水。3. 實(shí)操前的第一關(guān)把DataEase跑起來介紹完背景直接進(jìn)入動(dòng)手環(huán)節(jié)。DataEase支持多種安裝方式我推薦新手優(yōu)先選擇Docker Compose方式省心不容易把環(huán)境搞亂。3.1 部署前的服務(wù)器準(zhǔn)備先列一下我實(shí)際測(cè)試過的最低配置和推薦配置方便你根據(jù)場(chǎng)景選擇場(chǎng)景CPU內(nèi)存磁盤說明試用/學(xué)習(xí)2核4G40G能跑起來演示數(shù)據(jù)量別太大小團(tuán)隊(duì)生產(chǎn)4核8G100G日常報(bào)表沒問題較大數(shù)據(jù)量生產(chǎn)8核16G500G建議使用外部數(shù)據(jù)庫(kù)和高性能磁盤服務(wù)器操作系統(tǒng)建議選CentOS 7.9、Ubuntu 20.04以上版本。如果你只是在自己電腦上學(xué)習(xí)用虛擬機(jī)或者云服務(wù)器都行。我剛開始部署的時(shí)候犯過一個(gè)錯(cuò)誤圖省事用1核2G的機(jī)器跑結(jié)果啟動(dòng)到一半內(nèi)存就不夠了日志里全是Killed字樣。后來才知道DataEase啟動(dòng)時(shí)會(huì)拉起MySQL、Redis等好幾個(gè)進(jìn)程對(duì)內(nèi)存的需求比想象中大。所以如果你只是學(xué)習(xí)也建議至少給到4G內(nèi)存。3.2 Docker Compose一鍵部署與初始化部署主要分三步裝Docker環(huán)境、下載安裝包、執(zhí)行安裝腳本。先確認(rèn)服務(wù)器上已經(jīng)裝好Docker和Docker Compose插件。這一步如果沒裝可以到Docker官方文檔找到對(duì)應(yīng)系統(tǒng)的安裝方式。裝好后驗(yàn)證一下docker --version docker compose version能正常輸出版本號(hào)就說明Docker環(huán)境沒問題。然后是下載DataEase安裝包。在GitHub的DataEase倉(cāng)庫(kù)Release頁(yè)面下載最新的離線安裝包官方也提供了在線安裝的方式。這里我以典型的離線安裝流程來說明思路——安裝包解壓后目錄里通常包含install.sh腳本和docker-compose.yml文件。# 解壓安裝包 tar -zxvf dataease-release-xxx.tar.gz cd dataease-release-xxx # 執(zhí)行安裝需要root權(quán)限 ./install.sh安裝腳本會(huì)自動(dòng)檢測(cè)服務(wù)器配置、加載鏡像、創(chuàng)建容器、初始化數(shù)據(jù)庫(kù)。整個(gè)過程中屏幕上會(huì)滾動(dòng)大量日志看到類似安裝成功install success的提示就說明裝好了。安裝完成后默認(rèn)會(huì)啟動(dòng)DataEase的Web服務(wù)。在瀏覽器里訪問http://服務(wù)器IP:端口就能打開登錄頁(yè)。例如http://192.168.1.100:8081提示不同版本的默認(rèn)端口和初始賬號(hào)密碼可能不同以官方安裝文檔為準(zhǔn)。常見的默認(rèn)管理員賬號(hào)是admin初始密碼在安裝完成后系統(tǒng)會(huì)提示或?qū)戇M(jìn)配置文件里。第一次登錄后第一件事就是改密碼這個(gè)別偷懶。3.3 登錄、改密碼與基礎(chǔ)設(shè)置登錄進(jìn)去之后別急著建圖表先花幾分鐘把基礎(chǔ)設(shè)置過一遍。第一修改管理員密碼。點(diǎn)擊右上角用戶頭像進(jìn)入賬號(hào)設(shè)置把初始密碼換掉。如果你的服務(wù)器有公網(wǎng)IP這一步尤其重要不然容易被掃描到弱口令。第二看看系統(tǒng)管理里的參數(shù)設(shè)置。這里可以配置數(shù)據(jù)緩存策略、報(bào)表水印、登錄超時(shí)時(shí)間等。我的習(xí)慣是把水印打開尤其是分享出去的看板水印能起到一定的防泄露作用。第三了解一下用戶和角色管理。DataEase里的權(quán)限分成管理員和普通用戶管理員能做系統(tǒng)設(shè)置和數(shù)據(jù)源管理普通用戶可能只能看某些看板。建議一開始就按團(tuán)隊(duì)角色把用戶建好省得后面數(shù)據(jù)多了再補(bǔ)權(quán)限。到這里DataEase就已經(jīng)跑起來了。接下來才是重頭戲——理解它處理數(shù)據(jù)的那套邏輯。4. 從數(shù)據(jù)到圖表的關(guān)鍵鏈路數(shù)據(jù)源、數(shù)據(jù)集與視圖很多新手上手DataEase時(shí)暈頭轉(zhuǎn)向就是沒搞明白數(shù)據(jù)源、數(shù)據(jù)集、視圖、儀表板這幾個(gè)概念之間的關(guān)系。其實(shí)它們的邏輯鏈條非常清晰就是一條流水線數(shù)據(jù)源 → 數(shù)據(jù)集 → 視圖 → 儀表板。4.1 支持哪些數(shù)據(jù)源怎么選DataEase支持的數(shù)據(jù)源類型很豐富常見的有MySQL、PostgreSQL、Oracle、SQL Server、MongoDB、ClickHouse、Doris等也支持API接口和Excel文件上傳。選哪種數(shù)據(jù)源主要看你的數(shù)據(jù)平時(shí)存在哪。我自己的經(jīng)驗(yàn)是數(shù)據(jù)在業(yè)務(wù)數(shù)據(jù)庫(kù)里就直連數(shù)據(jù)庫(kù)。特點(diǎn)是實(shí)時(shí)性好、不用額外同步適合數(shù)據(jù)量中等、查詢頻率不高的場(chǎng)景比如內(nèi)部運(yùn)營(yíng)報(bào)表。數(shù)據(jù)量很大或者查詢復(fù)雜建議先同步到ClickHouse這類OLAP數(shù)據(jù)庫(kù)里再接進(jìn)來。因?yàn)镈ataEase在渲染圖表時(shí)后端要實(shí)時(shí)跑聚合查詢OLAP數(shù)據(jù)庫(kù)對(duì)大表聚合明顯快于傳統(tǒng)OLTP數(shù)據(jù)庫(kù)。數(shù)據(jù)是第三方系統(tǒng)提供的接口用API數(shù)據(jù)源。DataEase能直接請(qǐng)求HTTP接口拿到JSON數(shù)據(jù)不用自己寫中間層。這里想多說一句關(guān)于手表健康數(shù)據(jù)監(jiān)控的場(chǎng)景。很多做這類課題的人用Python寫采集腳本把華為、小米手表或手機(jī)健康A(chǔ)pp的數(shù)據(jù)爬下來、解析好最終存放在MySQL里。這個(gè)鏈路到入庫(kù)為止是自己的開發(fā)活但后面的可視化和呈現(xiàn)其實(shí)完全可以直接用DataEase做不用自己去封裝圖表組件。4.2 數(shù)據(jù)集里的維度、指標(biāo)和計(jì)算字段沒那么神秘接入數(shù)據(jù)源之后下一步是創(chuàng)建數(shù)據(jù)集。數(shù)據(jù)集可以理解為給圖表提供數(shù)據(jù)的一組字段。這里要搞懂兩個(gè)基礎(chǔ)概念維度和指標(biāo)。維度描述數(shù)據(jù)的角度通常是文本或時(shí)間類型比如城市時(shí)間設(shè)備型號(hào)。它決定圖表怎么分組。指標(biāo)可以被計(jì)算的數(shù)據(jù)通常數(shù)值類型比如步數(shù)心率溫度。它決定圖表展示什么數(shù)值。打個(gè)比方你想看一周內(nèi)每天的步數(shù)變化那么時(shí)間就是維度步數(shù)就是指標(biāo)如果你想看不同運(yùn)動(dòng)類型的平均時(shí)長(zhǎng)那運(yùn)動(dòng)類型是維度平均時(shí)長(zhǎng)是指標(biāo)。在DataEase的數(shù)據(jù)集編輯界面里你可以設(shè)置字段的類型是維度還是指標(biāo)。它還支持新增計(jì)算字段比如用心率最大值-心率最小值算出波動(dòng)幅度或者用步數(shù)/1000換算成千步。這種能力是我比較喜歡的點(diǎn)——有些簡(jiǎn)單的字段加工在數(shù)據(jù)集層面完成就行不需要回?cái)?shù)據(jù)庫(kù)改表。4.3 視圖從數(shù)據(jù)到圖表的翻譯器數(shù)據(jù)集準(zhǔn)備好了接下來就是創(chuàng)建視圖。視圖就是一張具體的圖表比如柱狀圖、折線圖、餅圖、明細(xì)表格、漏斗圖、地圖等。創(chuàng)建一個(gè)視圖的操作流程一般是進(jìn)入儀表板編輯頁(yè)拖一個(gè)圖表組件出來選擇對(duì)應(yīng)的數(shù)據(jù)集然后把維度字段拖到維度欄、指標(biāo)字段拖到指標(biāo)欄再選一個(gè)圖表類型。整個(gè)過程是拖拽式的不會(huì)寫代碼完全不影響操作。圖表類型的選擇有一點(diǎn)思路可以參考趨勢(shì)變化用折線圖排名對(duì)比用柱狀圖占比關(guān)系用餅圖或環(huán)形圖分布情況用地圖多維度匯總用透視表。DataEase里每種圖表右下角都有配置項(xiàng)可以調(diào)顏色、坐標(biāo)軸、單位、圖例等。視圖做完之后多個(gè)視圖就可以組合成儀表板儀表板。儀表板就是一個(gè)看板頁(yè)面你可以像拼積木一樣把多個(gè)視圖擺在一個(gè)頁(yè)面上還可以添加文本標(biāo)題、Tab頁(yè)簽設(shè)置聯(lián)動(dòng)篩選器讓看板上所有圖表根據(jù)同一個(gè)篩選條件統(tǒng)一變化。這條鏈路想明白了DataEase操作層面基本就通了。5. 用一個(gè)完整例子串起來手表健康數(shù)據(jù)監(jiān)控看板理論說多了容易飄我結(jié)合前面提到的基于Python的手表數(shù)據(jù)監(jiān)控及分析可視化場(chǎng)景串一個(gè)完整示例。這個(gè)例子不是為了讓你照著抄代碼而是幫你打通數(shù)據(jù)采集→數(shù)據(jù)入庫(kù)→DataEase接入→看板展示的整條思路。5.1 場(chǎng)景設(shè)定與數(shù)據(jù)準(zhǔn)備假設(shè)你已經(jīng)用Python寫好了采集腳本定時(shí)從手表或手機(jī)健康A(chǔ)pp抓取數(shù)據(jù)整理之后寫入MySQL數(shù)據(jù)庫(kù)。表結(jié)構(gòu)大致是字段名類型說明idint主鍵datedate日期hourint小時(shí)heart_rate_maxint最大心率heart_rate_minint最小心率heart_rate_avgint平均心率stepsint當(dāng)天累計(jì)步數(shù)sleep_minutesint睡眠時(shí)長(zhǎng)分鐘sport_typevarchar運(yùn)動(dòng)類型跑步/騎行/步行sport_minutesint運(yùn)動(dòng)時(shí)長(zhǎng)分鐘這類數(shù)據(jù)是典型的時(shí)序數(shù)據(jù)每天會(huì)產(chǎn)生幾十上百條記錄。Python腳本只要負(fù)責(zé)寫庫(kù)剩下的交給DataEase。5.2 在DataEase里完成從接入到上屏第一步在DataEase數(shù)據(jù)源頁(yè)面新建MySQL數(shù)據(jù)源填上數(shù)據(jù)庫(kù)地址、端口、庫(kù)名、賬號(hào)密碼連接測(cè)試通過后保存。第二步基于這個(gè)數(shù)據(jù)源創(chuàng)建數(shù)據(jù)集。你可以直接用這張手表數(shù)據(jù)表也可以寫SQL做加工比如按天匯總步數(shù)和睡眠均值。我的建議是如果DataEase的數(shù)據(jù)源能連到業(yè)務(wù)庫(kù)盡量在數(shù)據(jù)源側(cè)用SQL把數(shù)據(jù)粒度控制好不要每次查詢都全表掃描。第三步新建儀表板開始拖拽視圖。比如一個(gè)心率趨勢(shì)折線圖維度選date指標(biāo)選heart_rate_avg就能看到心率變化趨勢(shì)。一個(gè)每日步數(shù)柱狀圖維度選date指標(biāo)選steps可以看出哪天的運(yùn)動(dòng)量最足。一個(gè)運(yùn)動(dòng)時(shí)長(zhǎng)分布餅圖維度選sport_type指標(biāo)選sport_minutes看看跑步和騎行各占多少。一個(gè)睡眠充足度明細(xì)表或狀態(tài)圖通過計(jì)算字段IF(sleep_minutes 480, 充足, 不足)來生成一個(gè)狀態(tài)維度再統(tǒng)計(jì)次數(shù)。第四步給儀表板加篩選器比如按下拉框可以選擇日期范圍。這樣一來整塊看板就從一個(gè)靜態(tài)圖集變成了一個(gè)可以交互的監(jiān)控頁(yè)面。5.3 看板做出來了然后呢看板只是手段不是目的。放在手表數(shù)據(jù)監(jiān)控這個(gè)場(chǎng)景里你實(shí)際上是想回答幾個(gè)問題最近一個(gè)月我的心肺功能變化趨勢(shì)是怎樣每周運(yùn)動(dòng)時(shí)長(zhǎng)和睡眠質(zhì)量的關(guān)聯(lián)性如何哪種運(yùn)動(dòng)類型對(duì)降低靜息心率最有效這些問題的答案在上面的折線圖、柱狀圖、餅圖組合起來看的時(shí)候會(huì)比對(duì)著原始數(shù)據(jù)表容易判斷很多。DataEase還支持將儀表板通過鏈接分享給其他人不需要對(duì)方登錄系統(tǒng)也能看到權(quán)限由你控制。這在課程設(shè)計(jì)答辯、團(tuán)隊(duì)匯報(bào)時(shí)非常實(shí)用。6. 使用DataEase一段時(shí)間后我最想提醒你的幾件事工具這東西用一段時(shí)間才知道坑在哪里。下面幾點(diǎn)都是我實(shí)際踩過或者看別人踩過的寫出來幫你避一避。6.1 性能優(yōu)化從數(shù)據(jù)源設(shè)計(jì)就開始DataEase本身不產(chǎn)生數(shù)據(jù)它是個(gè)搬運(yùn)工。所以看板性能的瓶頸往往不在DataEase本身而在你接給它的數(shù)據(jù)。同樣的數(shù)據(jù)集查詢速度可能差幾十倍。我的建議是如果數(shù)據(jù)量超過百萬行優(yōu)先把數(shù)據(jù)同步到ClickHouse或Doris里再建模不要在MySQL里硬抗大數(shù)據(jù)量聚合。定時(shí)同步任務(wù)設(shè)置要合理不要每5分鐘全量刷新一次大表。數(shù)據(jù)實(shí)時(shí)性要求不高的場(chǎng)景每天凌晨更新一次足夠了。數(shù)據(jù)集能加篩選條件就加篩選比如只取最近90天既保證看板時(shí)效性又減少加載壓力。6.2 權(quán)限與協(xié)作不止是做個(gè)圖如果你是一個(gè)人用權(quán)限管理無所謂。但團(tuán)隊(duì)協(xié)作時(shí)這個(gè)問題馬上浮出水面。DataEase里面數(shù)據(jù)源和數(shù)據(jù)集是全局資源如果你給了普通用戶數(shù)據(jù)源管理權(quán)限他就能看到所有數(shù)據(jù)。所以我的建議是權(quán)限按最小化原則配置。分析師可以建數(shù)據(jù)集、做看板但業(yè)務(wù)人員最好只給查看儀表板的權(quán)限。還有一點(diǎn)DataEase里的應(yīng)用和儀表板是分開的。你可以把一個(gè)儀表板發(fā)布成應(yīng)用分享給指定用戶或用戶組。分享時(shí)注意勾選允許查看者導(dǎo)出數(shù)據(jù)這個(gè)選項(xiàng)——如果你不希望數(shù)據(jù)被下載走記得把它關(guān)掉。6.3 版本升級(jí)與備份開箱即用的另一面開源工具的好處是迭代快壞處也是迭代快。DataEase的版本更新不算慢新功能確實(shí)香但升級(jí)前一定要看官方文檔里的升級(jí)說明特別是數(shù)據(jù)是否兼容、是否需要備份。我的習(xí)慣是每次升級(jí)前先用mysqldump把DataEase的元數(shù)據(jù)庫(kù)導(dǎo)出一份容器配置文件和掛載目錄整體打包備份。這樣即便升級(jí)出問題也能快速回滾。畢竟數(shù)據(jù)看板本身丟了可以重做但接入的數(shù)據(jù)源配置、用戶權(quán)限這些元數(shù)據(jù)丟了恢復(fù)起來非常麻煩。另外容器化部署下如果你要備份直接備份整個(gè)DataEase安裝目錄里的數(shù)據(jù)掛載目錄會(huì)更省事例如默認(rèn)的數(shù)據(jù)目錄/opt/dataease下就包含了元數(shù)據(jù)庫(kù)、Doris數(shù)據(jù)目錄等。具體路徑以版本為準(zhǔn)。寫到這里說點(diǎn)掏心窩的話DataEase不是萬能的它解決不了數(shù)據(jù)質(zhì)量差、業(yè)務(wù)口徑亂的問題但它確實(shí)把可視化分析這件事的門檻拉低了一大截。你在用Python做數(shù)據(jù)采集和處理的時(shí)候不用再為怎么把這些數(shù)變成領(lǐng)導(dǎo)看得懂的圖發(fā)愁前面處理數(shù)據(jù)花的精力在這兒能真正落地。下一篇開始我會(huì)從數(shù)據(jù)源接入的細(xì)節(jié)講起把每一步操作都過一遍包括怎么處理臟數(shù)據(jù)、怎么做多表關(guān)聯(lián)以及怎樣設(shè)計(jì)一張結(jié)構(gòu)清晰的分析看板。如果你手頭正好有手表數(shù)據(jù)監(jiān)控這類項(xiàng)目可以先把數(shù)據(jù)準(zhǔn)備好下一篇文章我們一起把它變成看得見、說得清的可視化看板。