Superset二次開發之深度解讀系列:1.概述

Apache Superset 是一款現代化的企業級商業智能 Web 應用程序,專為數據探索和可視化而設計。本概述介紹了 Superset 的架構、核心組件和主要功能,以幫助開發人員了解該系統的工作原理。

What is Apache Superset???

Apache Superset 是一個開源數據探索和可視化平臺,其設計理念是用戶友好、功能豐富且高度可擴展。它允許用戶連接到各種數據庫、創建交互式可視化效果并構建儀表板,而無需編寫代碼,同時還為高級用戶提供了強大的功能。

Superset 基于 Python Flask 后端和基于 React 的前端構建。它通過 SQLAlchemy 支持多種數據庫和數據引擎,并通過基于插件的系統提供各種可視化選項。

資料來源:

  • superset/config.py

Key Features?主要特點

Superset 為數據瀏覽和可視化提供了一套全面的功能:

  1. SQL Lab用于直接查詢數據庫的交互式 SQL 編輯器
  2. Chart Builder用于創建可視化的無代碼界面
  3. Dashboard Builder用于將可視化合并到交互式儀表板中的工具
  4. Database Connections?支持 30+ 數據庫,包括 PostgreSQL、MySQL、BigQuery、Snowflake 等常用數據庫
  5. Security?使用基于角色的權限系統進行精細訪問控制
  6. Caching?可配置的緩存以提高性能
  7. API用于自定義和集成的編程訪問

資源來源:

  • superset/config.py

System Architecture?系統架構

Superset 遵循客戶端-服務器架構,具有單獨的前端和后端組件,通過 REST API 進行通信。

High-Level Architecture?高級架構

資源來源:

  • superset/models/core.py
  • superset/security/manager.py

Data Flow?數據流

下圖說明了數據如何流經 Superset 系統

資料來源:

  • superset/common/query_context.py
  • superset/views/core.py

Core Components??核心組件

Superset 的架構由幾個核心組件組成,這些組件協同工作以提供其功能:

Database Connectors and Engine Specs???數據庫連接器和引擎規格

Superset 通過 SQLAlchemy 連接到各種數據庫。每個受支持的數據庫都有一個?EngineSpec?類,用于處理特定于數據庫的功能,例如時間粒度表達式、類型映射和查詢執行。

資料來源:

  • superset/db_engine_specs/base.py
  • superset/db_engine_specs/presto.py
  • superset/db_engine_specs/hive.py
  • superset/db_engine_specs/postgres.py

Data Models?數據模型

Superset 中表示系統中不同實體的核心數據模型:

Model描述
Database表示數據庫連接
SqlaTable表示數據集/表
TableColumn數據集中的列
SqlMetric數據集上定義的指標
Slice單獨的圖表/可視化
Dashboard圖表集合
User超集用戶
Role安全角色

資料來源:

  • superset/models/core.py
  • superset/connectors/sqla/models.py
  • superset/security/manager.py

Visualization System?可視化系統

Superset 使用基于插件的可視化系統,該系統支持多種圖表類型

資料來源:

  • superset/viz.py
  • superset/common/query_object.py
  • superset/common/query_context.py

Security Model 安全模型

Superset 基于 Flask-AppBuilder 實現了一個健壯的安全模型:

資料來源:

  • superset/security/manager.py
  • superset/views/base.py

Configuration and Deployment?配置和部署

可以通過?superset_config.py?中的各種設置來配置 Superset。主配置文件?superset/config.py?包含所有可以覆蓋的默認設置。

Deployment Options??部署選項

Superset 可以通過多種方式進行部署:

部署方式描述
Docker使用官方 Docker 鏡像
Docker Compose使用 Docker Compose 設置多容器
Kubernetes使用 Helm 圖表進行 Kubernetes 部署
手動安裝從 PyPI 使用 pip

Feature Flags?功能標志

Superset 使用功能標志來啟用或禁用某些功能。這些可以在?superset_config.py?中配置:

FEATURE_FLAGS = {"DRILL_BY": True,"DASHBOARD_VIRTUALIZATION": True,"EMBEDDABLE_CHARTS": True,"SQL_VALIDATORS_BY_ENGINE": True
}

資料來源:

  • superset/config.py?
  • RESOURCES/FEATURE_FLAGS.md

Extensibility?可擴展性

Superset 的設計使其可以通過多種方式進行擴展

  1. Database Support:通過創建自定義引擎規范添加對新數據庫的支持
  2. Visualizations:創建自定義可視化插件
  3. Authentication:與自定義身份驗證系統集成
  4. API Integration:使用 Superset 的 REST API 與其他系統集成

