Databricks アセット バンドルで成果物設定を動的に定義する

この記事では、 Databricks アセット バンドルの成果物の設定をオーバーライドする方法について説明します。 「Databricks アセット バンドルとは」を参照してください。

Databricks バンドル構成ファイルでは、最上位の artifacts マッピングの成果物設定を、 targets マッピングの成果物の設定と結合できます (省略記号は、簡潔にするために省略されたコンテンツを示します)。

# ...
artifacts:
  <some-unique-programmatic-identifier-for-this-artifact>:
    # Artifact settings.

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    resources:
      artifacts:
        <the-matching-programmatic-identifier-for-this-artifact>:
          # Any more artifact settings to join with the settings from the
          # matching top-level artifacts mapping.

最上位の artifacts マッピングと、同じ成果物の targets マッピングの両方で成果物の設定が定義されている場合、 targets マッピングの設定は、最上位の artifacts マッピングの設定よりも優先されます。

例 1: 最上位の成果物マッピング でのみ定義された成果物の設定

これが実際にどのように機能するかを示すために、次の例では、成果物のすべての設定を定義する最上位の artifacts マッピングでpath が定義されています (省略記号は、簡潔にするために省略されたコンテンツを示します)。

# ...
artifacts:
  my-artifact:
    type: whl
    path: ./my_package
# ...

この例で databricks bundle validate を実行すると、結果のグラフは次のようになります (省略記号は、簡潔にするために省略された内容を示します)。

{
  "...": "...",
  "artifacts": {
    "my-artifact": {
      "type": "whl",
      "path": "./my_package",
      "...": "..."
    }
  },
  "...": "..."
}

例 2: 複数の成果物マッピング で定義されている成果物設定の競合

この例では、path は最上位の artifacts マッピングと targetsartifacts マッピングの両方で定義されています。この例では、 targetsartifacts マッピングのpath が最上位の artifacts マッピングの path よりも優先され、成果物の設定を定義します (省略記号は簡潔にするために省略されたコンテンツを示します)。

# ...
artifacts:
  my-artifact:
    type: whl
    path: ./my_package

targets:
  dev:
    artifacts:
      my-artifact:
        path: ./my_other_package
    # ...

この例で databricks bundle validate を実行すると、結果のグラフは次のようになります (省略記号は、簡潔にするために省略された内容を示します)。

{
  "...": "...",
  "artifacts": {
    "my-artifact": {
      "type": "whl",
      "path": "./my_other_package",
      "...": "..."
    }
  },
  "...": "..."
}