Definir configurações de artefato dinamicamente no Databricks Asset Bundles

Este artigo descreve como substituir as configurações de artefatos no Databricks Asset Bundles. Consulte O que são Databricks Asset Bundles?

Nos arquivos de configuração de pacote do Azure Databricks, você pode unir as configurações de artefato em um mapeamento de nível artifacts superior com as configurações de artefato em um targets mapeamento, por exemplo (reticências indicam conteúdo omitido, para brevidade):

# ...
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.

Se qualquer configuração de artefato for definida no mapeamento de nível artifacts superior e no targets mapeamento para o mesmo artefato, a configuração no targets mapeamento terá precedência sobre a configuração no mapeamento de nível artifacts superior.

Exemplo 1: Configurações de artefato definidas somente no mapeamento de artefatos de nível superior

Para demonstrar como isso funciona na prática, no exemplo a seguir, path é definido no mapeamento de nível artifacts superior, que define todas as configurações para o artefato (reticências indicam conteúdo omitido, para brevidade):

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

Quando você executa databricks bundle validate este exemplo, o gráfico resultante é (reticências indicam conteúdo omitido, para brevidade):

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

Exemplo 2: Configurações de artefato conflitantes definidas em vários mapeamentos de artefatos

Neste exemplo, path é definido tanto no mapeamento de nível artifacts superior quanto no artifacts mapeamento em targets. Neste exemplo, path no mapeamento em targets tem precedência sobre path no mapeamento de nível artifacts superior, para definir as configurações para o artefato (reticências indicam conteúdo omitido, para artifacts brevidade):

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

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

Quando você executa databricks bundle validate este exemplo, o gráfico resultante é (reticências indicam conteúdo omitido, para brevidade):

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