Importar metadados usando um pipeline personalizado

Neste documento, descrevemos como importar metadados do catálogo do Dataplex de um sistema de terceiros para o Dataplex usando a API de importação de metadados métodos e seu próprio pipeline. Os metadados do Dataplex Catalog são compostos por entradas e aspectos.

Se você quiser usar um pipeline de orquestração gerenciado pelo Google Cloud para extrair e importar metadados, sugerimos usar um pipeline de conectividade gerenciado. Com um pipeline de conectividade gerenciado, você usa seu próprio conector que extrai metadados e gera saídas em um formato que pode ser usado como entrada pelo metadados da API de importação (o arquivo de importação de metadados). Depois, use Workflows para orquestrar as tarefas do pipeline.

Etapas avançadas

Para importar metadados usando a API de importação de metadados, siga estas etapas gerais:

  1. Determine o escopo do job.

    Além disso, entenda como o Dataplex aplica a lógica de comparação e o modo de sincronização para entradas e aspectos.

  2. Crie um ou mais arquivos de importação de metadados que definam os dados a serem importados.

  3. Salve os arquivos de importação de metadados em um bucket do Cloud Storage.

  4. Executar um job de importação de metadados.

As etapas nesta página pressupõem que você esteja familiarizado com Conceitos do catálogo do Dataplex, incluindo grupos de entrada, tipos de entrada, e tipos de aspecto. Para mais informações, consulte Visão geral do catálogo do Dataplex.

Antes de começar

Antes de importar metadados, conclua as tarefas desta seção.

Funções exigidas

Para garantir que a conta de serviço do Dataplex tenha as permissões necessárias para acessar o bucket do Cloud Storage, peça ao administrador para conceder à conta de serviço do Dataplex o papel do IAM de Leitor de objetos do Storage (roles/storage.objectViewer) e a permissão storage.buckets.get no bucket.

Para receber as permissões necessárias para gerenciar jobs de metadados, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Criar recursos do Google Cloud

Prepare os seguintes recursos do Google Cloud:

  1. Crie um grupo de entrada para as entradas que você quer importar.
  2. Crie tipos de aspectos para os aspectos que você quer importar.
  3. Crie tipos de entrada para as entradas que você quer importar.
  4. Crie um bucket do Cloud Storage para armazenar os arquivos de importação de metadados.

Componentes de um job de metadados

Ao importar metadados, considere os seguintes componentes de um job de metadados:

  • Escopo do trabalho: o grupo de entradas, os tipos de entrada e os tipos de aspecto a serem incluídos em o job.
  • Modo de sincronização: se é necessário realizar uma atualização completa ou incremental nas entradas e aspectos do job.
  • Arquivo de importação de metadados: um arquivo que define os valores a serem definidos para as entradas e os aspectos do job. É possível fornecer vários arquivos de importação de metadados no mesmo job de metadados. Salve os arquivos no Cloud Storage.
  • Lógica de comparação: como o Dataplex determina quais entradas e aspectos a serem modificados.

Escopo do trabalho

O escopo do trabalho define o grupo de entradas, os tipos de entrada e, opcionalmente, tipos de aspecto que você quer incluir em um trabalho de metadados. Ao importar metadados, você modifica as entradas e os aspectos que pertencem aos recursos no escopo do job.

Para definir o escopo do trabalho, siga estas diretrizes:

  • Grupo de entrada: especifique um único grupo de entrada para incluir no job. O job modifica apenas as entradas que pertencem a esse grupo. O grupo de entrada e o job precisam estar na mesma região.

  • Tipos de entrada: especifique um ou mais tipos de entrada para incluir no job. O job modifica apenas as entradas que pertencem a esses tipos. O local de um tipo de entrada precisa corresponder ao local do job ou ser global.

  • Tipos de aspecto: opcional. Especifique um ou mais tipos de aspecto a serem incluídos no trabalho. Se você especificar um escopo para tipos de aspecto, o job vai modificar apenas os aspectos que pertencem a esses tipos. O local de um tipo de aspecto precisa corresponder ao local da tarefa ou o tipo de aspecto precisa ser global.

Você especifica o escopo do job ao criar um job de metadados.

Modo de sincronização

