Metabase 详细使用教程

  • 1. 简介及安装使用
  • 1.1. metabase简介
  • 1.2. 安装步骤
  • 2. metabase入门
  • 2.1. metabase登录及配置
  • 3. 样本数据库实操案例
  • 3.1. 样本数据库数据结构
  • 3.2. 实操
  • 3.2.1. 原生查询中三种变量的使用方法
  • 3.2.2. [简单查询与自定义查询]简述、查询结果二次加工
  • 3.2.3. 仪表盘创建
  • 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 订单
    字段 注释
    ID id
    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 评论
    字段 注释
    ID id
    ProductID 产品id
    Reviewer 评论人
    Rating 评论星级
    Body 内容
    Created At 创建时间

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

    表名 表名 表名 表名
    Orders People Products Reviews
    字段 字段 字段 字段
    UserID 匹配 ID
    ProductID 匹配 ID ProductID

    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
    

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

    来源:刘民_Carey

    物联沃分享整理
    物联沃-IOTWORD物联网 » metabase详细使用教程

    发表评论