type
status
date
slug
summary
tags
category
icon
password
Language
MetaBase 介绍
Metabase 采用“问问题”的方式实现一个数据探索 , 结果可以保存并发布为 Dashboard , 对于复杂的问题 提供了 SQL查询
“问题”
- 自定义表达式
- 聚合和函数
- 可视化
- 基于一个问题提出一个新的问题
- 多表连接
SQL编辑器
- 定义变量
SELECT count(*) FROM products WHERE category = {{cat}}
- 设置 SQL 变量并可以向URL添加值
- 添加到Dashboard
可视化
- 筛选器
- 订阅
- 钻取功能 , 对单个图表做进一步的探索
- 组合图表
警报
- 当某个图表的值达到阈值的时候 , 可以通过发送电子邮件和Slack
Models
- 自定义数据集
- 模型动态创建派生表
人员和组
- 单点登录
- 团队协作
- 会话过期
权限
- 权限组 , 可以可以在多个组里
- 数据权限
- 集合权限
- SQL代码段权限
嵌入
- 提供 “问题” 和 Dashboard 的公共连接
其他
- API提供
- 自定义地图
想要了解的问题
如何使用OLAP模型方便生成图表MetaBase如何嵌入到外部应用当中如何扩展地图 , 以及能否自定义地图问题生成器能否帮助到我们什么
如何使用OLAP模型方便生成图表
实现楼宇系统中能源多维分析
每天耗电量
让耗电事实表中的DataDimId 关联时间维度的 DimensionId
通过聚合日期维度表里面的月份和天
添加到仪表盘
按楼栋分析耗电量
楼层维度中是按最细粒度并且是扁平化的数据 , 每个耗电的值都是到层的
第一层关联 :事实表中的维度ID关联楼层维度中的DimensionID第二次关联 :用第一次的关联得到的BuildingID去关联新的楼ID
最终得到上一层的楼栋的值
耗水相关
实现下钻功能
比如按月统计,点击某月能跳转到该月每天的数据
实现方式 : 对每月耗水量添加一个自定义目的地 , 跳转到一个叫做 “某月每天的耗水量图表”
- 比如点击5月的时候
- 会跳转到五月的详情
- 同理还可以下钻到 在点某一天的时候 , 把这一天每小时的耗水量显示出来
组合的图表
合并两个保存的问题
在编辑仪表板时 , 可以添加系列进行多个问题的合并
MetaBase如何嵌入到外部应用当中
进入管理员后台启用嵌入
- 启用之后会生成一个密钥 用于API请求
- 通过一段代码段 嵌入到webApp当中
注意 : MetaBase的开源版本只允许嵌入独立图表或仪表板 , 如果想为用户提供更具互动性、可浏览性的体验则需要将MetaBase全应用嵌入
但是此功能仅在专业版和企业版中才能使用
Models的使用
当你在添加完数据库后, 可能绝大部分表是不需要使用的, 并且表字段意义可能不明确,非专业人员使用可能不知所意, 所以你需要对你的数据库进行编辑,将不要使用的表隐藏起来,将表字段起一个别名。
迁移MetaBase的H2数据库
- 备份H2数据库
docker cp metabase:/metabase.db/metabase.db.mv.db ./
- 停止现有的MetaBase容器
- 下载 JAR 下载的版本确保和现在用的版本是一致的
- 运行迁移命令
export MB_DB_TYPE=mysql export MB_DB_CONNECTION_URI="jdbc:mysql://localhost:3306/metabase?user=root&password=xxxxxx" java -jar metabase.jar load-from-h2 /path/to/metabase.db # do not include .mv.db
- 删除以前的容器 , 并启动一个新的Docker容器,使用新的数据库
docker run -d -p 3000:3000 \ -e "MB_DB_TYPE=mysql" \ -e "MB_DB_DBNAME=metabase" \ -e "MB_DB_PORT=3306" \ -e "MB_DB_USER=root" \ -e "MB_DB_PASS=xxxxx" \ -e "MB_DB_HOST=192.168.50.173" \ --name metabase metabase/metabase
升级MetaBase
- 备份MetaBse, 将docker中的metabase.db复制出来 , 如果是数据库连接的请忽略,不是数据库连接的先设置成数据库连接,参考 “迁移MetaBase的H2数据库”
docker cp metabase:/metabase.db/metabase.db.mv.db ./
- 停止当前的 Docker 容器
docker stop metabase
- 拉取最新的MetaBase Docker 镜像:
docker pull metabase/metabase:latest
- 删除之前的容器
docker rm metabase
- 启动新的 Docker 容器
docker run -d -p 3000:3000 -e MB_DB_CONNECTION_URI="jdbc:mysql://192.168.50.173:3306/metabase?user=root&password=xxxxx" --name metabase metabase/metabase:latest
启动时,Metabase 将自动执行升级。Metabase 完成升级后,将运行新版本。
- 查看日志
docker logs -f metabase
- 进入页面
API
登陆并获取会话令牌
POST /api/session/
示例
获得这个session id后需要在后续请求的标头中包含该会话令牌 , 比如
查询某个图表的数据 (需认证)
POST /api/card/:card-id/query
需要认证的访问配置的报表(question,这里叫card)
参数:
- card-id 配置的报表的ID,是数字
- parameters 查询参数
示例
查询某个图表的数据 (免认证)
不需要认证的访问分享出来的报表
参数:
uuid
分享出来的uuid
parameters
请求参数,可以添加过滤条件
示例
- 作者:何以问
- 链接:https://heyiwen.com/article/olap-1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。