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.mzph.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参数。…