前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据分析利器Metabase使用指南

数据分析利器Metabase使用指南

作者头像
benny
发布2022-12-18 16:43:18
3.7K0
发布2022-12-18 16:43:18
举报

一. 为什么从 ELK 迁移到 Metabase + OLAP

1.1 ELK 的问题

  • 扩展性不强:Kibana 只能应用在 ElasticSearch 上
  • 管理不便:在阿里云等平台,一个 ElasticSearch 集群对应一个 Kibana,难以统一管理
  • 开发成本:无法将图表嵌入到其他应用中,需要二次开发图形展示
  • 性能一般:ElasticSearch 擅长全文搜索,在数据分析功能上的性能不如 OLAP 数据库,并且存在一些限制,例如去重的精度不足,上限只有40000(默认准确度保证仅有3000[1])
  • 运维成本:抛开搜索优化,仍需要维护好一套索引生命周期管理、索引模板,以及应对字段变更时的 reindex。此外,相同数据量下,Elastic 的压缩比不如列式数据库,内存占用也更高,相应的成本也要高出不少。

1.2 Metabase + 其他DB 的优势

  • 扩展性: JDBC + Clojure multi-method 实现 Driver 扩展,即使开发新 Driver 的成本也不高。
  • 统一入口: 使用相同后端存储的 Metabase 可以同时管理多个不同的 DB
  • 开发成本: 在 Metabase 开发的 Dashboard 可以直接嵌套到其他前端应用,并且有 JWT 认证等。其他人员开发的 Question、Model、Metric 可以相互引用。

至于性能和运维成本,则由所选择的后端 DB 所决定。Metabase 本身不需要进行多复杂的维护,单个 DB 故障并不会引起 Metabase 崩溃。

Metabase

二. 提问

2.1 数据源

数据源有三种

  • Raw Data,即源数据,任一数据库表都是源数据。可以直接点开任一 raw 表以表格方式查看数据。

示例订单数据

  • Question,问题,已存储的问题也可以成为数据源,例如这样一个问题:查询过去一年内每天不同来源的消息量,我们可以基于这个问题构建一个过去6个月每周的消息量问题。
  • Model,模型,可以由 Question 或 SQL 提问后转化,Model 某种程度上是一种物化视图,物化不存储数据,通常不直接用来可视化。例如有个人信息和订单两张实体表,可以把用户名和用户常买的物品、购买时间等组合为一个新的模型。

2.2 构建问题

2.2.1 组成部分
  1. 1. Data 部分即前面的数据源
  • • 可以选择需要的列,在查询数据时减少干扰,提升速度。
  • • 可以 JOIN 三种数据源,但必须在同一个数据库,当然,也要是同一种数据库。也有例外,ClickHouse 可以使用 MySQL、Postgres、MongoDB 等外表。在 Metabase 上展示为同一种数据库,但实际类型不同。JOIN 的不同模式(LEFT JOINRIGHT JOIN)可以点击图标切换。
  • • Custom Column 类似于数据库函数的接口抽象,不是所有驱动都支持该实现。一般用在统计阶段。
  1. 1. (可选)Filter 部分即过滤器,选择合适的 Filter 可以提速,也可以排除无关的结果。在数据表格预览时可以直接在列上方过滤数据,例如这里只看有折扣的客单价:

过滤数据

过滤效果

  1. 1. (可选)Summarize 部分即统计相关,需要结合分组操作。常用的例如 sum、count,如果需要构建更复杂的计算,可以使用 Custom Column,包含其他的数学函数和字符串函数,未必所有函数都可用

比较有无折扣的商品总价

  1. 1. (可选)Sort 和 Limit 即 排序和返回数量,排序在图表上的展示区别不大,最好限制返回的数量(默认 10000)特别是在源表上。
2.2.2 调试 Question

每个阶段都可以点击小三角形预览数据

  • • 在最终结果无法展示时,可以逐个阶段预览调试
  • • 在 JOIN 数据时,可以检查是否 JOIN 模式存在错误,导致结果缺少或者重复

如果仍然无法解决问题,可以点击右边的 SQL 语句按钮,由开发同学协助调试。

2.3 使用 SQL 构建问题