O modo de sincronização especifica se é necessário realizar uma atualização completa ou incremental nas entradas e aspectos de um job de metadados.

  • FULL: compatível com entradas. Todas as entradas no escopo do job são modificadas.

    Se houver uma entrada no Dataplex, mas não estiver incluída na metadados, a entrada será excluída quando você executar o trabalho de metadados.

    A sincronização completa não é compatível com aspectos.

  • INCREMENTAL: compatível com aspectos. Um aspecto só é modificado se o arquivo de importação de metadados incluir uma referência ao aspecto no nos campos updateMask e aspectKeys. Para mais informações sobre esses campos no arquivo de importação de metadados, consulte a Seção Estrutura de um item de importação deste documento.

    A sincronização incremental não é compatível com entradas.

Você especifica o modo de sincronização ao criar um job de metadados.

Arquivo de importação de metadados

O arquivo de importação de metadados é uma coleção das entradas e aspectos que você que quiser modificar. Define os valores a serem definidos para todos os campos que pertencem a essas entradas e aspectos. Você prepara o arquivo antes de executar um job de metadados.

Estas diretrizes gerais se aplicam:

  • É possível fornecer vários arquivos de importação de metadados no mesmo job de metadados.
  • As entradas fornecidas no arquivo substituem completamente todas as entradas existentes de recursos que estão no escopo do job. Isso significa que você precisa incluir valores para todas as entradas em um job, não apenas os valores que que você deseja adicionar ou atualizar. Para ver uma lista das entradas atuais do seu projeto para usar como ponto de partida, use o Método de API entries.list.

  • Forneça um arquivo de importação de metadados como parte de um trabalho de metadados. Se você quiser excluir todos os dados das entradas que estão no escopo do job, forneça um arquivo de importação de metadados vazio.

  • Todas as entradas e aspectos incluídos no arquivo precisam pertencer aos grupos, tipos de entrada e tipos de aspecto definidos no escopo do job.

Use as diretrizes detalhadas nas seções a seguir para criar um metadado arquivo de importação.

Estrutura do arquivo

Cada linha no arquivo de importação de metadados contém um objeto JSON que corresponde a um item de importação. Um item de importação é um objeto que descreve os valores a serem modificados para uma entrada e os aspectos anexados a ela.

É possível fornecer vários itens de importação em um único arquivo de importação de metadados. No entanto, não fornecem o mesmo item de importação mais de uma vez em um trabalho de metadados. Use um caractere de nova linha (0x0a) para separar cada item de importação.

Um arquivo de importação de metadados com um caractere de nova linha entre cada item de importação é exibido. como o exemplo a seguir:

{ "entry": { "name": "entry 1", #Information about entry 1 }
{ "entry": { "name": "entry 2", #Information about entry 2 }

Estrutura de um item de importação

Cada item de importação no arquivo de importação de metadados inclui os campos a seguir Consulte ImportItem. O exemplo a seguir é formatado com quebras de linha para facilitar a leitura, mas quando você salvar o arquivo, inclua um caractere de nova linha somente depois de cada importação do item de linha. Não inclua quebras de linha entre os campos de um único item de importação.

{
  "entry": {
    "name": "ENTRY_NAME",
    "entryType": "ENTRY_TYPE",
    "entrySource": {
      "resource": "RESOURCE",
      "system": "SYSTEM",
      "platform": "PLATFORM",
      "displayName": "DISPLAY_NAME",
      "description": "DESCRIPTION",
      "createTime": "ENTRY_CREATE_TIMESTAMP",
      "updateTime": "ENTRY_UPDATE_TIMESTAMP"
    }
    "aspects": {
      "ASPECT": {
        "data": {
          "KEY": "VALUE"
        },
        "aspectSource": {
          "createTime": "ASPECT_CREATE_TIMESTAMP"
          "updateTime": "ASPECT_UPDATE_TIMESTAMP"
        }
      },
      # Additional aspect maps
    },
    "parentEntry": "PARENT_ENTRY",
    "fullyQualifiedName": "FULLY_QUALIFIED_NAME"
  },
  "updateMask": "UPDATE_MASK_FIELDS",
  "aspectKeys": [
    "ASPECT_KEY",
    # Additional aspect keys
  ],
}

Substitua:

  • ENTRY_NAME: o nome do recurso relativo da entrada. no formato projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID/entries/ENTRY_ID.
  • ENTRY_TYPE: o nome do recurso relativo do tipo de entrada usado para criar esta entrada, no formato projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID.
  • entrySource: informações do sistema de origem sobre o recurso de dados que é representada pela entrada:
    • RESOURCE: o nome do recurso na origem. sistema.
    • SYSTEM: o nome do sistema de origem.
    • PLATFORM: a plataforma que contém o sistema de origem.
    • DISPLAY_NAME: um nome de exibição fácil de usar.
    • DESCRIPTION: uma descrição da entrada.
    • ENTRY_CREATE_TIMESTAMP: o momento em que a entrada foi criada no sistema de origem.
    • ENTRY_UPDATE_TIMESTAMP: a hora em que a entrada foi atualizados no sistema de origem.
  • aspects: os aspectos anexados à entrada. O objeto aspect e seus dados são chamados de mapa de aspectos.

    • ASPECT: um aspecto anexado à entrada. Dependendo de como o aspecto é anexado à entrada, use um dos seguintes formatos:

      • Se o aspecto estiver anexado diretamente à entrada, forneça o recurso relativo nome de seu tipo de aspecto, no formato PROJECT_ID_OR_NUMBER.LOCATION_ID.ASPECT_TYPE_ID:
      • Se o aspecto estiver anexado ao caminho da entrada, forneça o valor caminho, no formato PROJECT_ID_OR_NUMBER.LOCATION_ID.ASPECT_TYPE_ID@PATH:
    • KEY e VALUE: o conteúdo do aspecto, de acordo com o modelo de metadados do tipo de aspecto. O conteúdo precisa ser codificado como UTF-8. O tamanho máximo do campo é de 120 KB. O data dicionário é obrigatório, mesmo que esteja vazio.

    • ASPECT_CREATE_TIMESTAMP: a hora em que o aspecto foi criado. no sistema de origem.

    • ASPECT_UPDATE_TIMESTAMP: o momento em que o aspecto foi atualizado no sistema de origem.

    • PARENT_ENTRY: o nome do recurso da entrada pai.

    • FULLY_QUALIFIED_NAME: um nome para a entrada que pode ser referenciadas por um sistema externo. Consulte Nomes totalmente qualificados.

  • UPDATE_MASK_FIELDS: os campos a serem atualizados, em caminhos relativos ao recurso Entry. Separe cada campo com uma vírgula.

    No modo de sincronização de entrada FULL, o Dataplex inclui os caminhos de todos dos campos de uma entrada que pode ser modificada, incluindo aspectos.

    O campo updateMask é ignorado quando uma entrada é criada ou recriada.

  • ASPECT_KEY: os aspectos a serem modificados. Suporta as seguintes sintaxes:

    • ASPECT_TYPE_REFERENCE: corresponde ao tipo de aspecto para aspectos anexados diretamente à entrada.
    • ASPECT_TYPE_REFERENCE@PATH: corresponde ao tipo de aspecto e ao caminho especificado.
    • ASPECT_TYPE_REFERENCE@*: corresponde ao tipo de aspecto. para todos os caminhos.

    Substitua ASPECT_TYPE_REFERENCE por uma referência ao tipo de aspecto, no formato PROJECT_ID_OR_NUMBER.LOCATION_ID.ASPECT_TYPE_ID.

    Se você deixar esse campo em branco, ele será tratado como especificando exatamente os aspectos presentes na entrada especificada.

    No modo de sincronização de entrada FULL, o Dataplex adiciona implicitamente as chaves para todos os aspectos necessários de uma entrada.

Requisitos dos arquivos

O arquivo de importação de metadados tem os seguintes requisitos:

  • O arquivo precisa estar no formato JSON Lines, que é um arquivo JSON delimitado por nova linha. Usar um caractere de nova linha (0x0a) para separar cada item importado.
  • O arquivo precisa usar a codificação de caracteres UTF-8.
  • As extensões de arquivo compatíveis são .jsonl e .json.
  • O tamanho de cada arquivo de importação de metadados precisa ser inferior a 1 GiB. O o tamanho total máximo para todos os dados no job de metadados é 3 GB. Isso inclui todos os arquivos e metadados associados ao job.
  • As entradas e os aspectos especificados no arquivo devem fazer parte do no escopo do job de metadados.
  • O arquivo precisa ser enviado para um bucket do Cloud Storage. Não salve o arquivo em uma pasta chamada CLOUD_STORAGE_URI/deletions/.

Lógica de comparação

O Dataplex determina quais entradas e aspectos modificar comparando os valores e carimbos de data/hora fornecidos no arquivo de importação de metadados com os valores e carimbos de data/hora que existem no projeto.

De modo geral, o Dataplex atualiza os valores no seu projeto quando pelo menos uma mudança proposta no arquivo de importação de metadados vai alterar o estado do projeto quando o job for executado, sem introduzir dados desatualizados. A mudança proposta precisa ser referenciada no campo de máscara de atualização ou no campo de chaves de aspecto no arquivo de importação de metadados.

Para cada entrada que faz parte do escopo do job, o Dataplex faz uma das seguintes ações:

  • Cria uma entrada e aspectos anexados. Se o arquivo de importação de metadados incluir uma entrada que não existe no seu projeto, o Dataplex cria a entrada e os aspectos anexados.
  • Exclui uma entrada e os aspectos anexados. Se houver uma entrada na sua projeto, mas o arquivo de importação de metadados não inclui a entrada, O Dataplex exclui a entrada e os aspectos anexados do projeto.
  • Atualiza uma entrada e os aspectos anexados. Se uma entrada existir nos dois o arquivo de importação de metadados e, no seu projeto, o Dataplex avalia os carimbos de data/hora da origem da entrada e da origem do aspecto que são associados à entrada para determinar quais valores modificar. Em seguida, o Dataplex faz uma ou mais das seguintes ações:

    • Recria a entrada. Se o carimbo de data/hora de criação da origem da entrada no arquivo de importação de metadados for mais recente do que o carimbo de data/hora correspondente no projeto, o Dataplex recria a entrada.
    • Atualiza a entrada. Se o carimbo de data/hora da atualização da origem da entrada no arquivo de importação de metadados for mais recente do que o carimbo de data/hora correspondente no projeto, o Dataplex vai atualizar a entrada no projeto.
    • Cria um aspecto. Se um aspecto não existir no seu projeto e for incluído no objeto de entrada, no campo de máscara de atualização e no campo de chaves de aspecto no arquivo de importação de metadados, o Dataplex vai criar o aspecto.
    • Exclui um aspecto. Se um aspecto existe em seu projeto e está incluído no campo da máscara de atualização e no campo das chaves de aspecto na importação de metadados mas não estiver incluído no objeto de entrada, o Dataplex exclui o aspecto.
    • Atualiza um aspecto. Se um aspecto existir no seu projeto e for incluído no objeto de entrada, no campo de máscara de atualização e no campo de chaves de aspecto no arquivo de importação de metadados, e o carimbo de data/hora de atualização da origem do aspecto no arquivo de importação de metadados for mais recente do que o carimbo de data/hora correspondente no seu projeto, o Dataplex vai atualizar o aspecto.

      Se o carimbo de data/hora da atualização da origem do aspecto não for fornecido no arquivo de importação de metadados, mas a entrada correspondente estiver marcada para atualização, o Dataplex também vai atualizar o aspecto.

      No entanto, se pelo menos um aspecto no arquivo de importação de metadados tiver uma marcação de data e hora mais antiga do que a correspondente no projeto, o Dataplex não fará atualizações para a entrada anexada.

Criar um arquivo de importação de metadados

Antes de importar metadados, crie um arquivo de importação de metadados para o job. Siga estas etapas:

  1. Prepare um arquivo de importação de metadados da seguinte forma: as diretrizes descritas anteriormente neste documento.
  2. Faça upload do arquivo para um bucket do Cloud Storage.

É possível fornecer vários arquivos de importação de metadados no mesmo job de metadados. Para fornecer vários arquivos, salve-os no mesmo bucket do Cloud Storage. Ao executar o job, você especifica um bucket, não um arquivo específico. O Dataplex importa metadados de todos os arquivos salvos em incluindo os que estão em subpastas.

Executar um job de importação de metadados

Depois de criar um arquivo de importação de metadados, execute um job de importação de metadados usando o API.

REST

Para importar metadados, use o método metadataJobs.create.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_NUMBER: o número do projeto do Google Cloud ou ID do projeto.
  • LOCATION_ID: o local do Google Cloud, como us-central1.
  • METADATA_JOB_ID: opcional. O ID do job de metadados.
  • CLOUD_STORAGE_URI: o URI do Bucket ou pasta do Cloud Storage que contém os arquivos de importação de metadados. Para mais informações sobre os requisitos de arquivo, consulte Arquivo de importação de metadados.

  • ENTRY_GROUP: o nome do recurso relativo do grupo de entrada que está no escopo do job, no formato projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID. Forneça apenas um grupo de entrada. Para mais informações, consulte Escopo do job.
  • ENTRY_TYPE: o nome do recurso relativo de um tipo de entrada que é no escopo do trabalho, no formato projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID. Para mais informações, consulte Escopo do job.

  • ASPECT_TYPE: opcional. O nome de recurso relativo de um aspecto tipo que está no escopo da vaga, no formato projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID: Para mais informações, consulte Escopo do job.
  • LOG_LEVEL: o nível de registros a serem capturados, como INFO ou DEBUG. Para mais informações, consulte Acessar registros de jobs e resolver problemas.

Método HTTP e URL:

POST https://dataplex.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

Corpo JSON da solicitação:

{
  "type": IMPORT,
  "import_spec": {
    "source_storage_uri": gs://CLOUD_STORAGE_URI/,
    "scope": {
      "entryGroups": [
        ENTRY_GROUP
      ],
      "entry_types": [
        ENTRY_TYPE
      ],
      "aspect_types": [
        ASPECT_TYPE
      ]
    },
    "entry_sync_mode": FULL,
    "aspect_sync_mode": INCREMENTAL,
    "log_level": LOG_LEVEL
  }
}

Para enviar a solicitação, expanda uma destas opções:

A resposta identifica uma operação de longa duração.

Receber detalhes sobre um job de metadados

Para receber informações sobre um job de metadados, como o status dele e o número de entradas que foram modificadas, siga estas etapas. Para mais informações sobre como resolver problemas de um job com falha, consulte a seção Conferir registros de jobs e resolver problemas deste documento.

REST

Para receber informações sobre um job de metadados, use o método metadataJobs.get.

Receber uma lista de jobs de metadados

Você pode conferir uma lista dos jobs de metadados mais recentes. Os jobs mais antigos que chegaram a um estado terminal são excluídos periodicamente do sistema.

REST

Para conferir uma lista dos jobs de metadados mais recentes, use o método metadataJobs.list.

Cancelar um job de metadados

É possível cancelar um job de metadados que você não quer executar.

REST

Para cancelar um job de metadados, use o método metadataJobs.cancel.

Conferir registros de jobs e resolver problemas

Use o Cloud Logging para conferir os registros de um job de metadados. Para mais informações, consulte Monitorar registros do Dataplex.

Você configura o nível de registro ao criar um job de metadados. Os seguintes níveis de registro estão disponíveis:

  • INFO: fornece registros no nível geral do job. Inclui registros agregados sobre importar itens, mas não especifica qual item de importação tem um erro.
  • DEBUG: fornece registros detalhados para cada item de importação. Use a geração de registros no nível de depuração para resolver problemas com itens de importação específicos. Por exemplo, use geração de registros de nível de depuração para identificar recursos que estão faltando no job; entradas ou aspectos que não estão em conformidade com o tipo de entrada associado ou tipo de aspecto ou outras configurações incorretas com o arquivo de importação de metadados.

Erros de validação

O Dataplex valida os arquivos de importação de metadados em relação ao metadados em seu projeto. Se houver um problema de validação, o status do job poderá retorna um dos seguintes estados:

  • FAILED: acontece quando o arquivo de importação de metadados tem um erro. O Dataplex não importa os metadados, e o job falha. Exemplos de erros no arquivo de importação de metadados incluem:
    • Não é possível analisar um item do arquivo como um item de importação válido
    • Uma entrada ou aspecto no arquivo pertence a um grupo de entradas, um tipo de entrada ou tipo de aspecto que não faz parte do escopo do trabalho.
    • O mesmo nome de entrada é especificado mais de uma vez no job
    • Um tipo de aspecto especificado no mapa de aspecto ou nas chaves de aspecto não usa o formato PROJECT_ID_OR_NUMBER.LOCATION_ID.ASPECT_TYPE_ID@OPTIONAL_PATH
  • SUCCEEDED_WITH_ERRORS: acontece quando o arquivo de importação de metadados pode ser analisado, mas importar um item no arquivo causaria uma entrada que o projeto fique em um estado inconsistente. O Dataplex ignora essas entradas, mas importa o restante dos metadados do arquivo.

Use os registros de jobs para resolver o erro.

A seguir