跳到主要内容

Metabase

Metabase 是一个开源的商业智能工具,提供简洁易用的数据分析和可视化功能,支持丰富的数据源连接,并能够快速构建交互式仪表盘。该工具主要特点是界面友好、易于上手、支持自助分析、可视化看板制作、数据钻取探索,还集成了一个 SQL 查询编辑器,可以进行 SQL 查询和数据导出等。

通过 Metabase Apache Doris Driver,可以让 Metabase 连接到 Apache Doris 数据库,实现对 Doris 内部数据和外部数据的查询和可视化处理。

通过这个驱动程序,Metabase 可以将 Apache Doris 数据库和表作为数据源进行集成。要启用此功能,请遵循下面的设置指南:

  • 安装和配置驱动程序
  • 在 Metabase 中配置 Apache Doris 数据源
  • 在 Metabase 中构建可视化
  • 连接和使用技巧

安装 Metabase 和 Doris 驱动程序

前置要求

  1. 下载并安装 Metabase 0.48.0 及以上版本。具体参见 Metabase 安装文档
  2. 准备 Apache Doris 集群

安装 Doris 驱动程序

首先需要下载最新的 metabase-doris-driver

然后进行驱动安装,安装方式视 metabase 部署方式而定:

metabase 常规部署

  1. 下载 Driver

  2. 创建 Metabase 插件目录(如果不存在):

mkdir -p $path_metabase/plugins
  1. 将 JAR 文件复制到插件目录:
cp doris.metabase-driver.jar $path_metabase/plugins
  1. 重启 Metabase 服务

metabase docker 部署

如果 metabase 使用的是 docker 启动,则建议通过挂载 doris.metabase-driver.jar 的方式启动,docker 容器内部的插件路径为 /plugins/

  1. 下载 Driver

  2. 参考如下启动命令启动 Metabase:

docker run -d -p 3000:3000 --name metabase  -v $host_path/doris.metabase-driver.jar:/plugins/doris.metabase-driver.jar  metabase/metabase

在 Metabase 中配置 Doris 数据源

现在您已安装了 Metabasemetabase-doris-driver,让我们来看一下如何在 Metabase 中定义一个连接到 Doris 中 tpch 数据库的数据源。

连接参数说明

连接 Apache Doris 时需要配置以下参数:

参数含义示例
Display Name数据源显示名称Doris-TPCH
HostDoris FE 节点地址127.0.0.1
PortDoris Query Port(MySQL 协议端口)9030
Catalog nameCatalog 名(可选,默认为 internal)internal
Database name数据库名(必写)tpch
Username用户名root
Password密码your_password

数据库名称格式说明:

  • 内表:直接填写数据库名,如 tpch,系统会自动使用 internal catalog
  • 外表/数据湖:填写 Catalog 配置,如仅链接内表,则无需关注此项。

配置步骤

  1. 启动 Metabase 并完成登录

  2. 点击右上角的齿轮图标,选择 Admin Settings(管理设置)

Metabase 管理设�置

  1. 在左侧菜单中选择 Databases(数据库),点击右上角的 Add database 按钮

添加数据库

  1. Database type 下拉框中选择 Apache Doris

选择 Apache Doris

  1. 填写连接信息:
  • Display name: Doris-TPCH
  • Host: 127.0.0.1
  • Port: 9030
  • Database name: tpch
  • Username: admin
  • Password: ******

填写连接信息

  1. 点击 Save 保存配置

  2. Metabase 会自动测试连接并同步数据库元数据。如果连接成功,会显示成功提示

连接成功

至此,数据源配置完成!接下来就可以在 Metabase 中构建可视化了。

在 Metabase 中构建可视化

我们选择 TPC-H 数据作为数据源,Doris TPC-H 数据源构建方式参考此文档

现在我们在 Metabase 中配置了 Doris 数据源,让我们可视化数据...

假设我们需要分析不同货运方式的订单金额随时间增长曲线,用以成本分析。

创建问题(Question)

  1. 点击主页右上角的 New + 按钮,选择 Question

新建问题

  1. 选择数据源:
    • Database: Doris TPCH
    • Table: lineitem

选择数据表

使用 SQL 构建自定义指标

为了计算收入(Revenue),我们需要使用自定义 SQL 表达式:

  1. 点击右上角切换 view sql,然后点击 convert this question to SQL 编辑 SQL