資料來源:

  • superset/db_engine_specs/base.py
  • superset/views/base.py

?Getting Started??入門

對于希望貢獻或定制 Superset 的開發人員,代碼庫的組織方式如下

superset/?——Superset 后端代碼

?-- superset/views/?——Flask 視圖和 API 端點

?-- superset/models/?——SQLAlchemy 模型

?-- superset/db_engine_specs/?——數據庫引擎規范

?-- superset/connectors/?——數據庫連接器

?-- superset/security/?——安全和身份驗證

superset-frontend/?- React 前端代碼

?-- superset-frontend/src/?- 源代碼

?-- superset-frontend/plugins/?- 可視化插件

資料來源:

  • README.md
  • superset/initialization/init.py

待更新目錄

編號標題描述
1Superset二次開發之深度解讀系列:1.概述本概述介紹了 Superset 的架構、核心組件和主要功能,以幫助開發人員了解該系統的工作原理
2Superset二次開發之深度解讀系列:2.架構全面概述 Apache Superset 的架構,解釋不同組件之間的交互方式。涵蓋整體系統設計、前后端組件之間的關系、數據流和安全模型。
3Superset二次開發之深度解讀系列:2.1【架構】前端架構

詳細概述 Apache Superset 的前端架構,包括其關鍵組件、狀態管理模式以及數據在系統中的流動方式。

解釋?React 組件的組織結構、Redux 狀態管理以及前端不同部分之間的交互

4Superset二次開發之深度解讀系列:2.2【架構】后端架構介紹 Apache Superset 的后端架構,介紹核心組件、組件之間的交互以及數據在系統中的流動方式。
5Superset二次開發之深度解讀系列:2.3【架構】安全模型

介紹 Apache Superset 的安全模型,涵蓋身份驗證、授權和數據訪問控制機制。

解釋?Superset 如何實現不同級別的安全性,從用戶身份驗證到行級安全過濾。

6Superset二次開發之深度解讀系列:2.4【架構】數據流

描述數據在 Apache Superset 中的流動方式,從數據庫連接、查詢處理到可視化渲染。

提供所涉及的關鍵組件的技術概述,以及它們如何相互交互,將數據從外部源移動到面向用戶的可視化效果。

7Superset二次開發之深度解讀系列:3.前端系統

概述 Apache Superset 中的前端架構和組??件系統。

涵蓋核心 UI 組件、選擇組件以及它們之間的交互模式

8Superset二次開發之深度解讀系列:3.1【前端系統】核心UI組件

記錄 Apache Superset 前端中的核心可重用 UI 組件。

這些組件構成了 Superset 用戶界面的基礎,并在整個應用程序中廣泛使用

9Superset二次開發之深度解讀系列:3.2【前端系統】儀表盤組件

記錄 Apache Superset 中構成儀表板界面的核心組件。

重點介紹儀表板構建器、布局系統以及允許用戶與儀表板交互的過濾機制

10Superset二次開發之深度解讀系列:3.3【前端系統】篩選器系統篩選器系統為儀表板提供交互式過濾功能,允許用戶通過在多個圖表上應用約束來動態探索數據
11Superset二次開發之深度解讀系列:3.4【前端系統】SQL Lab交互式 SQL 查詢工具,允許用戶編寫和執行 SQL 查詢、可視化結果、保存和共享查詢以及探索數據庫模式
12Superset二次開發之深度解讀系列:4.后端系統后端系統,包括關鍵組件、架構以及各個部分之間的交互方式。涵蓋支持 Superset 功能的服務器端組件,從數據庫連接到查詢處理和安全性等各個方面
13Superset二次開發之深度解讀系列:4.1【后端系統】配置系統提供一種靈活且分層的方法來配置 Apache Superset 應用程序。介紹 Superset 中的配置工作原理,包括默認設置、如何覆蓋它們、功能開關以及關鍵配置類別
14Superset二次開發之深度解讀系列:4.2【后端系統】數據庫連接解釋 Apache Superset 如何連接到各種數據庫,詳細介紹允許 Superset 與各種數據庫系統交互的架構、連接機制和特定引擎的實現。
15Superset二次開發之深度解讀系列:4.3【后端系統】SQL處理和執行?SQL 查詢的解析、轉換和執行方式
16Superset二次開發之深度解讀系列:4.4【后端系統】REST API介紹其架構、核心 API 資源、常見模式以及如何以編程方式與這些端點交互。
17Superset二次開發之深度解讀系列:4.5【后端系統】警報和報告

允許用戶安排定期報告并根據數據條件配置警報。