用 SQL 构建问题除了可以自由选择函数外,也可以使用变量作为过滤器。

使用变量的两个关键语法是 {{variable}}[[{{variable}}]] ,第一个为一般变量,第二个为可选变量,使用变量时不需要使用 where table.a = {{variable}} 方式,直接用 where = {{variable}} 使用可选变量时,不需要用 AND 连接。

有点绕?看看例子:这是一个统计不同 HTTP 方法的 SQL,将 create_timemethod 作为过滤器,其中 create_time 是可选变量。

代码语言:javascript
复制
SELECT `inner_api_log`.`method` AS `method`, 
toDate(`inner_api_log`.`create_time`) AS `create_time`, count(*) AS `count`
FROM `inner_api_log` where {{method}} [[{{create_time}}]]
GROUP BY `inner_api_log`.`method`, toDate(`inner_api_log`.`create_time`)
ORDER BY `inner_api_log`.`method` ASC, toDate(`inner_api_log`.`create_time`) ASC

过滤器可以进一步设置,例如作为下拉框(需要映射原始表,且差异值有限)或者作为搜索框等等。

SQL变量

  • • 要进一步分析,将 SQL 保存的问题作为数据源再次引用即可。
  • • 使用变量的 SQL 不可作为 Model 使用

2.4 选择可视化图表

点击可视化图形选择面板选择可用的图表,部分图表未必适合当前数据,可能点击后仍不可用。

可视化界面操作

部分图表未必适用当前数据

2.5 设置图表

2.5.1 通用设置

点击 Question 显示通用菜单,可以添加描述、添加到 Dashboard、移动或归档等。左下角的 History 按钮可以查看版本历史,每次保存或者回滚均会产生一条版本记录。

2.5.2 折线、柱状图
  • • Data:即数据源,用来选择展示的数据。数据旁边的设置按钮,可以用来格式化数据,例如数字的展示可以设置小数点,或者表示为货币,日期的格式等等
  • • Display:即展示效果,例如设置数据的颜色,设置目标线
  • • Axes:刻度,用来设置数据的呈现方式,例如大小分布很不均匀的数据(通常数据中的最大数字比最小数字大数百甚至数千倍[2])可以使用对数刻度(Log)或者幂次刻度(Power),遗憾的是,Metabase 不能选择对数的底数大小。

下图是分布不均的典型案例,由于某种数据暴涨,掩盖了其他数据的趋势展示,改为对数刻度就可以很好地展示:

线性刻度

对数刻度

  • • Labels:标签,或称图例标签(Legend Label),可以添加备注
  • • 可视化界面(右侧):除了点击图例筛选、鼠标悬停查看具体值之外,还可以点击图形上的点,弹出的窗口可以做进一步值的筛选、或者分组操作。例如原问题是按 Category 分组,这里可以进一步按时间查看趋势

快速操作数据

当 X 轴为时间轴,鼠标可以选中区间查看对应时间范围的数据分布。

选中时间范围

2.5.3 表格

表格设置面板

左侧设置面板:
  • • Columns:列属性,点击设置按钮设置列名,对于数值类型,支持以迷你条形图方式展示,对于时间类型,支持格式化时间。

列格式化

  • • Conditional Formating:即条件格式化。可以对满足条件的值高亮显示,高亮支持单色或颜色范围展示

条件格式化

颜色范围高亮

右侧展示面板
  • • 点击列名弹出快速操作,可以进行排序、过滤、或进一步统计

快速操作表格

  • • 点击具体值弹出快速筛选窗口
  • • 右下角支持下载源数据到本地(JSON、Excel 或 CSV)如设置提醒,则会定时接收到该表格的邮件。

三. Dashboard 管理

3.1 编辑 Dashboard

  • • 右上角三个按钮分别可以添加已保存的问题、添加文本(Markdown)和添加过滤器
  • • 鼠标悬停在任一组件上,可以移动位置,组件右下角可以拖动改变大小
  • • 非编辑模式,点击任一问题标题,进入到相应问题详情
  • • 对于地图类型,支持设置默认展示区域

Tips: 默认提供了世界地图和美国地图,如果不能满足你,可以在 AdminSetting 添加其他 Geojson 格式的地图。

添加自定义地图

3.2 过滤器

