
Superset簡介
Apache Superset 是一款現代化的開源資料工具,用于資料探索和資料可視化。它提供了簡單易用的無代碼可視化建構器和聲稱是最先進的 SQL 編輯器,使用者可以使用這些工具快速地建構資料儀表盤。
Apache Superset 将 SQL IDE、資料浏覽工具、拖拽式儀表闆編輯器和插件組合使用,以建構自定義的可視化效果,支援從許多關系資料庫和非關系資料庫中建立儀表闆,這些資料庫包括 SQLite、MySQL,以及 Amazon Redshift、Google BigQuery、Snowflake、Oracle 資料庫、IBM DB2 和其他各種相容的資料源,并且可以連接配接到 Apache Drill 和 Apache Druid。此外,Superset 還适用于雲原生場景和 Docker。
主要具有以下功能特性:
- 豐富的資料可視化集
- 易于使用的界面,用于浏覽和可視化資料
- 建立和共享儀表闆
- 與主要身份驗證提供程式(資料庫,OpenID,LDAP,OAuth和REMOTE_USER通過Flask AppBuilder內建)內建的企業就緒身份驗證
- 可擴充的高粒度安全性/權限模型,允許有關誰可以通路單個要素和資料集的複雜規則
- 一個簡單的語義層,允許使用者通過定義哪些字段應顯示在哪些下拉清單中以及哪些聚合和功能度量可供使用者使用來控制如何在UI中顯示資料源
- 通過SQLAlchemy與大多數說SQL的RDBMS內建
以上那些都是廢話,老實說對開發人員最大的吸引力:支援的資料源足夠多,界面足夠花裡胡哨!
Superset豐富的資料源支援和圖表展示
上面展示了Superset支援的圖表類型的冰山一角,另外Superset深度內建了非常豐富的資料源:
這其中,包含了大資料領域常見的 Druid、ClickHouse、Presto等OLAP資料庫,這些資料庫都是大資料領域最經常應用的。
你還可以通過直接寫 SQL 來展示資料:
Superset極其簡單的安裝和配置
大家要特别注意,由于Superset是Python開發的,是以本地需要進行Python的環境安裝。另外,需要有pip這個包管理工具。這對Java為主的大資料體系的程式員有一丢丢的挑戰,不過相信大家可以克服。
由于小編隻是進行測試,我本地直接使用pip安裝:
#安裝
pip install superset
#建立管理者使用者名和密碼
fabmanager create-admin --app superset
#初始化
superset db upgrade
#裝載樣例資料
superset load_examples
#建立預設角色和權限
superset init
#啟動
superset runserver
更推薦大家使用Docker Compose的方式安裝:
$ git clone https://github.com/apache/superset.git
$ cd superset
$ docker-compose up
然後就可以通路本地的:http://localhost:8088 進入到Superset的首頁了。
目前Superset幾乎支援了市面上主流的常用資料庫,我們可以對照官網的文檔安裝不同資料源所需要的依賴包。
你可以參考這裡:https://superset.apache.org/docs/databases/installing-database-drivers#supported-databases-and-dependecies 。
連結PostgreSQL
我們本地使用PostgreSQL進行測試,首先要安裝psycopg2:
pip install psycopg2
然後就可以通過
postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name>
來連結到Superset了。
- 新增資料源
選擇Source -> Databases,點選加号新增資料源:
- 連結到資料庫
在進行這步操作之前,小編把測試資料導入到了Postgresql中,導入方法在這裡:https://github.com/dylburger/noaa-ghcn-weather-data。
- 建立表
加好後回彈出提示:
在分析頁面中,可以針對某一個表事先定義的時間字段、次元及名額字段進行資料探索分析,并可以選擇相應的圖表進行可視化展示。
這個做法Superset應該是參考了衆多中間件對資料列定義的方式,在此進行限制,哪些列可以進行聚合運算等等。
然後就是一系列的定制化操作:
- 圖表類型選擇
- 時間範圍選擇
- 計算次元選擇
- 聚合次元選擇
然後,運作我們的自定義選項:
然後就可以看到展示的效果:
是不是非常騷氣。最後我們可以把多個圖表整合到Dashboards中。
Superset權限體系
Superset的權限體系是通過Flask AppBuilder (FAB)完成,Flask-AppBuilder是基于Flask實作的一個用于快速建構Web背景管理系統的簡單的架構。
Superset附帶一組由Superset自己處理的角色。随着Superset的發展,您可以假設這些角色将保持最新狀态。不建議您通過删除或添權重限來以任何方式更改這些角色,因為在您運作下一個超級叢集初始化指令時,這些角色将重新同步到其原始值。
Superset支援使用者自定義建立一個角色,例如:您可以建立一個角色Financial Analyst,該角色将由一組資料源(表)和/或資料庫組成。然後使用者将被授予Gamma,Financial Analyst,或者sql_lab角色都可以。
Superset的預設角色有:Admin、Alpha、Gamma、sql_lab、Public,:
Admin
管理者有所有的權利,其中包括授予或撤銷其他使用者和改變其他人的切片和儀表闆的權利。
Alpha
alpha可以通路所有資料源,但不能授予或撤消其他使用者的通路權限,并且他們也隻能修改自己的資料。alpha使用者可以添加和修改資料源。
Gamma
Gamma通路有限。他們隻能使用他們通過另一個補充角色通路的資料源中的資料。他們隻能通路檢視從他們有權通路的資料源制作的切片和儀表闆。目前,Gamma使用者無法更改或添加資料源。我們假設他們大多是内容消費者,雖然他們可以建立切片和儀表闆。
還要注意,當Gamma使用者檢視儀表闆和切片清單視圖時,他們隻會看到他們有權通路的對象。
sql_lab
sql_lab角色用于授予需要通路sql lab的使用者,而管理者使用者可以通路所有的資料庫,預設情況下,Alpha和Gamma使用者需要一個資料庫的通路權限。
Public
允許登入使用者通路一些Superset的一些功能。
使用感受
在資料可視化方向有很多與 Superset 類似的競品,比如國外知名的開源的有 Redash 、 Metabase,商業版的有Tableau。
整體從了解Superset的背景到使用過程,小編最大的感受是:
1. 效率高、Developer Friendly(對開發者友好),适合那些需要快速支援業務的場景,尤其是BI人員看闆需求。
2. 感覺這是一個程式員主導的産品,基于Python開發,對于使用者來說需要有Python技術棧才能進行二次開發。
3. 權限體系小規模使用還算友善,大規模使用需要很高的配置和運維成本。
後續再有新的發現再來告知大家,散會。
大資料可視化從未如此簡單 - Apache Zepplien全面介紹
後起之秀Pulsar VS. 傳統強者Kafka?誰更強
基于Prometheus+Grafana打造企業級Flink監控系統