序列化

序列化功能仅适用于专业版(Pro)企业版(Enterprise)方案(包括自托管和Metabase云版)。

当您真正开始使用Metabase时,通常会启动多个Metabase实例。您可能有两个测试或开发实例和几个生产实例,或者您可能为每个办公室或区域设置了一个独立的Metabase。

为了帮助您应对这种情况,Metabase提供了一个序列化功能,允许您创建Metabase内容的导出,然后将其导入到一个或多个Metabase实例中。

导出会将您的源Metabase内容序列化为YAML文件。

导入将读取这些导出的YAML文件,并根据这些YAML文件中序列化的内容,在目标Metabase中创建或更新项目。

运行这些exportimport命令有两种方式:

我们很乐意了解如何改进序列化以适应您的工作流程。为现有问题投票,让我们知道这对您很重要。如果尚未存在相关问题,请创建一个并告诉我们您的需求。

序列化用例

  • 预生产环境。通过从Metabase的预生产实例导出重要仪表盘,然后将其导入到您的生产实例中,实现预生产到生产的工作流程。
  • 版本控制。将导出的文件检入版本控制并审计其更改,因为导出中包含的YAML文件具有良好的可读性。
  • 将资产复制到其他Metabase实例。从源Metabase导出“模板”数据,并将其导入到一个或多个目标实例。

请查阅我们的指南:

序列化不适用于在同一Metabase实例内复制资产或交换数据源等用例。如果您正在使用序列化在同一实例内复制资产,请查看导出工作原理导入工作原理以及序列化的其他用途中针对您用例的说明。

导出工作原理

导出内容

Metabase将仅导出以下实体:

  • 集合(但个人集合不会被导出,除非通过导出选项明确指定)
  • 仪表盘
  • 已保存问题
  • 操作
  • 模型
  • 指标
  • 片段
  • 数据模型和表元数据
  • 问题和仪表盘的公共共享设置
  • 通用Metabase设置
  • 事件和时间线
  • 数据库连接字符串(仅当通过导出选项指定时)。

所有其他实体——包括用户、组、权限、警报、订阅——都不会被导出。

Metabase会将其工件导出到一个YAML文件目录。导出内容包括:

  • 包含各种Metabase实体YAML文件的目录。根据您导出的内容和Metabase中的内容,导出示例可能包含以下目录:

    • actions
    • collections
      • cards
      • dashboards
      • timelines
    • databases

    通过API进行序列化时,导出目录将被压缩成.tar.gz文件

  • 一个包含某些Metabase全局设置settings.yaml文件

默认不包含数据库连接详情,但您可以配置导出以包含它们。

导出的通用Metabase设置

以下是Metabase在settings.yaml文件中导出的通用设置列表。有关Metabase设置的更多信息,请参阅配置Metabase

humanization-strategy
native-query-autocomplete-match-style
site-locale
report-timezone-short
report-timezone-long
application-name
enable-xrays
show-homepage-pin-message
source-address-header
enable-nested-queries
custom-geojson-enabled
start-of-week
custom-geojson
available-timezones
unaggregated-query-row-limit
aggregated-query-row-limit
hide-embed-branding?
search-typeahead-enabled
enable-sandboxes?
application-font
available-locales
landing-page
enable-embedding
application-colors
application-logo-url
application-favicon-url
show-homepage-xrays
show-metabot
enable-whitelabeling?
show-homepage-data
site-name
application-font-files
loading-message
report-timezone
persisted-models-enabled
enable-content-management?
subscription-allowed-domains
breakout-bins-num
available-fonts
custom-formatting

自定义导出内容

您可以自定义导出内容。您可以告诉Metabase:

  • 导出特定集合
  • 不导出集合
  • 不导出Metabase设置
  • 不导出表元数据
  • 包含示例字段值(默认排除)
  • 包含数据库连接详情(默认排除)

请参阅CLI命令中的导出参数API调用中的导出参数

序列化问题示例

问题可在集合目录的cards目录中找到。以下是一个使用SQL编写的问题的示例卡片YAML文件,该问题使用了字段筛选器并具有面积图可视化。

为保留原生查询的多行格式,请移除原生查询中的尾随空格。如果您的原生查询有尾随空格,YAML会将其转换为单个字符串字面量(这仅影响显示,不影响功能)。