用戶可以通過電子郵件或 Slack 接收通知,其中包含屏幕截圖、CSV 數據或圖表和儀表板的格式化文本

18Superset二次開發之深度解讀系列:5.部署涵蓋基于 Docker 的部署、使用 Helm 的 Kubernetes 部署,以及在不同環境中部署 Superset 時需要考慮的重要配置方面
19Superset二次開發之深度解讀系列:5.1【部署】Docker 部署提供有關如何使用 Docker 部署 Apache Superset 的全面指南。其中涵蓋架構、部署方法、配置選項和常用操作
20Superset二次開發之深度解讀系列:5.2【部署】Kubernetes 部署提供使用存儲庫中包含的 Helm 圖表在 Kubernetes 上部署 Apache Superset 的詳細說明和參考
21Superset二次開發之深度解讀系列:6.貢獻介紹如何為 Apache Superset 做出貢獻。無論您是想貢獻代碼的開發者,還是想改進文檔,亦或是想參與測試,本指南都能助您一臂之力

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903717.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903717.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903717.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux系統之elfedit詳解

elfedit 是一個用于修改 ELF(可執行與可鏈接格式)文件頭的工具。它允許用戶根據指定的條件(如機器類型、文件類型、操作系統/ABI)匹配并更新 ELF 文件的頭部信息。支持 32 位和 64 位 ELF 文件,以及包含 ELF 文件的歸檔…

前端HTML基礎知識

1.HTML介紹 HTML(HyperText Markup Language,超文本標記語言)是構成網頁的基本元素,是一種用于創建網頁的標準化標記語言。HTML不是一種編程語言,而是一種標記語言,通過標簽來描述網頁的結構和內容。 超文本:超文本是…

【IP101】圖像濾波技術詳解:從均值濾波到高斯濾波的完整指南

🌟 圖像濾波魔法指南 🎨 在圖像處理的世界里,濾波就像是給圖片"美顏"的魔法工具。讓我們一起來探索這些神奇的濾波術吧! 📑 目錄 1. 均值濾波:圖像的"磨皮"大法2. 中值濾波&#xff1…

LINE FRIENDS 正式與 Walrus 合作,全新 AI 驅動的游戲即將上線

風靡全球的 LINE FRIENDS 角色即將以“minini”迷你造型登陸 Walrus,雖然尺寸更小,但承諾帶來“大”動作。IPX(LINE FRIENDS 背后的公司)打造了《minini universe: ROOM》游戲,這是一款基于其 minini 系列角色的多鏈游…

2025年信息素養大賽C++算法創意實踐挑戰賽初賽樣題及答案解析(小學組)

一、選擇題 1、下列代碼&#xff0c;能夠輸出 hello world 的是_____ A. cout (hello world) B. cout << hello world C. cout:hello world D. cout << "hello world"; 答案&#xff1a;D 解析&#xff1a;cout輸出的文本內容要用雙引號引起來 2、…

[c語言日寄]檢查環形鏈表

【作者主頁】siy2333 【專欄介紹】?c語言日寄?&#xff1a;這是一個專注于C語言刷題的專欄&#xff0c;精選題目&#xff0c;搭配詳細題解、拓展算法。從基礎語法到復雜算法&#xff0c;題目涉及的知識點全面覆蓋&#xff0c;助力你系統提升。無論你是初學者&#xff0c;還是…

黃雀在后:外賣大戰新變局,淘寶+餓了么開啟電商大零售時代

當所有人以為美團和京東的“口水戰”硝煙漸散&#xff0c;外賣大戰告一段落時&#xff0c;“螳螂捕蟬&#xff0c;黃雀在后”&#xff0c;淘寶閃購聯合餓了么“閃現”外賣戰場&#xff0c;外賣烽火再度燃起。 4 月30日&#xff0c;淘寶天貓旗下即時零售業務“小時達”正式升級…

如何在uni-app中自定義輸入框placeholder的樣式

在開發uni-app應用時&#xff0c;我們經常需要自定義輸入框&#xff08;<input>&#xff09;的樣式以匹配應用的整體設計。默認情況下&#xff0c;uni-app的輸入框提供了一些基本的樣式選項&#xff0c;但有時候我們需要更細致地控制輸入框的每個部分&#xff0c;例如pla…

使用Node編寫輕量級后端快速入門

使用Node編寫輕量級后端快速入門 node 要作為輕量級后端需要下載一些對應模塊可以參考下面命令。你可以借助 npm&#xff08;Node Package Manager&#xff09;來下載它們。 模塊下載 express&#xff1a;這是一個廣受歡迎的 Node.js Web 應用框架&#xff0c;能用于構建 Web…

從Markdown到專業文檔:如何用Python打造高效格式轉換工具

在技術寫作、學術研究和企業報告領域,Markdown因其簡潔高效的特性廣受開發者喜愛。但當需要輸出正式文檔時,Word和PDF格式仍是行業標準。傳統解決方案往往存在樣式丟失、代碼排版混亂、批量處理困難等痛點。本文將揭秘如何用Python構建一個支持多主題、保留代碼高亮、自動生成…

【docker學習筆記】如何刪除鏡像啟動默認命令

一些鏡像會在它打鏡像時&#xff0c;加入一些默認的啟動命令&#xff0c;可以通過docker inspect \<image id\>來查看Entrypoint。如下圖&#xff0c;docker run啟動時&#xff0c;會默認執行 "python3 -m vllm.entrypoints.openai.api_server" 如果不想執行&…

任意無人機手柄鏈接Unity-100元的鳳凰SM600手柄接入Unity Input System?

網上教程真少&#xff01;奮發圖強自力更生&#xff01;2025.5.1 目前有用的鏈接&#xff1a; unity如何添加自定義HID設備&#xff0c;自己開發的手柄如何支持unity。 - 嗶哩嗶哩 HID Support | Input System | 1.0.2 官方教程 https://zhuanlan.zhihu.com/p/503209742 分…

2024睿抗CAIP-編程技能賽-本科組(省賽)題解

藍橋杯拿了個省三&#xff0c;天梯沒進1隊&#xff0c;睿抗是我最后的機會 RC-u4 章魚圖的判斷 題目描述 對于無向圖 G ( V , E ) G(V,E) G(V,E)&#xff0c;我們定義章魚圖為&#xff1a; 有且僅有一個簡單環&#xff08;即沒有重復頂點的環&#xff09;&#xff0c;且所…

Java 泛型參數問題:‘ResponseData.this‘ cannot be referenced from a static contex

問題與處理策略 問題描述 Data AllArgsConstructor NoArgsConstructor public class ResponseData<T> {private Integer code;private String msg;private T data;public static final int CODE_SUCCESS 2001;public static final int CODE_FAIL 3001;public static …

用TCP實現服務器與客戶端的交互

目錄 一、TCP的特點 二、API介紹 1.ServerSocket 2.Socket 三、實現服務器 四、實現客戶端 五、測試解決bug 1.客戶端發送了數據之后&#xff0c;并沒有響應 2.clientSocket沒有執行close()操作 3.嘗試使用多個客戶端同時連接服務器 六、優化 1.短時間有大量客戶端訪…

鳥籠效應——AI與思維模型【84】

一、定義 鳥籠效應思維模型指的是人們在偶然獲得一件原本不需要的物品后,會為了這件物品的配套或使用需求,進而繼續添加更多與之相關但自己原本可能并不需要的東西,仿佛被這個“鳥籠”牽著走,最終陷入一種慣性消費或行為模式的現象。簡單來說,就是人們在心理上會有一種自…

加密解密記錄

一、RSA 加密解密 密鑰對生成 1.前端加密解密 &#xff08;1&#xff09;.vue頁面引入 npm install jsencrypt&#xff08;2&#xff09;工具 jsencrypt.js import JSEncrypt from jsencrypt/bin/jsencrypt.min// 密鑰對生成 http://web.chacuo.net/netrsakeypairconst p…

淺析 MegEngine 對 DTR 的實現與改進

分享筆者在學習 MegEngine 對 DTR 的實現時的筆記。關于 DTR 可以參考&#xff1a;【翻譯】DTR_ICLR 2021 文章目錄 MegEngine 架構設計MegEngine 的動態圖部分Imperative RuntimeImperative 與 MegDNN / MegBrain 的關系靜態圖運行時管家 —— MegBrain動態圖接口 —— Impera…

micro-app前端微服務原理解析

一、核心設計思想 基于 WebComponents 的組件化渲染 micro-app 借鑒 WebComponents 的 CustomElement 和 ShadowDom 特性&#xff0c;將子應用封裝為類似 WebComponent 的自定義標簽&#xff08;如 <micro-app>&#xff09;。通過 ShadowDom 的天然隔離機制&#xff0c;實…

CMake中強制啟用option定義變量的方法

在CMake中&#xff0c;若要在另一個CMake文件中強制啟用由option()定義的變量&#xff0c;可使用set(... FORCE)覆蓋緩存變量。具體步驟如下&#xff1a; 使用set命令強制覆蓋緩存&#xff1a; 在需要強制啟用選項的CMake文件中&#xff0c;使用set命令并指定CACHE和FORCE參數。…