Databricksワークスペース内のノートブック・フォルダ・ファイルを別のワークスペースに移行したり、 バックアップを取得したり、CI/CDパイプラインにコードを渡す際に使うのがWorkspace Export / Importです。
この記事では、エクスポート形式(DBC/SOURCE/HTML)の違い、Databricks CLIとREST APIを使った 操作コマンド、Terraformとの連携方式、そしてエクスポート時の権限・シークレットの扱いについて解説します。
Databricksのワークスペースからノートブックをエクスポートする際、3つの形式を選択できます。
| 形式 | 拡張子 | 含まれる内容 | 用途 | インポート可能か |
|---|---|---|---|---|
| DBC | .dbc | ノートブック本体・メタデータ・セル構造・フォルダ構造 | バックアップ・ワークスペース間移行 | はい(完全復元) |
| SOURCE | .py / .sql / .scala / .r | ソースコードのみ(セル区切りはコメントで表現) | Git管理・CI/CD・コードレビュー | はい(ノートブックとして作成) |
| HTML | .html | ノートブックのレンダリング結果(コード+出力+グラフ) | ドキュメント共有・レポート配布 | いいえ(読み取り専用) |
| JUPYTER | .ipynb | Jupyter形式のノートブック(セル・メタデータ・出力) | Jupyter Notebook互換環境への移行 | はい |
DBC形式はDatabricks固有のアーカイブ(実体はZIPファイル)で、フォルダ全体をまとめてエクスポートできます。 SOURCE形式は純粋なソースコードファイルで、Gitリポジトリへの格納やPRレビューに最適です。
Databricks CLIを使うと、コマンドラインからバッチ的にExport / Importを実行できます。
# SOURCE形式でエクスポート
databricks workspace export \
/Workspace/Users/[email protected]/etl_pipeline \
--file ./etl_pipeline.py \
--format SOURCE
# DBC形式でエクスポート
databricks workspace export \
/Workspace/Users/[email protected]/etl_pipeline \
--file ./etl_pipeline.dbc \
--format DBC
# HTML形式でエクスポート(レポート共有用)
databricks workspace export \
/Workspace/Users/[email protected]/etl_pipeline \
--file ./etl_pipeline.html \
--format HTML# フォルダ全体をSOURCE形式で一括エクスポート
databricks workspace export_dir \
/Workspace/Shared/etl-project \
./backup/etl-project \
--overwrite# SOURCE形式のインポート
databricks workspace import \
--path /Workspace/Users/[email protected]/etl_pipeline \
--file ./etl_pipeline.py \
--format SOURCE \
--language PYTHON
# DBC形式の一括インポート
databricks workspace import_dir \
./backup/etl-project \
/Workspace/Shared/etl-project-restored \
--overwriteCI/CDパイプラインからプログラマティックにExport / Importを行う場合はREST APIを使います。
# エクスポート(SOURCE形式)
curl -X GET \
"https://<workspace-url>/api/2.0/workspace/export" \
-H "Authorization: Bearer <token>" \
-d '{
"path": "/Workspace/Users/[email protected]/etl_pipeline",
"format": "SOURCE"
}'
# レスポンス(Base64エンコードされたコンテンツ)
{
"content": "IyBEYXRhYnJpY2tzIG5vdGVib29rIHNvdXJjZQ...",
"file_type": "py"
}# インポート(SOURCE形式)
curl -X POST \
"https://<workspace-url>/api/2.0/workspace/import" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"path": "/Workspace/Users/[email protected]/etl_pipeline_v2",
"format": "SOURCE",
"language": "PYTHON",
"content": "IyBEYXRhYnJpY2tzIG5vdGVib29rIHNvdXJjZQ...",
"overwrite": true
}'REST APIでのコンテンツはBase64エンコードされる点に注意してください。 大量のノートブックを移行する場合は、CLIのexport_dir/import_dirの方が効率的です。
| 項目 | DBC形式 | SOURCE形式 | HTML形式 |
|---|---|---|---|
| ソースコード | 含まれる | 含まれる | 含まれる(HTMLとして) |
| セル構造・メタデータ | 含まれる | コメントで表現 | レンダリング済み |
| 実行結果・出力 | 含まれない | 含まれない | 含まれる |
| ダッシュボード | 含まれる(ノートブック付属の場合) | 含まれない | 含まれる |
| ワークスペース権限(ACL) | 含まれない | 含まれない | 含まれない |
| Secret Scopeの内容 | 含まれない | 含まれない | 含まれない |
| クラスタ設定 | 含まれない | 含まれない | 含まれない |
| ジョブ定義 | 含まれない | 含まれない | 含まれない |
ワークスペース権限(ACL)、Secret Scope、クラスタ設定、ジョブ定義はいずれの形式でもエクスポートされません。 これらのリソースを移行するには、Databricks Terraform ProviderまたはDatabricks CLIの 各リソース用APIを個別に使う必要があります。
ワークスペースのノートブック配置をIaCで管理する場合、Terraform Providerのdatabricks_notebookリソースを使います。
resource "databricks_notebook" "etl_pipeline" {
path = "/Workspace/Shared/etl-project/etl_pipeline"
language = "PYTHON"
source = "${path.module}/notebooks/etl_pipeline.py"
}
resource "databricks_notebook" "data_quality" {
path = "/Workspace/Shared/etl-project/data_quality"
language = "SQL"
source = "${path.module}/notebooks/data_quality.sql"
}Terraformで管理するメリットは、ノートブックの配置だけでなく、 クラスタ・ジョブ・権限・Secret Scopeなどのリソースも含めて一元管理できる点です。 ただし、ノートブックの頻繁な更新にはTerraformのapplyサイクルが重く、 開発フェーズではRepos、デプロイフェーズではDABsまたはTerraformという使い分けが現実的です。
ワークスペース間でのノートブック移行には複数のアプローチがあります。
| パターン | 方法 | 適用場面 |
|---|---|---|
| 手動Export/Import | UIからDBC形式でエクスポート → 別ワークスペースでインポート | 少量のノートブック移行(〜数十件) |
| CLIバッチ処理 | export_dir → import_dir | 大量のノートブック移行(数百件〜) |
| Git経由 | Reposで元ワークスペースからpush → 新ワークスペースでclone | Git管理済みのプロジェクト |
| Terraform | IaCコードのtarget変更で別ワークスペースにapply | インフラ含めた全体移行 |
Development Tools
問題 1
開発環境のDatabricksワークスペースから本番環境のワークスペースにノートブックを移行する必要がある。ノートブックのコード・セル構造・フォルダ構成を完全に保持したい。ただし権限設定は両環境で異なるため個別に設定する。最も適切な移行方法はどれか。
正解: A
DBC形式はセル構造・メタデータ・フォルダ構成を完全に保持するアーカイブ形式です。エクスポートに権限は含まれないため、インポート後にPermissions APIで権限を設定します。SOURCE形式はソースコードのみでセル構造の完全な保持は保証されません。HTML形式は読み取り専用でインポートできません。ノートブックはDBFSではなくワークスペースのファイルツリーに保存されるため、DBFSコピーではノートブックは移行できません。
DBC形式とSOURCE形式のどちらでエクスポートすべきですか?
用途によります。DBC形式はDatabricks固有のアーカイブ形式で、ノートブックのメタデータ・セル構造・ダッシュボードなどを完全に保持します。ワークスペース間のノートブック移行やバックアップにはDBC形式が適しています。SOURCE形式は純粋なソースコード(.py/.sql/.scala/.r)としてエクスポートするため、Git管理やCI/CDパイプラインとの連携に適しています。HTML形式はドキュメント共有用の読み取り専用形式です。一般的にはバックアップはDBC、開発はSOURCE、レポート共有はHTMLと使い分けます。
エクスポートした内容にシークレットは含まれますか?
いいえ。dbutils.secrets.get()で取得するシークレット自体はSecret Scope内に安全に保管されており、ノートブックのエクスポートには含まれません。ただし、シークレットのスコープ名やキー名はコード内に記述されているため、エクスポートされたコードからどのシークレットを参照しているかは推測可能です。また、ノートブック内にハードコードされたシークレット(非推奨ですが存在する場合)は、SOURCEやDBC形式のエクスポートに含まれます。エクスポート前にコード内のシークレットハードコードを排除することが重要です。
Workspace Export / Importは認定試験でどう出題されますか?
Data Engineer Associate試験の「開発ツール」ドメインおよびProfessional試験の「デプロイと管理」ドメインで出題されます。主な出題パターンは「ワークスペース間でノートブックを移行する方法」「CLIでバッチエクスポートするコマンド」「DBC vs SOURCE形式の違い」「エクスポートに含まれる/含まれないもの」です。Terraform連携やDABsとの使い分けが問われることもあります。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...