name: Products by week
description: Area chart of products created by week
entity_id: r6vC_vLmo9zG6_r9sAuYG
created_at: "2024-05-08T19:10:24.348808Z"
creator_id: admin@metabase.local
display: area
archived: false
collection_id: onou5H28Wvy3kWnjxxdKQ
collection_preview: true
collection_position: null
query_type: native
dataset: false
cache_ttl: null
database_id: Sample Database
table_id: null
enable_embedding: false
embedding_params: null
made_public_by_id: null
public_uuid: null
parameters:
  - default:
      - Gizmo
    id: c37d2f38-05fa-48c4-a208-19d9dba803c6
    name: Pick a category
    slug: category_filter
    target:
      - dimension
      - - template-tag
        - category_filter
    type: string/=
parameter_mappings: []
dataset_query:
  database: Sample Database
  native:
    query: |-
      SELECT
        category,
        date_trunc ('week', created_at) AS "Week",
        count(*) AS "Count"
      FROM
        products
      WHERE
        
      GROUP BY
        category,
        "Week"
    template-tags:
      category_filter:
        default:
          - Gizmo
        dimension:
          - field
          - - Sample Database
            - PUBLIC
            - PRODUCTS
            - CATEGORY
          - base-type: type/Text
        display-name: Pick a category
        id: c37d2f38-05fa-48c4-a208-19d9dba803c6
        name: category_filter
        type: dimension
        widget-type: string/=
  type: native
result_metadata:
  - base_type: type/Text
    display_name: CATEGORY
    effective_type: type/Text
    field_ref:
      - field
      - CATEGORY
      - base-type: type/Text
    name: CATEGORY
    semantic_type: null
  - base_type: type/DateTime
    display_name: Week
    effective_type: type/DateTime
    field_ref:
      - field
      - Week
      - base-type: type/DateTime
    name: Week
    semantic_type: null
  - base_type: type/BigInteger
    display_name: Count
    effective_type: type/BigInteger
    field_ref:
      - field
      - Count
      - base-type: type/BigInteger
    name: Count
    semantic_type: type/Quantity
visualization_settings:
  column_settings: null
  graph.dimensions:
    - Week
    - CATEGORY
  graph.metrics:
    - Count
serdes/meta:
  - id: r6vC_vLmo9zG6_r9sAuYG
    label: products_created_by_week
    model: Card
initially_published_at: null
metabase_version: v1.49.7 (f0ff786)
type: question

Metabase使用实体ID识别和引用Metabase项目

Metabase为每个Metabase项目(仪表盘、问题、模型、集合等)分配一个唯一的实体ID。这些实体ID是Metabase生成的顺序ID之外的附加ID。实体ID使用NanoID格式,并且在不同的Metabase实例之间是稳定的。所谓“稳定”是指,例如,您可以从一个Metabase导出带有实体ID的仪表盘,然后将其导入到另一个Metabase,并让该仪表盘使用相同的实体ID,即使它位于不同的Metabase中。

要在Metabase中获取项目的实体ID:

  1. 在Metabase中访问该项目。
  2. 点击信息按钮。
  3. 在概览选项卡中,复制实体ID。

您也可以在导出的YAML文件中,在entity_id字段中看到项目的实体ID。例如,在序列化问题示例中,您将看到该问题的实体ID:

entity_id: r6vC_vLmo9zG6_r9sAuYG

此ID也出现在serdes/meta → id字段中(这些ID必须匹配)。

serdes/meta:
  - id: r6vC_vLmo9zG6_r9sAuYG

为区分同名实体,Metabase在导出实体的文件名和目录名中包含实体ID。

r6vC_vLmo9zG6_r9sAuYG_products_by_week.yaml
IA96oUzmUbYfNFl0GzhRj_accounts_model.yaml
KUEGiWvoBFEc5oGQCEnPg_converted_customers.yaml

例如,在上面的序列化问题示例中,您可以看到字段collection_id

collection_id: onou5H28Wvy3kWnjxxdKQ

此ID指的是问题保存到的集合。在实际导出中,您将能够找到此集合的YAML文件,其名称以其ID开头:onou5H28Wvy3kWnjxxdKQ

实体ID与嵌入功能配合使用

Metabase支持在静态嵌入交互式嵌入嵌入式分析SDK中使用问题、仪表盘和集合的实体ID

在您的应用程序中嵌入Metabase时,使用实体ID的高级工作流程大致如下:

  1. 在您本地运行的Metabase中创建一个仪表盘。
  2. 在您的应用程序代码中使用实体ID,将仪表盘本地嵌入到您的应用程序中。
  3. 通过序列化将您的Metabase更改导出为YAML文件。
  4. 将您的Metabase更改(导出的YAML文件)导入到您的生产Metabase中。
  5. 由于实体ID在生产Metabase中保持不变,您只需将应用程序中的代码推送到生产环境,代码将引用正确的仪表盘。

数据库、模式、表和字段通过名称标识

默认情况下,Metabase会导出一些数据库和数据模型设置。导出默认不包含数据库连接字符串。您可以明确包含数据库连接字符串。您也可以选择完全排除数据模型。

Metabase在databases目录中序列化数据库和表。它将包含每个数据库、表、字段、段和指标的YAML文件。

数据库、表和字段通过其名称引用(与Metabase特有的项目不同,后者通过实体ID引用)。

例如,在序列化问题示例中,有几个YAML键引用了“示例数据库”:

database_id: Sample Database
---
dataset_query:
  database: Sample Database

在该示例的字段筛选器(category_filter:)描述中,您可以看到用于填充筛选器选项的字段引用:

dimension:
  - field
  - - Sample Database
    - PUBLIC
    - PRODUCTS
    - CATEGORY

它引用了Sample DatabasePUBLIC模式下PRODUCTS表中的CATEGORY字段。databases目录中序列化的Sample Database也将包含此字段和表的YAML文件。

导入工作原理

在导入过程中,Metabase将读取提供的YAML文件并根据YAML规范创建项目。序列化问题示例展示了Metabase如何记录重建项目所需的信息。

导入期间,Metabase不会从目标实例中删除项目,但会覆盖已存在的项目。

Metabase依赖实体ID来确定要创建或覆盖哪些项目,以及项目之间的关系。当导入到已包含某些内容的实例时,请记住:

  • 如果您导入的项目具有在目标Metabase中不存在的entity_id,Metabase将创建一个新项目。

  • 如果您导入的项目具有在目标Metabase中已存在的entity_id,现有项目将被覆盖。

    特别是,这意味着如果您导出一个问题,然后在导出的YAML文件中进行更改——例如通过直接编辑name字段来重命名问题——然后将编辑后的文件导回,Metabase将尝试应用您对YAML所做的更改。

  • 如果您导入的项目具有空白的entity_id,Metabase将创建一个新项目。在此情况下,任何serdes/meta → id都将被忽略。

  • YAML中引用的所有项目和数据源必须已存在于目标Metabase中,或包含在导入中。

    例如,如果导出的YAML具有字段collection_id: onou5H28Wvy3kWnjxxdKQ,那么集合onou5H28Wvy3kWnjxxdKQ必须已存在于目标实例中,或者必须存在一个包含此ID集合导出的YAML文件。

序列化最佳实践

源实例和目标实例使用相同的Metabase版本

目前,序列化仅在源Metabase和目标Metabase具有相同主版本时才有效。如果您正在使用CLI序列化命令,则用于运行序列化命令的.jar文件版本也应与源和目标Metabase版本匹配。

如果您使用H2作为应用程序数据库,则在导入或导出前需要停止Metabase。

如果您使用Postgres或MySQL作为应用程序数据库,则可以在Metabase仍在运行时进行导入和导出。

避免将序列化用于备份

请注意:序列化并非旨在备份您的Metabase。

请参阅备份Metabase

如果您是要从Metabase附带的默认H2数据库一次性迁移到MySQL/Postgres,请使用迁移指南

您需要手动添加许可证令牌

Metabase在导出中排除了您的许可证令牌,因此如果您运行多个Metabase企业版环境,您需要手动将许可证令牌添加到目标Metabase实例中,可以通过Metabase用户界面,或通过环境变量

Metabase在导出和导入中添加日志

导出:Metabase将日志作为export.log添加到压缩目录中。

导入:您可以添加-o -标志将日志直接导出到终端,或添加-o import.log以保存到文件。

使用CLI命令进行序列化

要在Metabase云上序列化数据,请使用导入和导出API端点

Metabase提供exportimport CLI命令。

有关序列化的通用信息,请参阅导出工作原理导入工作原理序列化最佳实践

使用CLI导出

要导出Metabase实例的内容,请切换到您正在运行Metabase JAR的目录并运行:

java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar export dir_name

其中dir_name可以是您想命名的目录名称。

export选项

要查看export选项列表,请使用help命令:

java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar help export

这将运行并打印如下内容:

export path & options
	 Serialize Metabase instance into directory at `path`.
	 Options:
	   -c, --collection ID             Export only specified ID; may occur multiple times.
	   -C, --no-collections            Do not export any content in collections.
	   -S, --no-settings               Do not export settings.yaml
	   -D, --no-data-model             Do not export any data model entities; useful for subsequent exports.
	   -f, --include-field-values      Include field values along with field metadata.
	   -s, --include-database-secrets  Include database connection details (in plain text; use caution).

--collection

默认情况下,Metabase会将所有集合(个人集合除外)包含在导出中。要包含个人集合,您必须使用--collection标志明确添加它们。

--collection标志(别名-c)允许您通过ID指定一个或多个要包含在导出中的集合。您可以在集合的URL中找到集合ID,例如,对于位于your-metabase.com/collection/42-terraforming-progress的集合,ID将是42

如果您想指定多个集合,请用逗号分隔ID。例如:

java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar export export_name --collection 1,2,3

--no-collections

--no-collections标志(别名-C)告诉Metabase从导出中排除所有集合。

--no-settings

--no-settings标志(别名-S)告诉Metabase排除settings.yaml文件,该文件包含网站范围的设置,默认情况下会导出该文件。

--no-data-model

--no-data-model标志(别名-D)告诉Metabase从导出中排除表元数据设置。管理员在“管理设置”的表元数据选项卡中定义元数据设置。

--include-field-values

--include-field-values标志(别名-f)告诉Metabase包含字段值的示例值,Metabase使用这些值来显示下拉菜单。默认情况下,Metabase会排除这些示例字段值。

--include-database-secrets

--include-database-secrets标志(别名-s)告诉Metabase包含连接详情,包括数据库用户名和密码。默认情况下,Metabase会排除这些数据库连接密钥。如果您不使用此标志,您将需要在目标Metabase中手动输入凭据。

使用CLI导入

要将导出的工件导入到Metabase实例中,请进入您正在运行目标Metabase(您要导入的Metabase)的目录,并使用以下命令,其中path_to_export是您要导入的导出文件的路径:

java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar import path_to_export

目前,您只能将导出的工件导入到与Metabase相同版本创建的Metabase实例中。

import选项

大多数选项在从Metabase导出数据时定义。要查看导入标志列表,请运行:

java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar help import

这将打印出:

import path & options
         Load serialized Metabase instance as created by the [[export]] command from directory `path`.

通过API进行序列化

与CLI序列化命令一样,这些端点仅适用于专业版(Pro)企业版(Enterprise)方案。

您可以通过Metabase的API导入和导出序列化的Metabase数据,这使得Metabase云版部署能够进行序列化。

有两个端点:

  • POST /api/ee/serialization/export
  • POST /api/ee/serialization/import

我们对/export端点使用POST而非GET。导出操作不会修改您的Metabase,但它耗时且密集,因此我们使用POST以防止意外导出。

目前,这些端点是同步的。如果序列化过程耗时过长,请求可能会超时。在这种情况下,我们建议使用CLI命令。

有关序列化的通用信息,请参阅导出工作原理导入工作原理序列化最佳实践

API导出参数

您可以附加可选参数,告诉Metabase在导出中包含或排除什么。您也可以组合参数(当然,排除all_collections和选择性集合)。

因此,假设您正在localhost上测试,并且您想从导出中排除所有集合,您将按如下方式格式化URL:

http://localhost:3000/api/ee/serialization/export?all_collections=false

您可以包含多个参数,用&分隔。例如,要从导出中同时排除设置和数据模型:

http://localhost:3000/api/ee/serialization/export?data_model=false&settings=false

collection

类型:整数数组。

默认值:Metabase将导出所有集合,除非all_collections设置为false

要选择要导出的集合,请包含集合ID。例如,要包含集合12

collection=1&collection=2

all_collections

类型:布尔值

默认值:true(除非您使用collection指定集合子集)。

排除所有集合:

all_collections=false

settings

类型:布尔值。

默认值:true

排除包含网站范围设置的settings.yaml文件:

settings=false

data_model

类型:布尔值。

默认值:true

排除表元数据

data_model=false

field_values

类型:布尔值。

默认值:false

包含字段值的示例值,Metabase使用这些值来显示下拉菜单:

field_values=true

database_secrets

类型:布尔值。

默认值:false

包含数据库连接详情,如数据库用户名和密码:

database_secrets=true

dirname

类型:字符串。

默认值:<instance-name>-<YYYY-MM-dd_HH_mm>

指定不同的目录:

dirname=name_of_your_directory

通过API调用进行序列化时,您必须压缩文件

为了控制网络传输中的文件大小,exportimport端点都期望GZIP压缩的Tar文件(.tgz)。

压缩目录

压缩目录(例如,名为metabase_data的目录)。

tar -czf  metabase_data.tgz metabase_data

解压目录

解压目录:

tar -xvf  metabase_data.tgz

序列化API示例

步骤1:设置API密钥

  1. 创建一个API密钥
  2. 将密钥分配给Admin组。

步骤2:导出

  1. 发送curl请求以导出数据:
curl \
  -H 'x-api-key: YOUR_API_KEY' \
  -X POST 'http://your-metabase-url/api/ee/serialization/export' \
  -o metabase_data.tgz

YOUR_API_KEY替换为您的API密钥,将your-metabase-url替换为您的Metabase实例URL。

我们对/export端点使用POST,而非GET

此命令会将文件下载为名为metabase_data.tgz的GZIP压缩的Tar文件。

  1. 解压压缩文件
tar -xvf metabase_data.tgz

解压后的目录名称将类似于metabase-yyyy-MM-dd_HH-mm,其中包含导出日期和时间。

步骤3:导入

  1. 压缩包含序列化Metabase应用程序数据的目录

假设您的Metabase应用程序数据YAML文件位于名为metabase_data的目录中。在将这些文件导入到您的目标Metabase之前,您需要先压缩这些文件。

tar -czf metabase_data.tgz metabase_data
  1. POST到/api/ee/serialization/import

从您存储GZIP压缩文件的目录运行:

curl -X POST \
  -H 'x-api-key: YOUR_API_KEY' \
  -F file=@metabase_data.tgz \
  'http://your-metabase-url/api/ee/serialization/import' \
  -o -

YOUR_API_KEY替换为您的API密钥,将your-metabase-url替换为您的Metabase实例URL。-o -选项将在终端中输出日志。

如果您将Metabase数据导入到与导出数据相同的Metabase中,您将覆盖现有的问题、仪表盘等。请参阅导入工作原理

序列化的其他用途

序列化旨在用于版本控制、从预生产到生产的工作流,以及将资产复制到其他Metabase实例。虽然可以将序列化用于其他用例(例如在单个实例内部复制资产),但我们不正式支持这些用例。

我们提供了一些处理这些不受支持用例的指导,但您应自行承担风险使用。我们强烈建议您首先在非生产实例上测试任何涉及序列化的过程,如有任何疑问,请联系help@metabase.com

在同一Metabase中复制内容时使用序列化

使用序列化复制内容并非易事,因为您需要处理所有要复制的项目的实体ID——以及与这些项目相关的所有项目的ID——以避免覆盖现有数据。

在开始这一危险旅程之前,请回顾导出工作原理导入工作原理,如有任何疑问,请联系help@metabase.com

您需要记住:

  • 导入具有已存在实体ID的项目将覆盖现有项目。要使用现有YAML文件创建新项目,您需要a) 创建一个新的实体ID,或b) 清除实体ID。
  • 两个项目不能拥有相同的实体ID。
  • YAML文件中的entity_idserdes/meta → id字段应匹配。
  • 如果某个项目的YAML文件中的entity_idserdes/meta → id字段为空,Metabase将创建一个带有新实体ID的新项目。
  • 一个项目引用的所有项目和数据源应要么已存在于目标Metabase中,要么包含在导入中。

    例如,一个集合可能包含一个仪表盘,该仪表盘包含一个基于引用数据源的模型构建的问题。所有这些依赖项都必须包含在导入中或已存在于目标实例中。

    这意味着您可能需要进行多阶段导出/导入:首先在Metabase中创建您需要的一些项目(如集合),导出它们以获取其实体ID,然后导出您想要复制的内容并在引用它们的项目中使用这些ID。

例如,要在不更改问题数据源的情况下,复制一个只包含直接基于原始数据构建(而非基于模型或其他已保存问题)的问题的集合,您可以使用如下流程:

  1. 在Metabase中,创建一个“模板”集合并添加您想要复制的项目。
  2. 在Metabase中,创建一个新集合,作为复制项目的目标。
  3. 导出模板集合和目标集合(您可以使用导出参数仅导出少量集合)。导出中模板问题的YAML文件将拥有自己的实体ID,并引用模板集合的实体ID。
  4. 从目标集合的导出中获取其实体ID。
  5. 在模板集合导出中问题的YAML文件中:

    • 清除问题中字段entity_idserdes/meta → id的值。这将确保模板问题不会被覆盖,而是Metabase将创建新问题。
    • collection_id对模板集合的引用替换为新集合的ID:
  6. 导入编辑后的文件。

此过程假设您复制的问题都将使用相同的数据源。您可以将其与切换数据源结合使用,以便为每个复制的集合使用不同的数据源。

如果您想一次创建多个集合副本,那么可以不必为每个副本重复此过程,而是创建您自己的目标实体ID(它们可以是任何使用NanoID格式的字符串),复制所有模板YAML文件,并将模板实体ID及其任何引用替换为您创建的实体ID。

如果您的集合包含仪表盘、模型以及其他可能添加依赖项的项目,此过程可能会变得更加复杂——您需要处理每个依赖项。我们强烈建议您首先在非生产Metabase上测试您的序列化,如果您需要任何帮助,请联系help@metabase.com

在一个实例内使用序列化来交换问题的数据源

如果您想更改Metabase中某些问题的数据源——例如,仅更改单个集合中的问题——您可以手动序列化这些问题,然后编辑导出的YAML文件。

如果您想将基于数据库A构建的所有问题都切换为使用数据库B,并且数据库B与数据库A具有完全相同的模式,则无需使用序列化:您只需在管理 > 数据库中交换连接字符串即可。

您的数据库必须具有相同的引擎,并且理想情况下应具有相同的模式。

您需要记住:

  • 数据库、表和字段在Metabase 中按名称引用
  • 数据库连接详细信息默认不会导出。要导出数据库连接详细信息,您需要在导出参数中指定
  • 项目引用的数据库、表和字段应已存在于目标 Metabase 中,或包含在导入中。

例如,如果您想将Movie reviews集合中的所有问题切换为使用Romance数据库而不是Horror数据库,并且两个数据库具有相同的架构,您可以遵循以下过程

  1. 在 Metabase 中,在管理员 > 数据库中添加新的数据库连接并将其命名为Romance
  2. 导出集合Movie reviews

    您可以告诉 Metabase 导出单个集合,或者您可以导出所有集合,然后只需处理Movie reviews集合文件夹中的文件

  3. 在此集合的项目 YAML 文件中,将所有对Horror数据库的引用替换为对Romance数据库的引用
  4. 导入编辑后的文件。

导入将覆盖原始问题。如果您想创建使用不同数据源的新问题,可以将此过程与使用序列化来复制资产结合起来。

此过程假定您的新数据源具有完全相同的架构。如果架构不同,您还需要替换对所有表和字段的所有引用。此过程可能复杂且容易出错,因此我们强烈建议您首先在非生产实例上测试您的序列化,如果需要任何帮助,请联系help@metabase.com

从旧的序列化命令迁移

如果您正在从 Metabase 46.X 或更早版本升级,以下是您需要了解的内容

  • export 命令取代了dump 命令。
  • import 命令取代了load 命令。

其他一些需要指出的更改

  • 导出的 YAML 文件结构略有不同
    • Metabase 将在每个文件前加上一个 24 字符的实体 ID(例如IA96oUzmUbYfNFl0GzhRj_accounts_model.yaml)。您可以在导出前运行 Metabase 命令删除实体 ID
    • 文件树略有不同。
  • 要序列化个人集合,您只需在逗号分隔的 ID 列表中包含个人集合 ID,紧跟在-c选项(--collection的缩写)之后。

如果您已编写脚本来自动化序列化,则需要

  • 使用升级后的 Metabase(它使用新的exportimport命令)重新序列化您的 Metabase。请注意,只有在使用相同 Metabase 版本导出和导入 Metabase 时,序列化才能正常工作。
  • 使用新命令更新这些脚本。请参阅新的导出选项
  • 如果您的脚本对导出的 YAML 文件进行任何后处理,您可能需要更新脚本以适应略有不同的目录和 YAML 文件结构。

延伸阅读

阅读其他Metabase 版本的文档。

© . All rights reserved.