• 注册
    • 登录
    • 版块
    • 热门
    • Metabase官网
    • 社区汉化版
    • 达之云

    Metabase二次开发教程-04-数据库表解析

    Metabase二次开发教程
    1
    1
    1597
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • D
      dazdata 最后由 dazdata 编辑

      一、元数据概述

      Database元数据默认存在内嵌h2数据库中,但生产环境建议迁移到MySQL或PostgreSQL数据库,详情参阅 官方文档

      二、元数据表结构

      元数据库中共有55张表,分类梳理如下

      1.用户相关

      • core_user
        用户信息表,包括用户姓名、邮箱、密码、注册时间、上次登录时间、是否管理员、账号是否激活、认证方式、地域偏好等
        
      • login_attributes
        注释说用于存储行级权限的JSON串
        
      • core_session
        用户token表,包括用户ID, session_id 和时间
        仅当前session有效的用户会记录,若主动登出导致session失效会删除记录
        

      2.权限相关

      • permissions_group
        权限组定义表,仅含权限组名和权限组ID两个字段
        
      • permissions_group_membership
        用户/权限组定义表,仅含用户ID和权限组ID两个字段
        
      • permissions
        权限表,仅含权限组ID和被分配的权限(object)两个字段
        /db/2/ 表示对数据库2有所有权限
        /db/1/schema 表示对数据库1有 data access 权限
        /db/1/native 表示对数据库1有 sql query 权限
        /db/2/schema//table/6/ 表示对数据库2的表6有 data access 权限
        
      • permissions_revision
        权限修改记录,包括修改人,修改时间,及修改前后的权限情况
        

      3.数据源相关

      • metabase_database
        数据源表,每一行记录代表一个数据源,包括链接方式,定时同步配置等。
        description, points_of_interest, caveats 三个字段源自网页中配置的数据源信息
        
      • metabase_table
        表单信息表,每一行记录代表一张表,以SQL解析获得的表信息为主
        description, points_of_interest, caveats 三个字段可在网页中配置
        
      • metabase_field
        字段信息表,每一张表的每一个字段一行记录,包括解析SQL获得的字段信息和一些附加信息
        fingerprint 字段DQC,根据字段类型存储不同的DQC信息,所有类型字段都会存去重值的数量,以及空值占比;
        int / double 存储最大/最小值,四分位值/平均值和方差
        datetime / timestamp 存储最早/最晚时间
        varchar / char 存储平均长度,及 json / url / e-mail / state 四种字符串所占百分比
        bigint 空,不分析
        has_field_values 包括FieldValues (list), should ad-hoc search (search), disable entirely (none), infer dynamically(null)四种枚举值,作用不详
        metabase_fieldvalues字段值记录,包括字段ID(与 metabase_field 表对应),更新时间和值记录
        values 当某字段去重值较少(<25个)时,将去重值记录在此,并将has_field_values 字段改为 list
        
      • segment
        记录管理员定义的segment,可以理解为官方Filter,数据挖掘时可直接当Filter引用
        
      • metric
        记录管理员定义的metric,可以理解为官方子集,数据挖掘时可以直接和子集进行对比
        
      • group_table_access_policy
        记录对表定义的行配置,该配置会用于行级权限的匹配
        

      4.查询相关

      • query
        记录查询语句,每一条不重复的查询语句一行记录,主要记录具体查询SQL和平均执行时间
        query SQL查询直接记录sql语句,系统图表查询记录HoneySQL;此外还会记录middleware使用情况
        
      • query_execution
        记录查询历史,每一次查询一条记录,包括查询时间,返回数据量等信息,但不包括具体SQL
        
      • query_cache
        缓存慢SQL的查询结果,该功能可以在Admin开启或关闭
        
      • native_query_snippet
        保存SQL查询模版,即 Write SQL → SQL Snippets 页面中包含的代码模版信息
        

      5.运行日志相关

      • DATABASECHANGELOG
        元数据库修改记录表,包括修改人,修改时间,修改内容等等,主要记录表结构变更
        
      • DATABASECHANGELOGLOCK
        修改元数据库的分布式锁,仅一行记录,包括是否上锁,当前持有锁的用户和上锁时间
        

      6.定时任务相关

      metabase默认有两种表定时扫描策略:每小时扫描一次表结构,以及每天做一次全表扫描(DQC更新)

      • QRTZ_TRIGGERS
        任务运行状态表,将任务配置(QRTZ_JOB_DETAILS)和触发器(QRTZ_XXX_TRIGGERS)匹配起来
        同时会记录当前运行状态,上一次运行情况,下一次运行时间等运行信息
        
      • QRTZ_CRON_TRIGGERS
        定时任务trigger表,按cron配置定时激活触发,记录触发器分组、时间周期(cron)
        
      • QRTZ_JOB_DETAILS
        任务配置表,记录任务名,任务描述和任务配置(如是否周期执行,是否更新数据等)
        
      • task_history
        任务运行历史记录,每一次运行任务(无论定时还是手动触发)都会生成一条记录,包括任务名、启动时间、时长等
        
      • QRTZ_LOCKS
        分布式锁?用途不详
        
      • QRTZ_CALENDARS
      • QRTZ_BLOB_TRIGGERS
      • QRTZ_FIRED_TRIGGERS
      • QRTZ_PAUSED_TRIGGER_GRPS
      • QRTZ_SCHEDULER_STATE
      • QRTZ_SIMPLE_TRIGGERS
      • QRTZ_SIMPROP_TRIGGERS

      7.数据图表相关

      • report_card
        记录数据图表信息,包括图表类型,创建人等等,但不包括查询SQL
        
      • revision
        图表修改记录,包括创建图表,修改看板等
        
      • report_dashboard
        记录数据看板信息,包括看板名,介绍信息,创建时间等
        一个数据看板包括多个数据图表,图表也可以没有数据看板
        
      • report_dashboardcard
        记录图表在数据看板上的布局方式,包括长宽和坐标
        
      • collection
        记录收藏夹信息,包括目录结构,注释等等
        

      8.邮件推送相关

      • pulse
        记录pulse(包括alerts)基本配置
        
      • pulse_card
        记录图表与pulse的映射关系,以card_id和pulse_id为主,一个pulse可以包括多张图表
        
      • pulse_channel
        记录pulse的发送渠道(email)和定时时间
        
      • pulse_channel_recipient
        记录pulse和接收人的映射信息,仅包含pulse_id和user_id两个字段
        

      9.其它

      • setting
        全局配置表,网站上Settings → admin → General 页面的配置项均存在这里
        
      • activity
        setting → activity 页面展示的信息从该表获取,包括用户加入,图表创建等等
        
      • view_log
        用户查看看板和图表的记录,用户每看一次图表/看板就记录一条信息
        
      • card_label
      • collection_revision
      • computation_job
      • computation_job_result
      • report_cardfavorite
      • dashboard_favorite
      • dashboardcard_series
      • data_migrations
      • dependency
      • dimension
      • label
      • metric_important_field

      转载自:https://blog.csdn.net/weixin_43821438/article/details/111220429

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post

      Powered by MetabaseCN | 提供专业Metabase培训 | QQ群:799286435 微信:MetabaseCN

      鄂ICP备20010758号