次の方法で共有


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

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

Azure 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: 最上位レベルの成果物マッピングでのみ定義されている成果物の設定

この実際のしくみを示すために、path が最上位レベルの artifacts マッピングに定義されています。これにより、成果物のすべての設定が定義されます (簡潔にするために、省略記号が省略されたコンテンツを示しています)。

# ...
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",
      "...": "..."
    }
  },
  "...": "..."
}