Importar metadados usando um pipeline personalizado

Este documento descreve como importar metadados do Dataplex Catalog de um sistema de terceiros para o Dataplex usando os métodos da API de importação de metadados e seu próprio pipeline. Os metadados do Dataplex Catalog são compostos de entradas e aspectos.

Se você quiser usar um pipeline de orquestração gerenciado pelo Google Cloudpara extrair e importar metadados, sugerimos usar um pipeline de conectividade gerenciado. Com um pipeline de conectividade gerenciado, você traz seu próprio conector que extrai metadados e gera saída em um formato que pode ser usado como entrada pelos métodos da API de importação de metadados (o arquivo de importação de metadados). Em seguida, 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 trabalho.

    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. Execute um job de importação de metadados.

As etapas desta página pressupõem que você conheça os conceitos do Dataplex Catalog, incluindo grupos de entrada, tipos de entrada e tipos de aspecto. Para mais informações, consulte Visão geral do Dataplex Catalog.

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.

Crie 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 job: o grupo de entrada, os tipos de entrada e os tipos de aspecto a serem incluídos no 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. Você salva os arquivos no Cloud Storage.
  • Lógica de comparação: como o Dataplex determina quais entradas e aspectos modificar.

Escopo do trabalho

O escopo do job define o grupo de entrada, os tipos de entrada e, opcionalmente, os tipos de aspecto que você quer incluir em um job de metadados. Ao importar metadados, você modifica as entradas e os aspectos que pertencem a 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 a vaga 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 para incluir no job. 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 do trabalho 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 uma atualização completa ou incremental será realizada nas entradas e aspectos de um job de metadados.

  • FULL: oferece suporte a entradas. Todas as entradas no escopo do job são modificadas.

    Se uma entrada existir no Dataplex, mas não for incluída no arquivo de importação de metadados, ela será excluída quando você executar o job de metadados.

    Não há suporte para a sincronização completa de aspectos.

  • INCREMENTAL: compatível com aspectos. Um aspecto só é modificado se o arquivo de importação de metadados inclui uma referência ao aspecto 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ê quer modificar. Ele 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 você quer adicionar ou atualizar. Para conferir uma lista das entradas atuais no seu projeto e usá-la como ponto de partida, use o método da API entries.list.

  • Você precisa fornecer um arquivo de importação de metadados como parte de um job 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 arquivo de importação de metadados.

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 forneça o mesmo item de importação mais de uma vez em um job 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 tem a seguinte aparência:

{ "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 seguintes campos (consulte ImportItem). O exemplo a seguir é formatado com quebras de linha para facilitar a leitura, mas, ao salvar o arquivo, inclua um caractere de nova linha somente após cada item de importação. 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: informações sobre uma entrada e os aspectos anexados a ela:

    • 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 essa 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 é representado pela entrada:
      • RESOURCE: o nome do recurso no sistema de origem.
      • 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: o momento em que a entrada foi atualizada no sistema de origem.
    • aspects: os aspectos que são anexados à entrada. O objeto aspect e os dados dele 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 nome do recurso relativo do 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 caminho do tipo de aspecto 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 dicionário data é obrigatório, mesmo que esteja vazio.

      • ASPECT_CREATE_TIMESTAMP: o momento 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 referenciada 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 os campos de uma entrada que podem ser modificados, 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 formatado como um arquivo Linhas JSON, que é um arquivo JSON delimitado por nova linha. Use um caractere de nova linha (0x0a) para separar cada item de importação.
  • 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 menor que 1 GiB. O tamanho total máximo de todos os dados no job de metadados é de 3 GB. Isso inclui todos os arquivos e metadados associados ao job.
  • As entradas e os aspectos especificados no arquivo precisam fazer parte do 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 do 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 projeto, o Dataplex vai criar a entrada e os aspectos anexados.
  • Exclui uma entrada e os aspectos anexados. Se uma entrada existir no seu projeto, mas o arquivo de importação de metadados não incluir a entrada, o Dataplex vai excluir a entrada e os aspectos anexados do seu projeto.
  • Atualiza uma entrada e os aspectos anexados. Se uma entrada existir no arquivo de importação de metadados e no projeto, o Dataplex vai avaliar os carimbos de data/hora da origem da entrada e da origem do aspecto que estã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 existir no seu projeto e for incluído no campo de máscara de atualização e no campo de chaves de aspecto no arquivo de importação de metadados, mas não for incluído no objeto de entrada, o Dataplex vai excluir 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 um carimbo de data/hora mais antigo do que o correspondente no seu 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 seguindo as diretrizes descritas anteriormente neste documento.
  2. Faça upload do arquivo em 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 no bucket, incluindo aqueles 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 a 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 ou ID do projeto do Google Cloud .
  • LOCATION_ID: o local Google Cloud , como us-central1.
  • METADATA_JOB_ID: opcional. O ID do job de metadados.
  • CLOUD_STORAGE_URI: o URI do bucket ou da 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 está no escopo do job, 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 do recurso relativo de um tipo de aspecto que está no escopo do job, 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 os 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 itens de importação, 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 o registro no nível de depuração para identificar recursos que estão faltando no escopo do job, entradas ou aspectos que não estão em conformidade com o tipo de entrada ou de aspecto associado 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 aos metadados atual do projeto. Se houver um problema de validação, o status do job poderá retornar um dos seguintes estados:

  • FAILED: ocorre quando o arquivo de importação de metadados tem um erro. O Dataplex não importa metadados e o job falha. Exemplos de erros no arquivo de importação de metadados incluem:
    • Um item no arquivo não pode ser analisado como um item de importação válido
    • Uma entrada ou um aspecto no arquivo pertence a um grupo de entrada, tipo de entrada ou tipo de aspecto que não faz parte do escopo do job
    • O mesmo nome de entrada é especificado mais de uma vez no job
    • Um tipo de aspecto especificado no mapa de aspectos 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 a importação de um item no arquivo causaria um estado inconsistente em uma entrada do projeto. O Dataplex ignora essas entradas, mas importa o restante dos metadados do arquivo.

Use os registros de jobs para resolver o erro.

A seguir