ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Metabase 格式化默认值详解:三层覆盖机制与文本、日期、数字、货币的显示控制

Metabase 格式化默认值详解:三层覆盖机制与文本、日期、数字、货币的显示控制 Metabase 格式化默认值详解三层覆盖机制与文本、日期、数字、货币的显示控制【免费下载链接】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/metabaseMetabase 中一个数字该显示成100,000.00还是100.000,00、一个日期该显示成2018/1/31还是January 31, 2018这类显示问题由一套三层优先级机制统一控制全局默认Admin → Settings → Localization、字段默认Admin → Table Metadata → Formatting、问题级覆盖可视化的 gear 设置。本文基于 formatting.md 完整展开这套机制的每个选项并结合仓库中前后端格式化相关源码说明各选项在 Metabase 内部是如何被解析和消费的帮助你在部署后快速配置出符合团队习惯的数据显示效果。三层格式化覆盖机制Metabase 的格式化配置分为三个层级优先级从低到高依次为Global全局在 Admin → Settings → Localization 中设置全局默认值作用于整个实例Field字段在 Admin → Table Metadata 中针对具体字段列设置默认值字段默认值覆盖全局默认值Question问题在单个问题的可视化设置中设置问题默认值同时覆盖全局和字段默认值。这意味着管理员先在 Localization 里定好整个实例的大方向数据管理员再对个别字段做精细化调整最后用户仍可在某个具体问题的可视化设置里单独推翻以上所有设置。三层之间是逐级覆盖override关系而非合并关系。字段级格式化进入路径与选项来源字段级格式化的入口是Admin Table Metadata 数据库 表 字段 Formatting选择目标字段所在的数据库和表向下滚动到Formatting区域即可编辑该字段的格式化默认值。需要特别注意的是字段 Formatting 面板里能看到哪些选项取决于两个字段的属性——字段的数据类型数据库驱动的原始类型和它的语义类型semantic type。例如同一列文本标记为普通文本、邮箱、链接时Metabase 提供的 Display As 选项完全不同时间列在标记为type/DateTime、type/Date时提供的日期样式选项也不同。语义类型由 semantic types 定义并影响 Metabase 对该列的查询与展示行为是格式化选项的前置条件。文本字段的格式化选项以下选项出现在文本类字段的 Formatting 区域具体可用性仍由语义类型决定Align对齐选择数值在表格单元格中显示为居中、靠左还是靠右。Display As显示方式若你的文本列存储的是图片 URL 等内容可能需要先调整语义类型Metabase 才会给出对应的显示选项Text按原样显示文本Email link显示为mailto链接点击可唤起邮件客户端ImageMetabase 会在表格中把图片链接直接渲染为图片AutomaticMetabase 根据字符串格式自动检测应如何显示Link显示为可点击链接并可通过Link text输入框自定义链接文本。例如把 Adjective 列的Link URL设置为https://www.google.com/search?q{{adjective}}此时用户点击该列中的值 askew会被跳转到https://www.google.com/search?qaskew——URL 中的{{列名}}占位符会被单元格的实际值替换。日期与时间字段的格式化选项日期时间类字段语义类型为日期/时间类型的 Formatting 选项包括Align对齐同上控制表格单元格内的水平对齐。Display as显示方式Text按原样显示文本Link把日期/时间显示为可点击链接。Date style日期样式选择日期的呈现方式包括January 31, 2018、31/1/2018、2018/1/31等区域化格式以及其他地区性日期格式。Abbreviate days and months缩写星期与月份名勾选后使用缩写形式例如 January 显示为 JanMonday 显示为 Mon。Show the time显示时间控制时间部分默认显示的精度Off仅显示日期不显示时间HH:MM显示时和分HH:MM:SS显示时、分、秒HH:MM:SS.MS额外显示毫秒。Time style时间制式在 12 小时制如5:24 PM与 24 小时制如17:24之间选择。数字字段的格式化选项数字类字段的 Formatting 选项最为丰富Align对齐同上。Show a mini bar chart显示迷你条形图仅作用于表格可视化。为每个值渲染一根条形用于直观对比该列各值之间的相对大小。Display as显示方式AutomaticMetabase 自动检测最合适的显示格式Text按纯文本显示数字Link显示为可点击链接。Style样式Normal普通数字Percent百分比显示Scientific notation科学计数法如1.23e4Currency按货币格式显示。Currency label style货币标签样式当 Style 为 Currency 时选择货币标签的呈现方式。以加拿大元为例SymbolCA$Local symbol$CodeCADNameCanadian dollars。Where to display the unit of currency货币符号位置In the column heading货币符号只出现在表头In every table cell每个单元格值旁边都显示货币符号。Separator style分隔符样式控制千分位与小数点的用法例如100,000.00美式、100.000,00欧式、100 000.00空格千分位等。Number of decimal places小数位数强制数字按指定小数位数显示。Multiply by a number乘以一个数把该列的值乘以你填写的系数再显示适合单位换算或数值缩放例如把美分换算成美元。Add a prefix前缀在数字前加符号或文字如货币的$。Add a suffix后缀在数字后加符号或文字如dollars、%、units。货币字段Currency货币语义类型字段的格式化设置包含全局货币配置节中的全部选项同时叠加数字字段的全部选项。更多细节见 表格可视化的货币格式化选项。全局默认值Localization 设置三层机制中最底层的全局默认值在Admin Settings Localization中配置参见 Localization 文档主要包括Instance language实例级默认语言作用于 UI、系统邮件、仪表盘订阅和告警用户可在个人账号设置中覆盖。Report timezone报表时区仅影响日期/时间的显示时区不会改变数据库中数据的时区。从该文档给出的对照表看timestamp with time zone/timestamp with offset会按报表时区换算显示而timestamp without time zone包括convertTimezone表达式的输出则不应用报表时区换算。报表时区目前仅支持 BigQuery、Druid、MySQL、Oracle、PostgreSQL、Presto、Redshift、Vertica。First day of the week每周第一天默认为周日影响查询构建器按周过滤/分组的行为不影响 SQL 查询。Dates and times日期与时间显示设置Date style表格、坐标轴标签和 tooltip 中日期的呈现方式、Date separators斜杠2022/12/14、短横2022-12-14、点2022.12.14、是否缩写星期/月份名、Time style12/24 小时制。Number数字显示设置Separator style即千分位用逗号还是小数点等。Currency货币显示设置Unit of currency常用货币与 Currency label style符号 / 代码如 USD / 完整名称。Localization 文档也明确指出这些全局值均可被特定字段或特定问题的设置覆盖覆盖规则即本文开头的三层优先级。问题级格式化单卡覆盖与重置在任意已保存的问题或仪表盘卡片上点击齿轮图标可打开可视化选项在其中可以覆盖所有格式化设置。这是三层中优先级最高的一层。重置操作点击某个设置标签旁的旋转箭头图标即可把该设置重置回默认——如果该字段存在字段级设置则重置为字段级设置否则重置为全局默认。这体现了覆盖链的回退逻辑Question → Field → Global。不同的可视化类型提供不同的格式化选项例如 Combo chart、Detail、Funnel、Gauge、Line, Bar, and area charts、Maps、Numbers、Pie or donut chart、Pivot table、Progress bar、Scatter plot or bubble chart、Tables、Trend、Waterfall chart。源码佐证格式化在 Metabase 内部如何实现文档描述的行为在仓库源码中都有对应实现可以从以下位置进一步确认前端格式化工具库。格式化逻辑集中在 frontend/src/metabase/utils/formatting 模块其统一出口 index.ts 导出了数字formatNumber、formatPercent、numberFormatterForOptions、货币currency、getCurrency、getCurrencyStyleOptions、getCurrencySymbol见 currency.ts、日期DEFAULT_DATE_STYLE、DEFAULT_TIME_STYLE、getTimeFormatFromStyle见 datetime-utils.ts、时长duration、duration.ts与字符串strings.ts等格式化函数。Separator style、Decimal places、Percent/Currency style 等 Formatting 选项正是作为参数传入这些函数的FormatNumberOptions定义于 numbers.tsx由numberFormatterForOptions生成具体格式化器——这与文档中选项依赖语义类型、数字字段与货币字段共享同一套选项的描述一致。数据网格单元格格式化。表格可视化中Text/Email link/Image/Automatic/Link 这类 Display As 行为由数据网格的工具函数实现见 frontend/src/metabase/data-grid/utils/formatting.ts含对应单测 formatting.unit.spec.ts。后端结果集格式化。查询结果返回给前端/导出通道之前后端也会对数值和时间字符串做处理metabase.formatter命名空间在 src/metabase/formatter/core.clj 中通过import-vars暴露了create-formatter、number-formatter、format-scalar-number、make-temporal-str-formatter、row-preprocess等函数实现位于 impl.clj 与 datetime.clj。从源码结构看这一层负责在查询结果序列化阶段生成数字包装器NumericWrapper与文本包装器TextWrapper为下游的表格、邮件附件、订阅消息等通道提供统一的原始格式数据。表格列背景/条件格式。文档中 Show a mini bar chart 与表格可视化中的列格式化能力对应 frontend/src/metabase/viz-core/lib/table_format.ts 中的makeCellBackgroundGetter它根据ColumnFormattingSetting[]与列数据范围extent编译出单元格/整行格式化器文件头注释还说明该文件同时被打包进 static-viz bundle 供后端调用保证静态导出场景下表格显示一致单测见 table_format.unit.spec.ts。实践建议团队级规范优先落在全局层Localization时区、日期样式、分隔符、货币单位这几项一旦定了绝大多数字段无需逐个配置。数据模型层做字段级修正对金额列设置 Currency 语义类型 货币单位对图片 URL 列调整语义类型后启用 Image 显示对链接列配置 Link URL 模板——这些设置随元数据保存所有使用该字段的问题自动受益。展示层才用问题级覆盖某个仪表盘卡片需要特殊的迷你条形图、前缀或链接样式时在可视化设置中单独覆盖并用旋转箭头图标随时回退到字段/全局默认。三层机制的设计目标是让显示偏好可以按粒度分层治理全局管大方向、字段管数据语义、问题管单个展示场景任何一层都可以被更细粒度的一层安全覆盖并随时回退。【免费下载链接】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),仅供参考
返回列表