数据驱动决策:Superset+DolphinDB 可视化分析市场行情
本页是一篇教程型文章:引入 Apache Superset 与 DolphinDB 结合,用于市场行情相关的数据分析、可视化与仪表盘实践。
Source: https://dolphindb.cn/blogs/163
What this page covers
- Superset 的安装、初始化与启动流程。
- Python/Miniconda 环境与 Superset、pydolphindb 版本要求与安装命令。
- DolphinDB 侧的数据准备:catalog、schema、表与模拟数据。
- Superset 连接 DolphinDB:创建连接与 URI 参数。
- 在 Superset 中创建 dataset 与元数据刷新说明。
- 基于股票数据制作多类图表并组合为仪表盘。
- 集成方式说明与兼容性限制/学习用途声明。
技能认证特训营第二期正式开启(限时报名)
页面顶部提供活动报名提示与报名链接入口。
- 提供一个活动报名入口链接。
- 报名链接指向 qingsuyun.com 的活动页面。
数据驱动决策:Superset+DolphinDB 可视化分析市场行情
给出文章标题、作者与发布日期信息,并引入将 Superset 与 DolphinDB 结合用于行情可视化分析的主题。
- 文章发布日期为 2025-03-26。
- Superset 被描述为由 Apache 软件基金会维护的开源数据可视化与数据探索工具。
- Superset 被描述为可帮助构建交互式仪表盘,并支持多种图表类型。
- 文章引入将 DolphinDB 与 Superset 结合用于数据分析与可视化的场景。
1. 安装部署
概述在 Python 虚拟环境下安装、初始化并启动 Superset 的步骤方向。
- 安装与部署过程在 Python 虚拟环境下进行。
- 流程包含安装、初始化与启动 Superset。
- 后续步骤以分节形式展开说明。
1.1 安装 Python 运行环境
说明使用 Miniconda 创建虚拟环境,并给出 Superset 与 pydolphindb 的版本要求与安装命令示例。
- Superset 运行要求 Python 3.10 或以上版本。
- 示例使用 conda 创建并激活名为 superset 的虚拟环境(Python 3.11)。
- 依赖安装方式为使用 pip 安装 requirements.txt。
- pydolphindb 要求安装 1.1.1 或以上版本,示例为 pydolphindb==1.1.1。
- pydolphindb 1.1.1+ 被描述为实现 Superset 所需的 DBAPI2.0 相关数据库元信息接口。
1.2 配置环境变量及初始化
通过创建 superset_config.py、设置环境变量,并执行升级与初始化命令完成 Superset 初始化。
- SECRET_KEY 建议为长度 32 位以上的随机字符串。
- 文中给出用 DolphinDB 脚本生成随机密钥的示例方法。
- 文中给出创建 superset_config.py 并写入 SECRET_KEY 的示例命令。
- 文中给出 FLASK_APP、SUPERSET_HOME、SUPERSET_CONFIG_PATH 的环境变量示例。
- 文中给出执行 supersetdb upgrade、flask fab create-admin、supersetinit 的初始化命令序列。
1.3 启动 Superset
给出 Superset 启动命令与访问地址示例,并展示登录界面相关说明。
- 文中给出 superset run 的启动命令示例(含主机与端口参数)。
- 访问示例为通过浏览器打开 http://ip:8088。
- 端口由启动参数 -p 指定。
- 本节包含对界面/登录相关内容的展示与说明。
2. 数据准备
在 DolphinDB 中创建 catalog 与 schema、创建行情分布式表,并用 MockData 生成模拟股票行情数据与共享表。
- 用于 Superset 访问的 DolphinDB 版本要求为 3.00.0 及以上。
- 使用 DolphinDB MockData 模块模拟一天的股票行情数据。
- 案例中创建的 catalog 名称为 stock。
- 案例中通过 stockSnapShotPT("dfs://level2","snapshot") 创建 snapshot 分布式表。
- 案例中创建 schema:createSchema("stock","dfs://level2","level2")。
3. 连接至 DolphinDB
在 Superset 中创建 DolphinDB 数据库连接并创建 dataset,使 Superset 可访问 DolphinDB 数据。
- 本部分目标是在 Superset 中建立到 DolphinDB 的连接。
- 本部分包含创建 dataset 的步骤。
- 创建连接与创建 dataset 分别在后续小节展开。
3.1 创建连接
通过 Superset 设置菜单进入数据库连接页面,选择 DolphinDB 类型,并按 URI 格式填写连接参数与测试连接。
- 入口路径为 Settings → Database Connections。
- 连接 URI 格式为 dolphindb://user:password@host:port/catalog。
- URI 参数包括 user、password、host、port 与 catalog。
- 可使用 TEST CONNECTION 进行测试连接。
- 可使用 CONNECT 提交并连接数据库。
3.2 创建 dataset
在 Superset 中选择数据库、schema 与 table 创建 dataset,并说明共享表选择与元数据刷新机制。
- Superset 使用 dataset 管理数据,并作为图表数据源。
- 创建 dataset 时选择数据库连接、SCHEMA 与 TABLE。
- 创建按钮包含 “CREATE DATASET AND CREATE CHART”,并注明后续 CREATE CHART 可忽略。
- 除分布式表外,也可选择 _shared_table 选取共享内存表。
- Superset 通常会缓存数据库元信息,必要时可点击刷新按钮更新。
4. 可视化分析
基于股票案例数据在 Superset 中制作多种图表,并最终组合为仪表盘进行分析展示。
- 案例包含趋势类图表分析。
- 案例包含表格类图表展示行情信息。
- 案例包含柱状图、词云与大数字等图表类型。
- 多个图表被组合到仪表盘中展示。
4.1 市场深度趋势图
使用折线图基于 snapshot 数据集配置时间轴、时间粒度、过滤与自定义指标,并生成与保存市场深度趋势图。
- 趋势图的 X-AXIS 通常选择时间字段。
- TIME GRAIN 用于对 X 轴时间列进行聚合展示。
- FILTERS 对应 SQL 的 where 条件。
- METRICS 为图表展示指标,并建议选择 CUSTOM SQL 手动编写。
- CUSTOM SQL 输入框可使用合法的 DolphinDB SQL(含内置与自定义函数)。
- 示例指标包含 sum(rowSum(OfferOrderQty)) 与 sum(rowSum(BidOrderQty))。
- 可通过 View query 查看界面配置生成的 SQL 以确认正确性。
- 可通过右上角 SAVE 并输入 CHART NAME 保存图表。
4.2 最新行情信息
使用 Table 图表配置字段与过滤条件,按交易时间倒序与行数限制展示最新行情,并可调整日期显示格式。
- 该表格用于查看某股票最新行情信息(示例描述包含多类字段)。
- 示例设置在 FILTERS 中选择 SecurityID。
- 示例设置按交易时间倒序排序。
- 示例设置 ROW LIMIT 为 50。
- 示例通过 CUSTOMIZE 设置 tradeDate 的显示格式为 %Y-%m-%d。
4.3 成交量分布图
使用柱状图按分钟聚合成交量,并以证券代码为维度对比两只股票;同时说明方向与缩放配置。
- 示例分析对象为“000076”和“000024”每分钟的成交量。
- DIMENSIONS 示例选择 SecurityID。
- FILTERS 示例筛选 SecurityID 与 TradeDate。
- CUSTOMIZE 可选择柱状图水平或垂直方向。
- DATA ZOOM 可缩放 X 轴范围。
4.4 市场成交词云图
使用 WordCloud 以证券代码为维度、以成交金额指标控制字号,并说明旋转方向、字体大小等自定义项。
- 词云图被描述为可直观显示热点事件。
- 在股票市场场景中,词云图被描述为适合显示热门股票。
- DIMENSION 示例选择 SecurityID。
- METRIC 示例为 sum(totalValueTrade),用于控制词条大小。
- 可控制词条旋转方向与字体大小。
4.5 总成交量图
使用 Big Number 图表通过自定义指标计算并展示某股票某日总成交量。
- 该图表用于展示个股在某个交易日的总成交量。
- 示例 METRIC 表达式为 sum(NumTrades)。
- 该图表以关键数字形式展示结果。
4.6 使用仪表盘
创建仪表盘并拖拽组合图表,设置仪表盘属性,并通过分享链接与权限管理进行共享访问。
- 可通过 Dashboards 菜单创建仪表盘。
- 可将右侧图表拖入仪表盘并调整位置和大小。
- Edit properties 可设置名称、权限与色彩主题等属性。
- 可设置 URL SLUG。
- Share → Copy permanlink to clipboard 可获取仪表盘 URL。
- 访问者需要具备登录 Superset 权限。
- 支持用户/组与角色权限管理,并在 Settings 中配置用户与角色。
- 文中给出默认仪表盘 URL 示例形态(被描述为不易记)。
- 设置 URL SLUG 后可通过更短路径访问(文中给出示例)。
5. 总结
总结集成方式与价值,并列出当前兼容性限制与学习用途声明。
- Superset 与 DolphinDB 的交互被描述为通过调用 pydolphindb 的元数据接口实现。
- TIME 类型字段显示可能会带上固定日期 1970-01-01。
- 文中指出 Superset TIME GRAIN 不支持 Week、Month、Quarter。
- 文中指出暂不支持 Handlebars、Event Flow、Map 等图表类型。
- 案例为模拟数据,文中声明仅用于学习和参考。
Facts index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 文章 | 发布日期 | 2025-03-26 | high |
| Superset | 定位/性质 | 由 Apache 软件基金会维护的开源数据可视化和数据探索工具 | high |
| Superset | 能力 | 帮助用户快速构建交互式数据仪表盘,并支持丰富的图表类型 | medium |
| DolphinDB 与 Superset 结合 | 用途/效果 | 更高效进行数据分析和可视化,监控关键业务指标(如市场行情、交易量等),实现更好的数据驱动决策 | low |
| Superset | Python 版本要求 | Python 需安装 3.10 或以上版本 | high |
| Superset 安装示例环境 | conda 虚拟环境创建命令 | conda create -n superset python==3.11;conda activate superset | high |
| Superset | 依赖安装方式 | 通过 pip 安装 requirements.txt 中的依赖(pip install -r requirements.txt) | high |
| Superset 依赖安装(中国地区) | 清华源加速命令 | pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple | high |
| pydolphindb | 版本要求 | 安装 1.1.1 或以上版本;示例安装为 pydolphindb==1.1.1 | high |
| pydolphindb 1.1.1+ | 作用 | 实现了 Superset 所需的 DBAPI2.0 相关数据库元信息接口 | medium |
| Superset 配置 | SECRET_KEY 建议 | 密钥长度建议 32 位以上随机字符串;可用 DolphinDB 脚本 rand(33..126, 32).concat("").base64Encode() 生成 | high |
| Superset 配置 | 创建 superset_config.py 示例命令 | echo "SECRET_KEY = 'cIgiAjJyZoxb4FfPzxQ8CdLJa+afcA5m+r3ezwe7XGzJ/Qj1VQWnGHRU'" > superset_config.py | high |
| Superset | 关键环境变量示例 | FLASK_APP=superset;SUPERSET_HOME=/home/peter/superset;SUPERSET_CONFIG_PATH=/home/peter/superset/superset_config.py | high |
| Superset 初始化 | 执行命令(按文中给出) | supersetdb upgrade;flask fab create-admin;supersetinit | high |
| Superset 服务启动 | 启动命令示例 | superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger | high |
| Superset 访问方式 | URL 格式 | 通过浏览器访问 http://ip:8088(端口由 -p 指定) | high |
| DolphinDB(用于 Superset 访问) | 版本要求 | 需使用 3.00.0 及以上版本(因 Superset 使用 catalog、schema 等概念) | high |
| DolphinDB MockData 模块 | 用途(本文案例) | 模拟一天的股票行情数据 | high |
| DolphinDB | 案例中创建的 catalog 名称 | stock | high |
| DolphinDB | 案例中创建的分布式表 | 使用 stockSnapShotPT("dfs://level2", "snapshot") 创建 snapshot 分布式表(注释:创建行情分布式表snapshot) | high |
| DolphinDB | 案例中创建的 schema | createSchema("stock", "dfs://level2", "level2") | high |
| 模拟数据生成(DolphinDB) | 生成参数(示例) | data = stockSnapshot(2020.01.06, 100) | high |
| DolphinDB | 案例中创建的共享表名称 | share tmp as snapshotg | high |
| Superset 连接 DolphinDB | 操作入口(菜单路径) | Settings → Database Connections(文中描述:右上角 Settings,下拉 Data 分类中 Database Connections) | high |
| Superset 连接 URI | 格式 | dolphindb://user:password@host:port/catalog | high |
| Superset 连接参数 | user | 数据库用户名 | high |
| Superset 连接参数 | password | 数据库用户对应的密码 | high |
| Superset 连接参数 | host | DolphinDB 所在服务器的主机名或 IP | high |
| Superset 连接参数 | port | DolphinDB 监听端口 | high |
| Superset 连接参数 | catalog | 数据库目录名称 | high |
| Superset 连接 DolphinDB | 连接验证/提交按钮 | TEST CONNECTION 测试连接;CONNECT 连接数据库 | high |
| Superset dataset | 用途 | Superset 使用数据集(dataset)管理数据,并以此作为图表的数据源 | high |
| Superset 创建 dataset | 步骤要点 | 点击 +DATASET,选择数据库连接、SCHEMA、TABLE,点击 CREATE DATASET AND CREATE CHART(后续 CREATE CHART 可忽略) | high |
| Superset dataset | 可选数据源类型(文中说明) | 除分布式表外,也可选择 _shared_table 选取共享内存表 | medium |
| Superset 元数据缓存 | 行为与刷新方式(文中说明) | Superset 通常会缓存数据库元信息;若非最新可点击刷新按钮更新元数据 | medium |
| 可视化分析案例 | 覆盖内容 | 通过 Superset 绘制图表分析股票数据:市场深度趋势、成交量分布、行情展示等 | high |
| Superset 折线图配置项(文中列举) | X-AXIS | 趋势图通常选择时间字段作为 X 轴 | high |
| Superset 折线图配置项(文中列举) | TIME GRAIN | 对 X 轴时间列进行聚合,在更大时间粒度(Minute、Day、Month 等)展示 | high |
| Superset 折线图配置项(文中列举) | FILTERS | 过滤器对应 SQL 的 where 条件 | high |
| Superset 折线图配置项(文中列举) | METRICS | 图表展示指标;建议选择 CUSTOM SQL 手动编写 | high |
| Superset 自定义指标(METRICS) | 支持范围(文中说明) | CUSTOM SQL 输入框中可使用所有合法的 DolphinDB SQL(含内置函数与自定义函数) | medium |
| 市场深度趋势图指标(示例) | 买卖队列计算表达式 | sum(rowSum(OfferOrderQty)) 与 sum(rowSum(BidOrderQty)) | high |
| Superset 调试技巧(文中说明) | 查看生成 SQL | 可通过右上角菜单 View query 查看界面配置生成的 SQL 以确认正确性 | high |
| 市场深度趋势图示例 SQL | 查询内容(按文中给出) | SELECT minute("TradeTime") as "minute_TradeTime", SUM(rowSum(OfferOrderQty)) as "SUM_rowSum_OfferOrderQty", SUM(rowSum(BidOrderQty)) as "SUM_rowSum_BidOrderQty" FROM snapshotg WHERE "TradeTime" >= time("09:30:00.000") && "TradeTime" < time("11:30:00.000") GROUP BY minute("TradeTime") ORDER BY "SUM_rowSum_OfferOrderQty" desc LIMIT 10000; | high |
| Superset 图表保存 | 保存方式(文中说明) | 点击右上角 SAVE,输入 CHART NAME 保存图表 | high |
| Superset 图表外观调整 | 位置 | 在图表编辑 CUSTOMIZE 栏可调整格式(如轴标签、单位显示格式等) | high |
| 最新行情信息表格 | 展示内容(文中说明) | 查看某股票最新 100 笔行情信息:交易时间、价格、买卖 10 档量价(ArrayVector 类型)等 | medium |
| Table 图表配置(示例) | 过滤与排序与行数限制 | FILTERS 中选择 SecurityID;按交易时间倒序;ROW LIMIT 设置为 50 | high |
| Superset 过滤字符串(文中提示) | 输入规则 | 字符串不需要手动加上引号或双引号 | high |
| Table 时间字段显示格式 | tradeDate 格式化方式(示例) | CUSTOMIZE → CUSTOMIZE COLUME → %Y-%m-%d,将 tradeDate 显示为日期格式 | high |
| 成交量分布图 | 分析对象(示例) | 查看“000076”和“000024”每分钟的成交量 | high |
| 柱状图配置(文中说明) | 维度与过滤字段 | DIMENSIONS 选择 SecurityID;FILTERS 中筛选 SecurityID 与 TradeDate | high |
| 柱状图自定义(文中说明) | 方向与缩放 | CUSTOMIZE 可选水平/垂直方向;DATA ZOOM 可缩放 X 轴范围 | high |
| 市场成交词云图 | 适用性(文中说明) | 词云图可直观显示热点事件;在股票市场中适合显示热门股票 | medium |
| 词云图配置(示例) | 维度与指标 | DIMENSION 选择 SecurityID;METRIC 设置为 sum(totalValueTrade) 以成交金额控制词条大小 | high |
| 词云图自定义(文中说明) | 可调项 | 可控制词条旋转方向(随机、水平、平方)及字体大小 | high |
| 总成交量图(Big Number) | 目的(文中说明) | 展示个股在某个交易日的总成交量 | high |
| Big Number 指标(示例) | METRIC 表达式 | sum(NumTrades) | high |
| 仪表盘(Dashboard) | 作用(文中说明) | 组合多个图表展示多维度数据并形成叙事逻辑,便于从不同视角分析业务表现 | medium |
| Superset 创建仪表盘 | 操作方式(文中说明) | 通过 Dashboards 菜单创建;将右侧图表拖入并可拖拽改变位置和大小 | high |
| Superset 仪表盘属性 | 可配置项(文中说明) | Edit properties 可设置仪表盘名称、权限、色彩主题等;可设置 URL SLUG | medium |
| Superset 共享仪表盘 | 分享方式(文中说明) | Share → Copy permanlink to clipboard 获取仪表盘 URL;访问者需要具备登录 Superset 权限 | high |
| Superset 权限管理 | 能力(文中说明) | 支持工程化权限管理:创建用户/组、设置图表访问与编辑权限;在 Settings → List Users/List Roles 设置用户与角色权限 | medium |
| Superset 仪表盘 URL(默认) | 示例形态 | http://ip:port/superset/dashboard/p/8pGRY22dK9D/(文中称不易记) | high |
| Superset 仪表盘 URL(使用 URL SLUG) | 示例访问路径 | 设置 URL SLUG(如 stockMarket)后可通过 http://ip:port/superset/dashboard/stockMarket 访问 | high |
| Superset 与 DolphinDB 集成方式(文中说明) | 交互机制 | Superset 通过调用 pydolphindb 的相关元数据接口实现与 DolphinDB 交互数据 | medium |
| Superset 显示 DolphinDB TIME 类型字段 | 显示问题与原因(文中说明) | TIME 类型字段会加上固定日期 1970-01-01;因 Superset 统一用 pandas.datetime 显示时间,需将 DolphinDB TIME 转为 YYYY-MM-dd HH:mm:ss 形式 | high |
| Superset TIME GRAIN | 不支持的粒度(文中说明) | 不支持 Week、Month、Quarter | high |
| Superset 图表类型兼容性(文中说明) | 暂不支持 | 暂不支持 Handlebars 图、Event Flow 图、Map 图 | high |
| 本文案例数据 | 适用范围声明(文中说明) | 模拟数据与真实市场数据差距较大,部分图表效果可能与业务直觉不符,仅用于学习和参考 | high |
| 活动报名入口 | 限时报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |