序列化

序列化僅適用於 ProEnterprise 方案(包括自架和 Metabase Cloud)。

一旦您真正開始使用 Metabase,通常會有多個 Metabase 執行個體啟動並執行。您可能會有幾個測試或開發執行個體和一些生產執行個體,或者您可能每個辦公室或區域都有一個獨立的 Metabase。

為了在這種情況下協助您,Metabase 具有序列化功能,可讓您建立 Metabase 內容的匯出,然後可以將其匯入到一個或多個 Metabase 中。

匯出會將來源 Metabase 的內容序列化為 YAML 檔案。

匯入會讀取這些匯出的 YAML 檔案,並根據這些 YAML 檔案中序列化的內容,在目標 Metabase 中建立或更新項目。

有兩種方法可以執行這些 exportimport 指令

我們很想知道如何改進序列化以符合您的工作流程。投票支持現有的 issue,讓我們知道這對您很重要。如果還沒有相關的 issue,請建立一個並告訴我們您的需求。

序列化使用案例

  • 暫存環境。透過從 Metabase 的暫存執行個體匯出,然後將它們匯入到您的生產執行個體,為重要的儀表板啟用從暫存到生產的工作流程。
  • 版本控制。將匯出的檔案簽入版本控制並稽核對它們的變更,因為匯出中包含的 YAML 檔案非常易於閱讀。
  • 將資產複製到其他 Metabase 執行個體。從來源 Metabase 匯出「範本」資料,並將它們匯入到一個或多個目標執行個體。

查看我們的指南,了解

序列化不適用於在同一個 Metabase 執行個體中複製資產或交換資料來源等使用案例。如果您使用序列化在同一個執行個體中複製資產,請查看匯出運作方式匯入運作方式,以及序列化的其他用途中的使用案例指示。

匯出運作方式

匯出的內容

Metabase 將只匯出以下實體

  • 集合(但除非透過匯出選項明確指定個人集合,否則不會匯出個人集合)
  • 儀表板
  • 已儲存問題
  • 動作
  • 模型
  • 指標
  • SQL 片段
  • 資料模型和表格中繼資料
  • 區隔
  • 問題和儀表板的公開共用設定
  • 一般 Metabase 設定
  • 事件與時間軸
  • 資料庫連線字串(僅在透過匯出選項指定時)。

所有其他實體(包括使用者、群組、權限、警示、訂閱)都不會匯出。

Metabase 會將其成品匯出到 YAML 檔案的目錄。匯出內容包括

  • 包含各種 Metabase 實體 YAML 檔案的目錄。範例匯出可能包括以下目錄,具體取決於您匯出的內容以及 Metabase 的內容

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

    透過 API 序列化時,匯出目錄將壓縮為 .tar.gz 檔案

  • settings.yaml 檔案,其中包含一些Metabase 全域設定

預設情況下不包含資料庫連線詳細資訊,但您可以設定您的匯出以包含它們。

匯出的一般 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 使用 NanoID 格式

您可以在匯出的 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

資料庫、結構描述、表格和欄位依名稱識別

預設情況下,Metabase 會匯出一些資料庫和資料模型設定。匯出預設排除資料庫連線字串。您可以明確包含資料庫連線字串。您也可以選擇完全排除資料模型。

Metabase 在 databases 目錄中序列化資料庫和表格。它將包含每個資料庫、表格、欄位、區隔和指標的 YAML 檔案。

資料庫、表格和欄位依其名稱參照(與 Metabase 特定項目不同,Metabase 特定項目依實體 ID 參照)。

例如,在序列化問題的範例中,有幾個 YAML 金鑰參照範例資料庫

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

在該範例中欄位篩選器(category_filter:)的描述中,您可以看到對用於填入篩選器選項的欄位的參照

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

它參照範例資料庫PUBLIC 結構描述的 PRODUCTS 表格中的 CATEGORY 欄位。databases 目錄中序列化的 範例資料庫也將包含此欄位和表格的 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 必須已存在於目標執行個體中,或者必須有一個 YAML 檔案,其中包含具有此 ID 的集合的匯出。

序列化最佳實務

來源和目標執行個體使用相同的 Metabase 版本

目前,序列化僅在來源和目標 Metabase 具有相同主要版本時才有效。如果您使用 CLI 序列化指令,您用於執行序列化指令的 .jar 檔案版本也應與來源和目標 Metabase 版本匹配。

如果您使用 H2 作為您的應用程式資料庫,您需要在匯入或匯出之前停止 Metabase

如果您使用 Postgres 或 MySQL 作為您的應用程式資料庫,您可以在 Metabase 仍在執行時匯入和匯出。

避免使用序列化進行備份

請注意:序列化並非旨在備份您的 Metabase。

請參閱備份 Metabase

如果您是想執行從 Metabase 隨附的預設 H2 資料庫到 MySQL/Postgres 的一次性移轉,請改用移轉指南

您需要手動新增授權權杖

Metabase 從匯出中排除您的授權權杖,因此如果您執行多個 Metabase Enterprise Edition 環境,您需要手動將您的授權權杖新增到目標 Metabase,可以透過Metabase 使用者介面,或透過環境變數

Metabase 將記錄新增到匯出和匯入

匯出:Metabase 將記錄新增到壓縮目錄中,作為 export.log

匯入:您可以新增 -o - 旗標以將匯出記錄直接新增到終端機,或新增 -o import.log 以儲存到檔案。

使用 CLI 指令進行序列化

若要在 Metabase Cloud 上序列化資料,請使用匯入和匯出 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 匯入

若要將匯出的 Artifact 匯入 Metabase 執行個體,請前往您正在執行目標 Metabase(您想要匯入的 Metabase)的目錄,並使用以下命令,其中 path_to_export 是您想要匯入的匯出路徑

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

目前,您僅能將匯出的 Artifact 匯入從相同 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 序列化命令,這些端點僅適用於 ProEnterprise 方案。

您可以透過 Metabase 的 API 匯入和匯出序列化的 Metabase 資料,這讓 Metabase Cloud 部署能夠進行序列化。

有兩個端點

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

針對 /export 端點,我們使用 POST,而非 GET。匯出操作不會修改您的 Metabase,但由於其耗時且密集,因此我們使用 POST 以防止意外匯出。

目前,這些端點是同步的。如果序列化程序耗時過長,請求可能會逾時。在這種情況下,我們建議使用 CLI 命令。

請參閱匯出運作方式匯入運作方式序列化最佳實務,以取得有關序列化的一般資訊。

API 匯出參數

您可以附加選用參數,以告知 Metabase 要在匯出中納入或排除哪些項目。您也可以組合參數(當然,排除 all_collections 和選取的集合)。

因此,假設您在 localhost 上測試,並且想要從匯出中排除所有集合,您會將 URL 格式化為如下所示

https://127.0.0.1:3000/api/ee/serialization/export?all_collections=false

您可以納入多個參數,並以 & 分隔。例如,若要從匯出中排除設定和資料模型

https://127.0.0.1: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. 將金鑰指派給管理員群組

步驟 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 應用程式資料的目錄

假設您的 YAML 檔案包含 Metabase 應用程式資料,並且位於名為 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 內使用序列化來複製內容

使用序列化來複製內容並非易事,因為您需要處理所有您想要複製的項目之 Entity ID,以及與這些項目相關的所有項目之 ID,以避免覆寫現有資料。

在開始這趟危險的旅程之前,請檢閱匯出運作方式匯入運作方式,如果您有任何疑問,請聯絡 help@metabase.com

您需要記住

  • 匯入 Entity ID 已存在的項目會覆寫現有項目。若要使用現有的 YAML 檔案來建立新項目,您需要 a) 建立新的 Entity ID 或 b) 清除 Entity ID。
  • 兩個項目不能有相同的 Entity ID。
  • YAML 檔案中的 entity_idserdes/meta → id 欄位應相符。
  • 如果項目的 YAML 檔案中的 entity_idserdes/meta → id 欄位為空白,Metabase 將建立具有新 Entity ID 的新項目。
  • 項目參考的所有項目和資料來源應已存在於目標 Metabase 中,或納入匯入中。

    例如,集合可以包含儀表板,而儀表板可以包含基於模型建立的問題,模型又參考資料來源。所有這些依賴項目都必須納入匯入中,或已存在於目標執行個體中。

    這表示您可能需要多階段匯出/匯入:先在 Metabase 中建立您需要的一些項目(例如集合),匯出它們以取得其 Entity ID,然後匯出您想要複製的內容,並在參考它們的項目中使用這些 ID。

例如,若要複製一個包含直接基於原始資料(而非模型或其他已儲存問題)建立的問題之集合,並且不變更問題的資料來源,您可以使用如下的程序

  1. 在 Metabase 中,建立「範本」集合,並加入您想要複製的項目。
  2. 在 Metabase 中,建立新的集合,作為複製項目的目標。
  3. 匯出範本集合和目標集合(您可以使用匯出參數來僅匯出少數集合)。匯出中範本問題的 YAML 檔案將具有自己的 Entity ID,並參考範本集合的 Entity ID。
  4. 從目標集合的匯出中取得目標集合的 Entity ID。
  5. 在範本集合匯出中問題的 YAML 檔案中

    • 清除問題的 entity_idserdes/meta → id 欄位值。這將確保範本問題不會被覆寫,而是 Metabase 將建立新問題。
    • collection_id 參考替換為新集合的 ID,以參考範本集合
  6. 匯入已編輯的檔案。

此程序假設您複製的問題都將使用相同的資料來源。您可以將此程序與切換資料來源結合使用,以便為每個複製的集合使用不同的資料來源。

如果您想要一次建立多個集合副本,則可以建立自己的目標 Entity ID(它們可以是任何使用 NanoID 格式的字串),複製所有範本 YAML 檔案,並將範本 Entity ID 以及對它們的所有參考替換為您建立的 Entity 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 個字元的 Entity ID 前綴(例如 IA96oUzmUbYfNFl0GzhRj_accounts_model.yaml)。您可以執行 Metabase 命令以在匯出前捨棄 Entity ID
    • 檔案樹狀結構略有不同。
  • 若要序列化個人集合,您只需要在逗號分隔的 ID 清單中納入個人集合 ID,並遵循 -c 選項(--collection 的縮寫)即可。

如果您已編寫腳本來自動化序列化,則需要

  • 使用升級後的 Metabase(使用新的 exportimport 命令)重新序列化您的 Metabase。請注意,只有在您使用相同的 Metabase 版本匯出和匯入 Metabase 時,序列化才會運作。
  • 使用新命令更新這些腳本。請參閱新的匯出選項
  • 如果您的腳本對匯出的 YAML 檔案執行任何後處理,您可能需要更新腳本以適應稍微不同的目錄和 YAML 檔案結構。

延伸閱讀

閱讀其他Metabase 版本的文件。