一小時建立資料分析平臺
今天教大家如何搭建一套資料分析平臺。
它可能是最簡單的搭建教程,有一點Python基礎都能完成。比起動輒研發數月的成熟系統,藉助開源工具,整個時間能壓縮在一小時內完成。
優秀的資料分析平臺,首先要滿足資料查詢、統計、多維分析、資料報表等功能。可惜很多分析師,工作的第一年,都是埋葬在SQL語句中,以SQL+Excel的形式完成工作,卻用不上高效率的工具。
說Excel也很好用的同學,請先回避一下。
另外一方面,以網際網路為代表的公司越來越重視資料,資料獲取不再是難點,難點是怎樣敏捷分析獲得洞察。
市面上已經有不少公司推出企業級的分析平臺和BI,可惜它們都是收費的。我相信不少讀者聽說過,但一直沒有機會體驗,或者老闆們囊中羞澀。現在,完完全全能免費建立一套BI系統,即可以單機版用以分析,也能私有化部署到伺服器,成為自家公司的分析工具。
這一切,只需要一小時。
Superset
Superset是一款輕量級的BI工具,由Airbnb的資料部門開源。整個專案基於Python框架,不是Python我也不會推薦了,它集成了Flask、D3、Pandas、SqlAlchemy等。
這是官網的案例,想必設計介面已經能秒殺一批市面上的產品了,很多BI真的是濃烈的中國式報表風......因為它的前端基於D3,所以絕大部分的視覺化圖表都支援,甚至更強大。
Superset本身集成了資料查詢功能,查詢對分析師那是常有的事。它支援各類主流資料庫,包括MySQL、PostgresSQL、Oracle、Impala、SparkSQL等,深度支援Druid。
後臺支援許可權分配管理,針對資料來源分配賬戶。所以它在部署伺服器後,分析師們可以通過它查詢資料,也能通過資料建立Dashboard報表。
介紹了這麼多,想必大家已經想要安裝了吧
安裝
Superset同時支援Python2和Python3, 我這裡以Python3作為演示。它支援pip形式的下載,不過我不建議直接安裝,因為Superset的依賴包較多,如果直接安裝,很容易和現有的模組產生衝突。
這裡需要先搭建Python的虛擬環境。虛擬環境可以幫助我們在單機上建立多個版本的Python。簡而言之,即可以Python2和Python3共存,也能Python3.3、3.4、3.5共濟一堂,彼此間互相獨立。
虛擬環境的安裝方式很多,pyenv和virtualenv等。這裡用Anaconda自帶的conda工具。開啟電腦終端/cmd,輸入以下命令。
conda create -n superset python=3.4
conda create是建立虛擬環境的命令。-n是環境的命名引數,在這裡,我們建立了名為superset的環境,它安裝在Anaconda的envs目錄下。python版本為3.4(superset暫時不支援3.6)。
該命令只會安裝基礎包,如果需要額外安裝其他包,在命令列後加上想要的包名字即可,如python=3.4 numpy pandas。
安裝很迅速,完成後,我們的Python環境還是預設版本,現在需要啟用虛擬環境。
source activate superset
source activate是啟用命令,superset為想要啟用的虛擬環境名。windows和mac的命令不一樣,win只要activate superset 。如果要退出,則是source deactivate或者deactivate。
啟用成功後,命令列前面會多出一個字首(superset),表明切換到了新的虛擬環境。接下來安裝superset。
pip install superset
pip會自動安裝所有的依賴,速度可能有點慢,建議更改pip源。
如果安裝過程中報錯,是部分程式缺失,像系統比較老舊的win使用者,需要安裝新版的visual c++,網上搜索教程即可。在官網的教程中,還要求pip install cryptography==1.7.2,我沒有安裝也沒有影響,供大家參考。其他報錯,都可以通過搜尋解決。
安裝成功後,需要進行初始化配置,也是在命令列輸入。
fabmanager create-admin --app superset
首先用命令列建立一個admin管理員賬戶,也是後續的登陸賬號。會依次提示輸入賬戶名,賬戶使用者的first name、last name、郵箱、以及確認密碼。fabmanager是flask的許可權管理命令,如果大家忘了密碼,也能重新設立。
superset db upgrade
初始化資料來源。
superset load_examples
載入案例資料,這裡的案例資料是世界衛生組織的資料,也是上文演示的各類視覺化圖表,大家登陸後能夠直接看到。下載速度還行。
superset init
初始化預設的使用者角色和許可權。
superset runserver
最後一步驟,啟動Superset服務。因為我們是本地環境,所以在瀏覽器輸入 http://localhost:8088 即可。在runserver後面新增 -p XXXX 可更改為其他埠。
進入登陸介面,輸入登陸密碼,大功告成。
使用
先別急著使用,因為Superset是英文,我們先把它漢化了。Superset自身支援語言切換。
進入到Superset所在目錄檔案,按我之前的步驟,應該在anaconda/envs/superset/lib/python3.4/site-packages/superset中,路徑視各位情況可能有差異。
在目錄下有一個叫config.py的檔案,開啟它,找到Setup default language這一行,修改變數。
BABEL_DEFAULT_LOCALE調整為zh,這樣介面預設為中文。languages字典中zh前面的註釋#去掉。儲存後退出。
接下來還是在Superset的目錄下新建立資料夾,按translations/zh/LC_MESSAGES的路徑依次建立三個。Superset官網提供了漢化包,在最大的同性交友網站github上下載,目錄為:
網址路徑有點長,下載後把mo檔案放在LC_MESSAGES檔案下。清除瀏覽器的快取,重新登陸localhost。
搞定!
需要注意的是,它並非完全漢化,而是漢化了superset相關的部分。部分文字被寫入在flask app的檔案中,漢化起來比較麻煩。
Superset分為多個模組,安全模組是賬號管理相關,包括角色列表,檢視許可權控制,操作日誌等。管理模組沒什麼用,主要是設計元素。
資料來源可以訪問和連線資料庫,切片是各類資料視覺化,均是單圖;看板即為Dashboard,是切片的集合,Superset提供了三個初始案例,SQL工具箱是資料查詢平臺。
麻雀雖小,五臟俱全,對於大部分中小型的企業,Superset足以應付資料分析工作。
先學習連線資料庫,這裡以我電腦中的資料庫為準,如果大家學習過早前的教程,那麼資料庫中都應該有資料分析師的練習資料,我這裡不重複了,可以看歷史文章。也可用自帶的衛生資料照著練習。
Superset使用了sqlalchemy框架,使用前需要安裝資料庫驅動程式,先退出runserver,進入superset虛擬環境,安裝Python中的MySQL驅動程式。
pip install pymysql
MySQL的驅動程式很多,除了pymysql,還有mysqlclient等。安裝好後,進入資料來源,新建一個database連線。
在SQLAlchemy URL中加入資料庫的地址,格式為:
mysql+pymysql://root:[email protected]:3306/qin?charset=utf8
mysql是資料庫型別,pymysql是驅動程式,表示用pymysql連線mysql資料庫,+號不能省略。
另外,root是資料庫登陸賬號,xxxx為密碼,這個按大家自己設立的來。localhost是資料庫地址,因為我的是本地環境,所以localhost即可,也可以是127.0.0.1。3306是埠,一般預設這個。qin是需要連線的資料庫,也是我自己設的名字。後面帶引數charset=utf8,表示編碼,因為表裡面有中文。
其他資料庫的連線大同小異,圖中綠色的連線是相關教程。
如果大家在公司網路,擁有內網訪問資料庫的許可權,也可以嘗試連線,應該是可以的,這樣就能在個人電腦上實行敏捷的BI分析。
格式命名好後,點選測試,出現seems ok,表示成功訪問。在選項下面還有個Expose in SQL Lab,允許我們在SQL工具箱查詢,要打上勾。
進入到SQL工具箱,左邊選擇table為DataAnalyst。
直接出來了資料庫的資料預覽。連查詢平臺的顏值都那麼高。大家的SQL技能應該都很不錯,有興趣可以在這裡練習一下,語法和MySQL一致。其他資料庫則是其他資料庫的語法。
執行一段SQL語句,它支援下載為CSV,我沒試過支援最大檔案的大小,但作為日常的查詢平臺是綽綽有餘了。
選擇Visualize,進入切片繪圖模式。
這裡自動匹配支援的圖表選項,包括Bar Chart條形圖,Pir Chart餅圖等。下面的選項是定義維度,我們將city,education,postitionName,salary,workYear都勾選為維度。agg_func是聚合功能,這裡將職位ID求和,改成count(),點選生成圖表。
這裡按城市生成了各職位ID求和獲得的條形圖,也就是不同城市的分析師人數。
左邊Chart Options可以調整分析需要的維度。Metrics是分析的度量,這裡是count(positionId),Series是條形圖中的類別,Breakdowns可以認為是分組或者分桶。這裡將Series改成workYear,Breakdowns改成city,點選Query執行。
條形圖變更為按工作年限和城市細分的多維條形圖。點選Stacked Bars,則切換成堆積柱形圖。操作不難。
左側的選項欄還有其他功能,這裡就不多做介紹了,和市面上常見的BI沒有多大區別,琢磨一下也就會了。
Superset支援的圖表很豐富,如果具備開發能力,也能以D3和Flask為基礎做二次開發。Airbnb官方也會不斷加入新的圖表。不同圖表,其左側的操作選項也不同。
上圖是以資料分析師職位名稱為基礎繪製的詞雲圖,生成的速度會比較慢。我們選擇save儲存。完成的圖表均存放在切片下。
Dashboard通過多個切片組合完成,每個切片連線不同的資料來源,這是BI的基本邏輯。進入看板介面,新建一個Dashboard。
設定看板相應的配置選項,因為我偷懶了,所以只做了兩個切片,大家有興趣可以繼續增加。其他選項忽略,都是自動生成的。點選save,到這一步,BI最重要的Dashboard就完成了。
瀏覽一下最終的成果吧。
關於Superset的新手教學結束了,要是部署到公司,賬號和許可權多研究下。它和市面上的其他BI沒有太多區別,不過它是我們用Python從零到有一手建立,這個感覺可比用Excel爽不少。雖然我的演示以單機版為主,將其建立在linux伺服器上大同小異。
從零開始搭建到現在,排除掉下載花費的時間,大家可以計算是不是真的只用一個小時就搭建好一個數據分析平臺?沒騙你們吧。
通過搭建Superset,資料分析新手對BI應該也有一個大概的瞭解,市面上的BI大同小異,只是側重點不同。在Superset的基礎上,往底層完成埋點採集和資料ETL,往上拓展報表監控,CRM等,這些也有不少開源軟體可用。至於機器學習,以及Hadoop和Spark更是一個大生態,把這些都算上,則是真正完整的大資料分析平臺了。
Superset也有缺陷,它使用的是ORM框架,雖然它能連線眾多的資料庫,但是它有一個關係對映過程,將SQL資料轉化為Python中的物件,這也造成它在大資料量的處理效率不如專業的BI軟體。在使用SQL工具箱時,應該儘量避免超大表之間的關聯,以及複雜的group by。
我個人的建議是,它只是一款輕量級的BI,複雜的資料關聯,應該在ETL過程中完成,Superset只需要執行最終結果表的讀取即可。它足夠支撐TB級別的資料來源讀取。技術比較成熟的團隊,也能嘗試將Superset和Kylin整合,這樣OLAP的能力又能上一個臺階。
另外,Superset中的表都是獨立的,所以多圖表間的複雜聯動並不支援,僅支援過濾,這點比較可惜。不知道Airbnb後續會不會支援。
好訊息是,這個開源專案一直在更新,github什麼也有很多新的功能特性待開發,比如dashboard上加入tab切換欄等。可以star一下關注。
轉載請聯絡原文作者
相關推薦
一小時建立資料分析平臺
今天教大家如何搭建一套資料分析平臺。 它可能是最簡單的搭建教程,有一點Python基礎都能完成。比起動輒研發數月的成熟系統,藉助開源工具,整個時間能壓縮在一小時內完成。 優秀的資料分析平臺,首先要滿足資料查詢、統計、多維分析、資料報表等功能。可惜很多分析師,工作的第一年,都是埋葬在SQL語句中,以SQL+Ex
電商大資料分析平臺專案(一)專案框架
開發可以在web專案中內嵌的js sdk。每當使用者瀏覽到網站頁面或者觸發某種事件時,會呼叫js程式碼,根據使用者cookie傳送一個session資訊這時到我們的nginx伺服器中。 nginx伺服器在接收到傳送的session後會將其寫入日誌檔案中記錄下來,這時監聽日誌檔案的flume會將session
如何在1個小時之內輕鬆構建一個Serverless 實時資料分析平臺
資料分析平臺,特別是實時資料分析,正在被越來越廣泛的應用於各個行業。 舉例來說,遊戲公司在釋出新遊戲之後,需要實時定位使用者的留存、增長等情況;快銷公司需要精確地記錄每一筆訂單的情詳情,並結合社交媒體,實時分析促銷活動引起的使用者購買行為與銷量等等。基於這些需求, AWS提供了一整套成熟的解
如何建立資料分析的思維框架
本文是《如何七週成為資料分析師》的第八篇教程,如果想要了解寫作初衷,可以先行閱讀七週指南。溫馨提示:如果您已經熟悉資料分析思維,大可不必再看這篇文章,或只挑選部分。 曾經有人問過我,什麼是資料分析思維?如果分析思維是一種結構化的體現,那麼資料分析思維在它的基礎上再加一個準則: 不是我覺得,
初學者如何快速開發大資料分析平臺
大資料在近幾年受到越來越多的關注,如何將大資料快速落地於生產實踐,產生相應的經濟價值一直是一個值得關注的問題。當談到大資料,人們首先想到的是,是不是的linux,是不是的學習java,這給大資料技術的應用帶來一定的困難。如果,有一款通用的大資料平臺,只需要針對具體的業務系統修改資料庫和演
電商大資料分析平臺(三)nginx配置及flume讀取日誌資訊
一、nginx配置 在本專案中nginx的作用只是接收客戶端傳送的事件,並將相應的session寫入日誌檔案中,所以配置較為簡單,只需要配置寫入的日誌檔案和寫入的格式 1.地址配置 server { listen
Superset視覺化資料分析平臺
1.背景 Superset 是 Airbnb 開源的資料分析與視覺化平臺,同時也是由 Python 語言構建的輕量級 BI 系統。Superset 可實現對 TB 量級資料進行處理,相容常見的數十種關係或非關係型資料庫,並在內部實現 SQL 編輯查詢等操作。除此之外,基於
Superset 資料分析平臺搭建及使用 2
Superset 資料分析平臺使用一、實驗介紹1.1 實驗內容Superset 是 Airbnb 開源的資料分析與視覺化平臺,同時也是由 Python 語言構建的輕量級 BI 系統。Superset 可實現對 TB 量級資料進行處理,相容常見的數十種關係或非關係型資料庫,並在內部實現 SQL 編輯查詢等操作。
巧用Superset大資料分析平臺搞定各類圖表
前言 其實大資料圖表展示的這類平臺有很多,Superset是其中之一,最近有個需求對各類圖表展示的開發較多,索性將工作量交給這個平臺。 介紹 Superset的中文翻譯是快船,而Superset其實是一個自助式資料分析工具,它的主要目標是簡化我們的資料
SQL Server基礎(一) VS2015 建立資料表:建表、修改表名字、往表中新增資料、查詢表,最後是資料庫檔案的屬性
VS2015 建立資料表流程 1、右擊表,建立資料表——設定主鍵 2、修改資料的名字為Inventory 3、新增資料 4、右擊資料庫庫——新建查詢,輸入SQL語法,就可以查詢表的資料了 往表中新增一行,重新查詢。你會發現,表名字不區分大小。
技本功丨甲方大人來了之運維資料分析平臺搭建實戰
袋鼠雲日誌團隊時常遇到各種各樣的甲方大人,畢竟我們是一個非常優秀的企業服務公司(自信滿滿),當然面對甲方大人的時候要做到處變不驚,臨危不亂,鎮定自若的接受需求…… 甲方大人的常用臺詞一定要記住:我們很忙,有好幾套監控系統,能不能再不砍掉監控系統的情況下,幫助我們搞定日運維需求呢?這樣的需求每
使用開源軟體快速搭建資料分析平臺
最近,國內湧現出了不少資料分析平臺產品。這些產品的目標應該都是self service的BI,利用視覺化提供資料探索的功能,並且加入機器學習和預測的功能。它們對標的產品應該是Tableau或者SAP Lumira。因為筆者曾經為Lumira開發資料視覺化的功能,對這
電子商務BI大資料商務資料分析平臺系統開發
電子商務作為線上銷售渠道,它的特點就只擁有大量客戶源和運營資料。因此BI大資料分析系統就非常適合電商這個領域。BI可以更好地促進電子商務發展,通過資料對電子商務日常運營進行業務優化,提高效益。 電子商務的行業痛點: 1.每天產生的海量資料使得效率變慢,資料使用率也不高,更為煩惱的是,分不清哪
大資料分析平臺工程師和演算法工程師崗位職責:
參與大資料平臺的搭建和優化,包括Hadoop,spark,Kafka,ELK等軟體的配置和系統優化。計算學習基礎演算法,使用Java語言和python語言實現資料處理,熟悉spark和MapReduce。瞭解AMOS,DEA,Frontier,統計分析的基本步驟
Ebay開源 Pulsar:實時大資料分析平臺
作者:汪興朗 汪明明王巧玲 eBay作為全球性的商務平臺和支付行業領先者,擁有海量的使用者行為資料。基於現有的hadoop大資料處理,已經不能夠滿足業務上對實時性的需求。基於eBay過去的大資料處理的經驗和對最新技術的運用,eBay探索出一個對海量的資料流進行實時的收集
拋磚引玉, 淘寶統一離線資料分析平臺設計
把這個拿出來的目的, 是想得到更多的反饋意見, 請郵件至[email protected][size=large]歷史[/size]Hive 由 2009 年 3 月引入淘寶作為資料平臺的海量資料分析基礎框架, 引入的原因有如下幾點: (1) 不是所有使用者都懂計
大資料時代|搭建Python資料分析平臺
一、基本架構 其實沒什麼高深的東西,無非是常用的那一套: pandas, numpy, matplotlib… 但是為了更方便使用,加持了 jupyter notebook(即以前的ipython notebook)…… 又為了更方便使用,前端加了nginx或
專案一:EXCEL資料分析(5W2H法):使用者購買行為分析
專案:用EXCEL對使用者購買行為進行分析---採用5W2H框架 1.確定分析思路 1.1使用者購買行為分析:5W2 WHY:使用者購買的目的是什麼?---市場調查獲取資料 WHAT:使用者主要購買的產品?---各產品的銷量分佈
Sqlite 獲取一小時內資料sql
概述專案中用到了Sqlite資料庫,需要查詢距當前一小時內的資料,由於對Sqlite不熟,各種百度找答案,查到了很多日期函式,但是就是不起作用,最後經過摸索最終解決該問題,在此記錄一下,有需要的小夥伴也可以看一下。1.查詢距當前時間一小時內的資料SELECT * FROM t
大資料分析平臺的搭建部署案例分享
以下為原文: 夜深了,電話鈴聲響起!這不是恐怖片的開頭,卻是我們工作的開始。 2013年5月,我們收到一個電話線索,客戶需要支援幾十億資料量的實時查詢與分析,包括資料抓取和儲存,我們經過一番努力提出一個解決方案,客戶覺得有些不妥,決定自己招聘Hadoop團隊,實施該