1. 简介及安装使用

1.1. metabase简介

metabase主要功能创建数据集、在线可视化分析、生成分析图表、构造dashboard、定时任务报表、数据分析模型、订阅发布、分享、安全验证、权限管理、任务管理等等优势。

官网学习地址:metabase参考文档
对应语法学习地址:clickhouse参考文档

1.2. 安装步骤

第一步 下载metabase压缩文件,无需解压:metabase.jar

第二步 下载java文件:java,而后添加环境变量,操作步骤见该链接:java安装教程
第三步 metabase.jar文件夹路径下输入cmd,输入java -jar metabase.jar,网页端输入http://localhost:3000/,注册登录后即可操作metabase
metabase.jar文件夹路径下输入cmd
metabase路径下输入java -jar metabase.jar
在这里插入图片描述
示例:
仪表盘界面

2. metabase入门

2.1. metabase登录及配置

配置metabase:Setting up教程-metabase源文档
首页界面:
metabase首页
通常通过创建问题,使用查询语句来获取数据信息,而后通过仪表盘连接,形成一份报表可视化模板

3. 样本数据库实操案例

3.1. 样本数据库数据结构

首先选择样本数据库:SAMPLE DATASET
在这里插入图片描述
先了解下表结构

表名表功能
Orders订单
字段注释
IDid
UserID用户ID
ProductID产品id
Subtotal产品费用
Tax税收费用
Total总费用
Discount($)折扣
Created At创建时间
Quantity订单量
表名表功能
People人员信息
字段注释
ID用户id
Address地址
Email邮箱
Password密码
Name姓名
City城市
Longitude经度
State
Source来源
Birth Date生日
Zip邮编
Latitude纬度
Created At创建时间
表名表功能
Products产品
字段注释
ID产品id
Ean编号
Title标题
Category类目
Vendor公司
Price价格
Rating产品星级
Created At创建时间
表名表功能
Reviews评论
字段注释
IDid
ProductID产品id
Reviewer评论人
Rating评论星级
Body内容
Created At创建时间

了解样本四张表之间的关联(方便后期做关联匹配)

表名表名表名表名
OrdersPeopleProductsReviews
字段字段字段字段
UserID匹配ID
ProductID匹配IDProductID

3.2. 实操

3.2.1. 原生查询中三种变量的使用方法

示例:获取用户Hudson Borer(用户id为1)个人信息及该用户购买的产品信息
思路:用Orders表UserID和ProductID去分别匹配People表ID和Products表ID,来获取相应数据

'''1、查询Hudson Bore这个顾客总共下单量'''
SELECT t1.*,t2.`订单量`
FROM
    (
    SELECT 
        ID as `用户id`,
        Name as `姓名`
    FROM People
    WHERE Name='Hudson Borer'
    GROUP BY `用户id`,`姓名`
    ORDER BY `用户id`
    ) as t1
LEFT JOIN 
    (
    SELECT 
        USER_ID as `用户id`,
        sum(Quantity) as `订单量`
    FROM Orders 
    GROUP BY `用户id`
    ORDER BY `用户id`
    ) as t2
    on t1.`用户id`=t2.`用户id`    

1、查询结果
在这里插入图片描述

'''也可把Name变成变量来编辑,进而可以添加字段过滤器,例如'''
SELECT t1.*,t2.`订单量`
FROM
    (
    SELECT 
        ID as `用户id`,
        Name as `姓名`
    FROM People
    WHERE Name={{Name}}
    GROUP BY `用户id`,`姓名`
    ORDER BY `用户id`
    ) as t1
LEFT JOIN 
    (
    SELECT 
        USER_ID as `用户id`,
        sum(Quantity) as `订单量`
    FROM Orders 
    GROUP BY `用户id`
    ORDER BY `用户id`
    ) as t2
    on t1.`用户id`=t2.`用户id`

metabase界面显示为:

可能遇到的问题1. 未添加变量,显示器会报错,缺少变量参数
在这里插入图片描述
解决方案1、:在上方的过滤字段器内添加People中变量即可
在这里插入图片描述
解决方案2、:将代码块中

WHERE Name={{Name}}

改成可选变量即可,

[[WHERE Name = {{Name}}]]

操作如下

SELECT t1.*,t2.`订单量`
FROM
    (
    SELECT 
        ID as `用户id`,
        Name as `姓名`
    FROM People
    [[WHERE Name = {{Name}}]]
    GROUP BY `用户id`,`姓名`
    ORDER BY `用户id`
    ) as t1
LEFT JOIN 
    (
    SELECT 
        USER_ID as `用户id`,
        sum(Quantity) as `订单量`
    FROM Orders 
    GROUP BY `用户id`
    ORDER BY `用户id`
    ) as t2
    on t1.`用户id`=t2.`用户id`

metabase显示界面(这种方式会把所有客户信息全筛选出来)
在这里插入图片描述
若想查看某两个人或多名指定客户的信息,可将变量

WHERE Name={{Name}}

改为

WHERE {{Name}}

同时将字段映射到对应的报表字段中,即可,如下

SELECT t1.*,t2.`订单量`
FROM
    (
    SELECT 
        ID as `用户id`,
        Name as `姓名`
    FROM People
    WHERE {{Name}}
    GROUP BY `用户id`,`姓名`
    ORDER BY `用户id`
    ) as t1
LEFT JOIN 
    (
    SELECT 
        USER_ID as `用户id`,
        sum(Quantity) as `订单量`
    FROM Orders 
    GROUP BY `用户id`
    ORDER BY `用户id`
    ) as t2
    on t1.`用户id`=t2.`用户id`

metabase显示界面
在这里插入图片描述
以上介绍了metabase中原生查询方式添加变量的三种方式,下面汇总下三种操作方式 metabase变量操作完整文档