切换�到 SQL 模式

  1. 输入以下 SQL 查询:
SELECT 
DATE_FORMAT(l_shipdate, '%Y-%m') AS ship_month,
l_shipmode,
SUM(l_extendedprice * (1 - l_discount)) AS revenue
FROM lineitem
WHERE l_shipdate >= '1995-01-01'
AND l_shipdate < '1997-01-01'
GROUP BY
DATE_FORMAT(l_shipdate, '%Y-%m'),
l_shipmode
ORDER BY ship_month, l_shipmode
  1. 点击右下角的 Visualize 按钮查看结果

查看结果

配置可视化图表

  1. 默认显示为表格。点击左下角的 Visualization 按钮,选择 Line 图表类型

选择折线图

  1. 可按需配置图表参数(metabase 自动配置如下):

    • X-axis: ship_month(发货月份)
    • Y-axis: revenue(收入)
    • Series: l_shipmode(货运方式)
  2. 自定义图表样式:

    • 点击 Settings 图标,可以调整颜色、标签、图例位置等
    • Display 标签页可以设置坐标轴标题、数值格式等
  3. 图表配置完成后,点击右上角的 Save 保存

  4. 输入问题名称:my-tpch,选择保存到的集合(Collection)

命名问题

创建仪表盘(Dashboard)

  1. 点击 + NewDashboard 创建新仪表盘,输入仪表盘名称:my-tpch

创建仪表盘

  1. 点击 Add a chart 将已保存的 question 添加到仪表盘

添加问题

  1. 调整图表位置和大小,点击右上角 Save 保存仪表盘

保存仪表盘

至此,已经成功将 Metabase 连接到 Apache Doris,并实现了数据分析和可视化看板制作!

高级功能

使用 Catalog 访问外部数据

Doris 支持多 Catalog 功能,可以查询外部数据源 和 跨数据源的数据查询。在 Metabase 中使用时:

  1. 在 链接配置界面配置 Catalog, 在 Database 中配置 该 catalog 下的外表数据库,例如:
    catalog: hive_catalog, database: warehouse - 访问 名为 hive_catalog 中的 warehouse 数据库

配置catalog

  1. 或者在 SQL 查询中显式指定 Catalog:
SELECT * FROM hive.warehouse.orders LIMIT 100;

使用参数化查询

Metabase 支持在 SQL 查询中使用变量,方便创建交互式仪表盘:

SELECT 
l_shipmode,
SUM(l_extendedprice * (1 - l_discount)) AS revenue
FROM lineitem
WHERE l_shipdate BETWEEN {{start_date}} AND {{end_date}}
AND l_shipmode = {{ship_mode}}
GROUP BY l_shipmode

保存后,在仪表盘中可以通过下拉框或日期选择器动态筛选数据。

性能优化建议

  1. 使用分区裁剪:在 WHERE 子句中添加分区列的过滤条件

    WHERE date >= '2024-01-01' AND date < '2024-02-01'
  2. 利用物化视图:对于复杂的聚合查询,可以在 Doris 中创建物化视图加速查询

  3. 控制结果集大小:使用 LIMIT 限制返回行数,避免一次性加载过多数据

  4. 查询缓存:Metabase 会自动缓存查询结果,合理设置缓存时间可以提升性能

连接和使用技巧

  • 驱动安装:确保将 doris.metabase-driver.jar 放在 Metabase 的 plugins 目录下,并重启 Metabase
  • 时区设置:如果遇到时区问题,可以在 JDBC 连接字符串中添加 serverTimezone=Asia/Shanghai
  • 分区表优化:合理创建 Doris 分区表,按时间分区分桶,可有效减少查询扫描的数据量
  • 网络连接:建议使用 VPC 私有连接,避免公网访问引入安全风险
  • 权限控制:细化 Doris 用户账号角色和访问权限,遵循最小权限原则
  • 元数据同步:当 Doris 中的表结构发生变化时,在 Metabase 管理页面点击 "Sync database schema now" 手动同步
  • 性能监控:对于慢查询,可以在 Doris 中使用 SHOW QUERY PROFILE 分析性能瓶颈

数据类型显示异常

  • 确保使用最新版本的 Doris Driver
  • Doris largeint 类型需要在 SQL 中显式转换:
    SELECT CAST(large_int_col AS STRING) FROM table