过滤器支持几种不同类型

过滤器类型

添加过滤器后会固定在 Dashboard 上方,不随页面移动(Binding Top),拖动过滤器改变位置

  • 设置联动的图表 点击要设置的过滤器,然后在图表上选择联动的列,选择过滤条件就会联动设置的图表。如下图所示,过去 30 天的过滤条件会应用在四个图表上。
  • • (可选)设置默认的过滤选项、过滤器名称

过滤器设置

  • 联动过滤器,一般用在多级分组上,例如省-市等多级分类,选择大一级分类会影响子分类选项。

选择州会影响城市级别过滤器选项

3.3 可视化

如果修改图表的标题、微调展示的颜色等操作,需要回到问题页修改再保存,会使操作变得繁琐,并增加不必要的新问题。

Dashboard 编辑模式下,支持在不修改图表展示类型的情况下,修改该类型图表几乎所有参数,例如下图所示,仅数据源不支持修改。

点击 reset to default 会恢复到原问题的设置。

Dashboard编辑模式下的图表设置页

3.4 叠加图表

在需要横向对比的场景,有时因为条件难以用单个 SQL 表达。

可以考虑下面的方式:

  • • 分别创建若干个问题。如果需要永久保存,可以再添加一个问题,JOIN 几个问题实现图表叠加。如果需要合并,查看 SQL 再转化为新的问题即可。

横向对比 2020 及 2019 一季度销售额

  • • 若不需要,在 Dashboard 编辑模式下,添加 Add Series,搜索已保存的问题,如果问题存在感叹号,则可能不兼容当前的图表。叠加的图表同样支持在编辑模式下分别设置图表。

添加图表

叠加图表下的设置页

3.5 点击行为
  • • 跳转到自定义链接:用来链接到外部的同一网址,或者跳转到带参数的指定详情页等。也可以跳转到指定的 Dashboard 或者问题页。

例如,在地图图表上添加搜索关键词,点击跳转到 Google 搜索页:

跳转外部链接示例

  • • 联动页面过滤器:下拉过滤器可能不够直观,下面的地图例子,当点击对应州的图形时,会同步改变州(State)过滤器,其他引用的图表就会一起更新。

联动过滤器

四. 管理数据

4.1 管理数据源

添加数据源时,管理员需要做好以下操作

  1. 1. 限制数据源权限,设置好组员的查看和编辑权
  2. 2. 隐藏不必要的数据,例如ClickHouse 的 Kafka Engine 表、导入详情表的物化表等对数据分析人员没有意义。一些数据列只提供给开发人员调试,对其他人员没有意义的,同样也要隐藏。或者某些列不适合统计,聚合可能导致崩溃

数据可见性

  1. 3. 更改列属性,Metabase 有时存在列的属性推断错误,例如某些列我们希望它有下拉过滤,但被推断为其他类型,可以手动修改,再重新扫描该列。

更改列属性

4.2 创建模型(Model)

同样是由表延展的数据,模型具有一定实体意义,通常不直接用来可视化,而是作为源数据,方便复用。

模型拥有和源数据一样丰富的列属性设置,这里不再赘述。

引用链接

[1] ES 默认准确度保证仅有3000: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html [2] 数据规模: https://en.wikipedia.org/wiki/Logarithmic_scale

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的碎碎念 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 为什么从 ELK 迁移到 Metabase + OLAP
    • 1.1 ELK 的问题
      • 1.2 Metabase + 其他DB 的优势
      • 二. 提问
        • 2.1 数据源
          • 2.2 构建问题
            • 2.2.1 组成部分
            • 2.2.2 调试 Question
          • 2.3 使用 SQL 构建问题
            • 2.4 选择可视化图表
              • 2.5 设置图表
                • 2.5.1 通用设置
                • 2.5.2 折线、柱状图
                • 2.5.3 表格
                • 左侧设置面板:
                • 右侧展示面板
            • 三. Dashboard 管理
              • 3.1 编辑 Dashboard
                • 3.2 过滤器
                • 3.3 可视化
                • 3.4 叠加图表
                • 3.5 点击行为
            • 四. 管理数据
              • 4.1 管理数据源
                • 4.2 创建模型(Model)
                  • 引用链接
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档