尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Metabase 数据建模(Data Modeling)完全指南:Models、Metrics、Segments、语义类型与元数据管理

Metabase 数据建模(Data Modeling)完全指南:Models、Metrics、Segments、语义类型与元数据管理 Metabase 数据建模Data Modeling完全指南Models、Metrics、Segments、语义类型与元数据管理【免费下载链接】metabaseThe easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:项目地址: https://gitcode.com/GitHub_Trending/me/metabase数据建模是 Metabase 作为开源 BI 工具最核心的能力之一它把杂乱数据库整理成团队能一致理解、复用的分析资产。本文基于仓库 docs/data-modeling 目录下的官方文档start.md 及各专题页系统讲解 Models模型、Model Persistence模型持久化、Metrics指标、Table Metadata表元数据、Semantic Types语义类型、格式化默认值、JSON 展开与 Segments分段七大板块并结合src/metabase下的源码实现帮助你理解 Metabase 数据建模的完整工作流掌握在 Admin 面板中配置元数据、在查询构建器中复用分析资产的实际方法。Models面向探索的派生表Metabase 的 Models模型是从同一数据库的一张或多张表精炼出的派生数据你可以把它理解为派生表derived table或者一种特殊的已保存问题专门用作新问题的起点。Model 既可以基于查询构建器创建也可以基于 SQL 原生查询创建因此可以在其中加入自定义计算列。Models 的价值元数据定制可为列更新描述、定制元数据成为探索数据的优质起点搜索加权在搜索结果中排名更高用户新建问题时会被高亮推荐促进复用集合隔离存放在集合Collection中与混乱的数据库 schema 分离记录级搜索可配置通过某列匹配在搜索中展示单条记录加速加载可持久化persist结果以加快加载。创建 Model创建前先搜索是否已有满足需求的模型没有则两种方式创建从零创建在侧边栏的 Models 标签页点击右上角按钮或用命令面板cmd/ctrl k输入 model 并选择New model。随后选择查询构建器或原生查询SQL。使用查询构建器的优势在于 Metabase 会自动补全部分元数据使用 SQL 则需要手动填写列元数据。创建后模型会自动固定pinned到当前集合。从已保存问题创建用查询构建器或 SQL 编辑器提问并保存后点击...Turn this into a model。注意Metabase 正逐步用 Data Studio 的 Transforms 取代 Models管理员可以批量转换模型为 transforms。模型元数据SQL 模型可探索性的关键元数据是模型的秘密武器。用 SQL 写查询时 Metabase 能显示结果却无法知道返回数据的类型只有为每个返回列设置元数据其他用户才能用查询构建器继续探索结果过滤控件与可视化推荐也会更准确。如果只设置一种元数据请设置 Column type列类型。可配置的列元数据包括配置项说明Display name列在界面中展示的名称Description列的业务含义说明Database column this maps to对 SQL 模型声明该列与某个已有数据库列同类型Column type语义类型默认 No special typeSQL 模型若要可探索必须为每列设置This column should appear in...列出现在表格与详情视图或仅详情视图Display as以 Text 还是 Link可点击 URL展示Surface individual records in search对含整型实体键的记录将文本字段值编入 Metabase 搜索索引方便用户直接跳到单条记录Surface individual records in search 有明确限制索引字段必须是文本/字符串类型记录必须包含整型实体键为保证搜索速度每个字段最多只索引25,000 个唯一值。编辑模型查询与破坏性变更检测点击模型名旁的下拉箭头可Edit query definition。与问题question不同保存时模型变更会直接覆盖原模型不会提示另存为新问题如需从现有模型派生新模型使用侧边栏的Duplicate this model。保存变更时Metabase 会检测变更是否会破坏依赖该模型的其他实体——例如删除某列而基于该模型的其它问题依赖该列Metabase 会警告下游问题将受影响。目前仅检测列引用断裂重命名/删除列尚无法检测列类型变更或计算逻辑变更这类破坏。模型列表视图List view模型支持以列表而非大表格的方式逐条浏览记录并可自定义布局突出关键字段访问模型 → 点击三点菜单 →Edit metadata进入Settings标签页在 What should the default view of this data be? 下切换为List。自定义布局Customize the List layout时每条记录包含实体图标若记录有图片链接则显示图片、展示标题或主标识符的左列、以及最多 5 个附加列的右列。支持搜索列、拖拽列到左/右区域、区域内拖拽排序、点击 X 移除列底部可实时预览样本数据。在 SQL 中引用模型可在 SQL 查询中像引用已保存问题一样引用模型SELECT * FROM {{#1-customer-model}}或以 CTE公共表表达式 形式引用WITH model AS {{#3807-invoice-model}} SELECT * FROM model;输入{{#即可搜索模型例如输入{{#customer}}可搜索标题含 customer 的模型、问题和表也可以点击书图标打开数据参考侧边栏浏览模型。版本历史、删除与验证问题、仪表盘和模型都保留最近 15 个版本的历史记录可查看变更并回退见 History。过时模型可移入回收站或永久删除但删除会影响以其为数据源的问题见 Delete and restore。Pro/Enterprise 版可验证模型。Model Persistence把模型结果落库加速Model persistence 将模型以及基于模型的问题的查询结果持久化到数据仓库中专属 schema 的表里不是 Metabase 应用数据库。用户基于模型提问时Metabase 直接读取落库结果而不重新执行模型查询从而显著提速。前置限制模型持久化不适用于行级/列级安全row and column security和 impersonation身份模拟。目前仅 PostgreSQL、MySQL、Redshift 三个数据库支持模型持久化。官方同时提示Metabase 将逐步以 Transforms 取代该能力。开启模型持久化的三个层级1. 为整个 Metabase 开启AdminPerformanceModel persistence。可选用默认刷新频率每 1 小时、2 小时等或选Custom用 cron 语法 自定义频率。cron 调度优先使用实例默认报告时区否则用系统时区Metabase Cloud 默认 GMT。建议刷新频率与源表数据更新频率匹配若有人修改了模型的查询定义基于该模型的问题会重新执行模型查询直到下一次计划刷新。2. 为每个数据库开启AdminDatabases [数据库] Turn model persistence on。Metabase 需要在你的数据仓库中创建存储 schema若连接凭据权限充足Metabase 会自动检查/创建 schema否则需手动创建——点击info 图标获取精确 schema 名然后在数据库执行PostgreSQL 示例CREATE SCHEMA IF NOT EXISTS schema_name;并确保 Metabase 连接凭据可管理、写入该 schema。注意默认情况下新模型不会自动持久化。3. 为单个模型开启查看模型 → 点击...Edit settings切换Persist model data为开启需要模型的集合 Curate 权限。适合数据更新频率与数据库级计划不同、或使用频率明显偏高/偏低的模型。刷新与日志刷新单个模型进入模型 → 三点菜单 →Edit settings在信息侧栏可见上次刷新时间及刷新图标。全部日志可在MonitorModel persistence log查看见 model persistence log。与查询缓存的区别维度Model persistenceQuery caching存储位置数据仓库中的表应用数据库刷新机制按计划自动重跑模型查询并落库用户查看时缓存结果按缓存策略失效从源码看模型持久化在src/metabase/model_persistence命名空间实现api.clj提供持久化状态查询与 cron 计划设置的 API 端点如persisted-model-refresh-cron-schedule、persisted-models-enableddb.clj提供持久化模型计数与数据库中未持久化模型查询等数据库层操作且 schema 名由ddl.i/schema-name结合site-uuid-str生成——这解释了文档中info 图标给出精确 schema 名的行为。Metrics团队统一的计算口径Metrics指标定义了团队官方计算重要数字的方式。它就像一个可复用的公式例如在Survey表上定义净推荐值NPS指标(CountIf([Score] 9) - CountIf([Score] 6)) / Count()其他人就不必各自重写 NPS 计算直接在查询构建器中引用即可。这样避免了同一个营收算出五种不同结果的口径分裂。指标三要素数据源Data source指标与特定数据源绑定只能在基于该数据源的问题中使用公式Formula聚合的定义是指标的核心且必填维度Dimensions可对指标做分组break out和过滤的字段含一个可选的默认展示维度。指标存放在集合中可保存到 Library 集合让官方精选指标浮出水面、鼓励复用。创建与编辑指标创建步骤命令面板cmd/ctrl k搜索New metric或Browse Metrics点击或进入 Library 点击 New Metric→ 选择起始数据表、已保存问题、模型或另一个指标→ 在Formula块用自定义表达式定义聚合例如SumIf([Total], [Plan] ! free)数据与公式两步即可公式前可加 join 和 filter→ 选择集合保存保存后在Dimensions标签页整理维度。编辑指标访问指标 → 切换到Definition标签页修改定义并保存。一旦修改定义所有使用该指标的问题会立即采用新定义。在查询构建器中指标会出现在Summarize块的Metrics下使用方式与内置聚合Count、Sum 等完全一致可按维度分组、多指标并用、在自定义表达式中引用。也可以直接把指标选作新问题的数据源。公式与维度要点公式必须是列的聚合Sum([Price])合法而按行计算的[Price] [Tax]不合法——需要计算列请用 transforms 或 model不建议把过滤器写进指标定义以免与查询构建器中的过滤冲突可用CountIf/SumIf/DistinctIf做条件聚合公式中可以引用其它指标。维度默认为指标源数据的所有列可在Dimensions标签页增删、拖拽排序、重命名不改底层字段、Set as default设置默认展示维度无默认时指标以单数字展示以及为时间维度设置默认时间分组。若源表有外键Available dimensions还会包含关联表的字段——分组名使用外键列名而非关联表名例如Orders.User ID→ 名为User的分组若Reporter ID与Assignee ID都指向 Users 表则出现Reporter与Assignee两个分组。整理后的维度会作为 Metrics explorer、指标 About 页和仪表盘过滤器中的分组/过滤选项但不影响查询构建器——查询构建器中用户仍可用源数据的任意列过滤和汇总。指标权限模型指标同时受集合权限、查看数据权限和创建查询权限约束指标操作 \ 权限查看数据创建查询集合创建/编辑定义非 Blocked至少 Query builderCurate查看非 Blocked任意View在查询构建器中使用非 Blocked至少 Query builderView从源码看指标在前端元数据模型中对应:metric卡类型见 src/metabase/lib/card.cljccard-metadata类型为:metric时置metric? true查询构建器src/metabase/lib/aggregation.cljc在添加聚合时会把 Metric/Measure 元数据转换为:metric/:measureMBQL 子句——这正是用指标做聚合时Metabase 会在后台把指标替换为已保存公式的实现机制。其它指标能力与限制Metrics explorer访问指标点击右上Explore进入可添加更多指标、分组和过滤器做对比与运算见 metrics-explorer缓存Pro/Enterprise 版可对单个指标配置缓存策略指标 → 三点菜单 →Caching验证Pro/Enterprise 可标记指标为已验证更推荐用 Library 引导用户限制指标只绑定特定数据源不能跨数据源包括由源数据派生的数据源使用仅查询构建器可用复用 SQL 片段请用 Snippets无法限制用户在有权查询的数据源上创建指标。Table Metadata管理表与字段的展示层Table metadata editing 位于Admin Table metadata是配置表和列展示的核心入口。所有设置只影响 Metabase 的展示方式绝不改变数据库中的实际数据。官方建议未来优先使用 Data Studio Tables该页面将被移除。管理员可授权其他组管理表元数据见 table metadata permissions。表级设置显示名与描述点击文本框直接编辑移开焦点自动保存描述会显示在数据参考和 tooltip 中帮助用户找到合适的表同步选项Sync table schema底层库表结构变更后重新同步、Scan field values为过滤器下拉框更新缓存值、Discard cached field values清空缓存值表排序自动 / 按数据库顺序 / 字母序 / 自定义拖拽排序表可见性点击侧边栏眼睛图标隐藏表。隐藏表不会出现在查询构建器和数据参考中但这并非权限功能——SQL 编辑器里SELECT * FROM table_name仍可查到要真正限制访问需配置数据权限。点击数据库名旁的眼睛可隐藏整个库的表。字段级设置字段名与描述可改全局显示名如把 auth.user 显示为 User模型内局部显示名用 models建议为含缩写/编码、0/null/空值、占位值如9999-99-99的列写描述字段预览Table preview / Detail / Filtering 三种模式查看样本数据扫描单字段值Field values按钮可扫描或丢弃该字段的缓存值仅影响过滤下拉菜单不删库中数据字段数据Field data字段在库中的名称与数据类型不可改但可**转换cast**某些类型。数据类型转换Casting例如库中 Created At 是字符串想用相对日期过滤Created At Last week或datetimeAdd公式可 cast 为 Date。选项包括转换方向选项文本 → 日期时间ISO8601→Date / ISO8601→Datetime / ISO8601→Time数字 → 日期时间UNIXMicroSeconds→DateTime / UNIXMilliSeconds→DateTime / UNIXNanoSeconds→DateTime / UNIXSeconds→DateTime文本 → 数字String→Integer / String→Float其它Float→Integer / Datetime→Datecast 不影响数据库原始类型。若不支持所需转换可写 SQL cast 后存为 model或在数据库建视图。语义类型Semantic type设置语义类型可提供上下文并启用额外功能如把图片 URL 文本显示为图片。可选类型取决于底层数据类型若无合适项可设为 No semantic type。详见 semantic types。字段行为Field behavior字段可见性Everywhere默认全部可见/Only in detail views仅详情视图显示平均长度超过 50 字符的列默认启用适合 Customer Comments 这类长文本/Do not include不出现在查询构建器和数据参考适合 PII 列。最后一项不是权限功能——有原生查询权限的用户仍可在 SQL 编辑器SELECT hidden_column FROM table访问。过滤Filtering决定列的默认过滤组件Search box带自动补全的搜索框/A list of all values搜索框 复选框下拉超过 1000 个唯一值时自动退化为搜索框/Plain input box无补全的搜索框。设置同样影响仪表盘过滤器。显示值Display values可把外键列映射为关联表字段如Product_ID显示为产品名也可做数字到自定义值的映射如 1/2/3 → low/medium/high需 Filtering 设为 A list of all values在 Custom mapping 下为每个值填显示文本。数据类型与语义类型Metabase 的双层类型体系semantic-types.md 区分了 Metabase 的两类列元数据数据类型Data types数据库底层列类型如Date、Text在数据库同步时读取。由于连接众多异构数据库Metabase 内部使用自己的类型层级统一处理比如统一处理 PostgreSQL 与 MongoDB 的日期字段语义类型Semantic types描述数据应如何被解释的标签。例如Text类型存邮箱的列可标为Email让人和 Metabase 都明白内容含义。主要数据类型数据类型示例数据库类型NumericINTEGER,FLOATTemporalDATE,TIMESTAMPTextVARCHAR,TEXTText-likeMongoDBBSONID, PostgresEnumBooleanBooleanCollectionJSON, BigQueryRECORD, MongoDBObject当前不支持数组类型数组列只能按 Is empty/Is not empty 过滤。语义类型一览任意字段Entity key唯一标识每行如 Product ID、Foreign key引用另一表实体键以连接相关表仪表盘联动过滤器要求外键关系数值字段Quantity、Score、Percentage、FinancialCurrency/Discount/Income、LocationLatitude/Longitude、Category时间字段Creation date/time/timestamp、Joined date/time/timestamp、Birthday文本字段Entity name、Email、URL、Image URL、Avatar URL、Category、Name、Title、Description、Product、Source、LocationCity/State/Country/ZipCode集合字段Field containing JSON见 Working with JSON。类型体系驱动的行为展示格式Percentage 显示为百分比0.75 → 75%Currency 在图表和详情视图加货币符号表格视图默认只在表头显示可在元数据格式化设置中改为每行显示Latitude/Longitude 显示为坐标如0.00000000° NEmail 显示为mailto链接URL/Image URL/Avatar URL 可显示为可点击链接、图片或圆形头像JSON 字段在详情视图美化显示Entity 与 Foreign key 在表格视图中高亮。自动图表推荐查询构建器按 Group by 字段类型选图Text/Category → 条形图Temporal → 折线图数值分箱 → 条形图数值未分箱 → 表格Boolean → 条形图无聚合 → 表格。若使用位置类语义类型Latitude/Longitude 分箱 → 网格地图未分箱 → 标记地图Country → 世界区域地图State → 美国区域地图。值提取URL 类型可提取 host/domain/subdomain/pathEmail 可提取 host/domain时间类型可提取月、日等日期部分。其它能力影响 X-rays 的图表选择决定 SQL 问题能否使用字段过滤器field filters在模型中设置语义类型可让 SQL 模型支持查询构建器探索与 drill-through 菜单。注意语义类型只增加含义、不做类型转换——把文本字段语义类型设为 QuantityMetabase 仍按文本处理。全局类型变更在 Admin Table Metadata 生效仅在单个查询内转换可用表达式date()、integer()。格式化默认值全局、字段、问题三级覆盖formatting.md 说明 Metabase 在三个层级自定义日期、数字、货币与文本显示全局Admin → Settings → Localization字段级Admin → Table Metadata字段级覆盖全局问题级单个问题的可视化设置覆盖全局与字段级。字段级配置位于Admin Table Metadata Database Table Field Formatting可用选项取决于字段的数据类型与语义类型。文本格式化Align单元格内居中/左/右Display As 可选 Text / Email link / Image需先改语义类型/ Automatic / Link——Link 可配置 URL 模板例如把 Adjective 列的 Link URL 设为https://www.google.com/search?q{{adjective}}点击值 askew 会跳转到https://www.google.com/search?qaskew。日期时间格式化Date style如January 31, 2018、31/1/2018、2018/1/31等区域格式Abbreviate days and months缩写月/日Show the time 可选 Off仅日期/ HH:MM / HH:MM:SS / HH:MM:SS.MSTime style 可选 12 小时制5:24 PM或 24 小时制17:24。数字格式化Show a mini bar chart表格中显示迷你条形展示各值相对大小Display asAutomatic / Text / LinkStyleNormal / Percent / Scientific notation / CurrencyCurrency label styleSymbolCA$/ Local symbol$/ CodeCAD/ NameCanadian dollars货币符号位置列标题或每个单元格Separator style千分位分隔符如100,000.00、100.000,00、100 000.00Number of decimal places强制小数位Multiply by a number数值缩放/单位换算Add a prefix / Add a suffix前后缀如$、%、units。问题级覆盖点击可视化设置齿轮覆盖任意格式项点击设置旁旋转箭头图标可重置为字段级若有或全局默认。不同可视化类型表格、折线/条形/面积图、地图、透视表等的格式化选项各有差异。Working with JSON展开 JSON 列json-unfolding.md 讲解 JSON 展开unfolding对支持的数据源Metabase 可把 JSON 列展开为其组成字段从而能在查询构建器中过滤。展开行为与支持的数据源展开后每个 JSON key 成为独立列列名以原 JSON 列名为前缀可在 Admin Table metadata 或通过 model 修改列名支持嵌套 JSON 对象但不展开数组——key 对应数组时整体保留为单个字段支持数据源BigQuery自动启用仅STRUCT类型BigQuery 的JSON类型与REPEATED (STRUCT)数组不展开、Druid (JDBC)、MongoDB嵌套字段自动启用、MySQL、PostgreSQL。开关 JSON 展开按数据库关闭Admin → Databases → 选择数据库 →Show advanced options→ 切换Allow unfolding of JSON columns→ 保存 →Sync database schema→Re-scan field values。若展开带来性能损耗建议关闭。按字段开关Admin → Table metadata → 选择数据库/表/字段 →Behavior部分的Unfold JSON选 Yes/No展开过的 JSON 原列会被隐藏想恢复可见需把列可见性改为Everywhere→ 顶部Filter values→Re-scan this field。前提JSON 展开要求列的数据类型在数据库中就是 JSON如 CSV 上传的 JSON 需先在库中改列类型Metabase 只能改字段类型不能改数据类型。若字段类型是 Field containing JSON 但底层数据类型不是 JSON仍无法展开。过滤限制查询构建器无法解析 JSON 列内容只能按 Is empty / Not empty 过滤。Segments官方定义的筛选器segments.md 说明 Segment分段是一组特殊命名的过滤器确保团队对客户/用户/产品子集有官方一致的定义——例如 Active Users 分段包含筛选活跃用户所需的所有过滤器。官方建议未来优先使用 Data Studio Segments。创建 Segment管理入口Admin →Table Metadata→ 左下角Segments→New segment。分段构建器是查询构建器的受限版只能添加过滤器选好表与过滤器后填写标题与描述可用Preview按钮在查询构建器窗口中预览。保存后分段出现在查询构建器的过滤器列表顶部不会自动应用于表。编辑与退休在 Admin Table Metadata 选择含分段所在的表点击分段右侧省略号…操作。编辑时需填写变更说明——使用了该分段的已保存问题/仪表盘创建者会收到说明邮件。退休retire后分段不再可从查询构建器选择但不会破坏依赖它的已保存问题。还可从操作列表查看每个分段的修订历史。结语把数据建模串成一个工作流把上述板块组合起来就构成了 Metabase 完整的数据治理闭环Table Metadata 语义类型 格式化决定了原始表如何被理解与展示Models提供面向探索的派生表并承载精细列元数据Metrics与Segments分别统一聚合口径与行级筛选口径Model persistence为高频模型加速JSON unfolding打通半结构化数据的可过滤性。配置入口集中在Admin Table Metadata、Admin Databases、Admin Performance与集合/命令面板相关源码位于 src/metabase/libMBQL 聚合与指标元数据、src/metabase/model_persistence持久化调度与 schema 管理以及 src/metabase/analyze字段分类与指纹。管理员可依据本文逐步落地一套团队统一的、可搜索、可复用、可加速的数据分析底座。【免费下载链接】metabaseThe easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:项目地址: https://gitcode.com/GitHub_Trending/me/metabase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表