'''原生查询中的变量允许使用筛选组件或URL参数来动态替换查询中的值。

变量
{{variable_name}}在此查询模板中创建一个名为“ variable_name”的变量。可以在侧面板中为变量指定类型,
从而更改其行为。除“字段过滤器”以外的所有变量类型都将自动导致将过滤器小部件放置在此问题上;
对于字段过滤器,这是可选的。填写此过滤器小部件后,该值将替换查询模板中的变量。'''

# Example:
SELECT count(*)
FROM products
WHERE category = {{category}}

'''字段过滤器
通过为变量指定“字段过滤器”类型,您可以将问题链接到仪表板过滤器小部件,或在SQL问题上使用更多类型的过滤器小部件。
在现有列上添加过滤器时,“字段过滤器”变量将插入与GUI查询构建器生成的SQL相似的SQL。

添加“字段过滤器”变量时,您需要将其映射到特定字段。 然后,您可以选择在问题上显示过滤组件,但即使不这样做,
现在可以在将此问题添加到仪表板时将“字段过滤器”变量映射到仪表盘过滤器。 字段过滤器应在“WHERE”子句中使用。'''

# Example:
SELECT count(*)
FROM products
WHERE {{created_at}}

'''可选条款
[[{{variable}}]]周围的括号在模板中创建可选子句。 如果设置了“variable”,则将整个子句放入模板中。 
如果不是,则忽略整个子句。'''

# Example:
SELECT count(*)
FROM products
[[WHERE category = {{category}}]]

'''要使用多个可选子句,您可以包含至少一个非可选WHERE子句,接着以“AND”开头的可选子句。'''

# Example:
SELECT count(*)
FROM products
WHERE 1=1
  [[AND id = {{id}}]]
  [[AND category = {{category}}]]

'''当某字段被用作筛选条件后, SQL语句中不应再包含该列明. 相应的在侧边栏上, 变量应该映射到一个字段上。'''

#Example:
SELECT count(*)
FROM products
WHERE 1=1
  [[AND {{category}}]]

3.2.2. [简单查询与自定义查询]简述、查询结果二次加工

操作界面,使用非常简单,只需将自己想要获取的信息用鼠标点一点就可得到,无需数据库语法基础,适合小白使用(仅适合较为简单的查询语句)
在这里插入图片描述
点击自定义查询左下方可视化后,显示如下
在这里插入图片描述
在这里插入图片描述
此外,在可视化方法中,亦可选择折线图、柱状图、组合图、条形图等,此处不再赘述

3.2.3. 仪表盘创建

获取这样一份可视化仪表盘界面,如何操作
仪表盘界面
第一步,创建仪表盘
metabase右上角加号"+",可创建仪表盘
在这里插入图片描述
点击创建新仪表盘,如下
在这里插入图片描述
第二步 创建仪表盘细节

2.1 先创建过滤器
在这里插入图片描述
操作如下(按步骤操作后,点击保存即可):
在这里插入图片描述
2.2 添加文本
在这里插入图片描述
操作如下(按步骤操作后,点击保存即可)
在这里插入图片描述
2.3 添加问题(左上为地图、右上为柱状图、左下为数字、右下为折线图)
2.3.1 地图(先写好sql语句,再加入到仪表盘中)
实现功能:显示各个州每个类目的订单量

SELECT 
    People.State,
    SUM(Orders.Quantity) as `订单量`
FROM Orders
LEFT JOIN 
    People
    on Orders.USER_ID = People.ID
LEFT JOIN 
    Products 
    on Orders.PRODUCT_ID = Products.ID 
WHERE 
   {{State}}
   and {{Category}}
GROUP BY People.State
ORDER BY People.State

metabase操作界面
其一,sql语句及其设置
在这里插入图片描述

其二,添加到仪表盘中
在这里插入图片描述
其三,过滤器和地图集关联匹配,匹配完成后点击右下角完成
在这里插入图片描述
其四,用地图集去和过滤器进行匹配,点击地图集右上角按钮点击行为,只需匹配State字段,操作完成后保存
在这里插入图片描述
2.3.2 柱状图
实现功能:每个类目对应的订单量
操作和地图集一模一样,只需将Orders by state这个先前的问题复制一份,更改可视化界面即可,操作如下(操作完成后记得保存)在这里插入图片描述
在这里插入图片描述
而后将柱状图添加到仪表盘中,操作和地图集一模一样,此处不再赘述,(唯一的区别是最后点击行为处匹配的是Category而非State字段)

2.3.3 数据
实现功能:每个州每个类目对应的总订单量,仅显示数据
操作同上,复制柱状图的问题,更名为Count of Orders

'''代码块删除以下三行'''
Products.Category
GROUP BY People.State,Products.Category
ORDER BY People.State,Products.Category

操作完成后点击保存,添加仪表盘操作与以上雷同,此处不再赘述
在这里插入图片描述
2.3.4 折线图
实现功能:观察每月的销量情况

SELECT 
    parsedatetime(formatdatetime(ORDERS.CREATED_AT, 'yyyyMM'), 'yyyyMM') AS `CREATED_AT`,
    SUM(Orders.Quantity) as `订单量`
FROM Orders
LEFT JOIN 
    People
    on Orders.USER_ID = People.ID
LEFT JOIN 
    Products 
    on Orders.PRODUCT_ID = Products.ID 
WHERE 
   {{State}}
   and {{Category}}
GROUP BY `CREATED_AT`
ORDER BY `CREATED_AT` ASC

在这里插入图片描述

查询语句写好后,添加到仪表盘中,而后过滤器关联该折线图即可,
这样一份动态仪表盘就完成了。

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