O Knowledge Catalog (antigo Dataplex Universal Catalog) permite importar em massa glossários, categorias, termos e links de entrada usando a API Dataplex. Use esse processo para migrar metadados de outras ferramentas de catalogação ou realizar atualizações em massa nos glossários atuais.
Antes de começar
Antes de iniciar o processo de importação, conclua os seguintes pré-requisitos:
Criar um bucket do Cloud Storage
Crie um bucket do Cloud Storage para servir como uma área de preparo em que você faz upload de arquivos JSON para importação.
Funções exigidas
Para receber as permissões necessárias para importar glossários e links de entrada usando arquivos JSON, peça ao administrador para conceder a você os seguintes papéis do IAM:
- Editor de metadados do Dataplex (
roles/dataplex.metadataEditor) no projeto - Leitor de objetos do Storage (
roles/storage.objectViewer) no bucket que contém os arquivos de importação
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 usando papéis personalizados ou outros papéis predefinidos.
Ativar APIs
Para importar glossários e links de entrada, ative a API Dataplex no seu projeto.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você
criou o projeto, provavelmente já tem essa permissão pelo
papel de proprietário (roles/owner). Caso contrário, é possível conseguir essa permissão pelo
papel de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin).
Saiba como conceder papéis.
Termos do glossário x entradas físicas
A estrutura do seu catálogo é baseada nos seguintes componentes:
- Termos do glossário: conceitos de negócios, como receita anual, que são organizados em glossários e categorias.
- Entradas: recursos de dados físicos, como uma tabela ou coluna do BigQuery.
Os jobs de importação de glossário criam novas categorias e termos de glossário e substituem os atuais. Os jobs de importação de link de entrada criam links entre termos do glossário (por exemplo, sinônimos ou termos relacionados) ou entre termos do glossário e entradas físicas (por exemplo, entre um termo e um recurso de dados físico). Consulte a página Gerenciar um glossário empresarial para mais informações sobre como estruturar seu catálogo.
Comportamento da importação em massa
As importações de glossário empresarial e de link de entrada são processos separados e têm cotas padrão diferentes. Consulte a página Cotas e limites para mais informações.
Os jobs de importação em massa de glossário usam "entry_sync_mode": "FULL" e operam no modo de substituição total. Quando você executa um job de importação para um glossário,
o Knowledge Catalog exclui todas as categorias e termos e os recria
com base nos arquivos JSON enviados. A recriação de termos do glossário atribui novos IDs exclusivos a eles e exclui todos os links de entrada atuais anexados a esses termos, como links para colunas do BigQuery. Para restaurar essas relações, é necessário
reimportar os links de entrada após a conclusão do job de importação do glossário. As importações de links de entrada criam apenas novos links de entrada, sem substituir ou excluir os atuais.
Importar glossários usando arquivos JSON
Para importar glossários, categorias e termos fazendo upload de arquivos JSON para o Cloud Storage, conclua as tarefas a seguir.
Criar um glossário de destino
Crie um glossário de destino para importar metadados.
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"' gcurl -X POST https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/glossaries?glossary_id=GLOSSARY_ID -d "$(cat<<EOF { "displayName": "DISPLAY_NAME", "description": "DESCRIPTION" } EOF )"
Substitua:
PROJECT_ID: o ID do projeto em que você está criando o glossário.LOCATION_ID: o local em que você quer criar o glossário.GLOSSARY_ID: o ID do glossárioDISPLAY_NAME: o nome de exibição do glossárioDESCRIPTION: a descrição do glossário
Preparar arquivos JSON
Crie um arquivo JSON delimitado por novas linhas com glossário, categorias e termos que você quer enviar para o bucket do Cloud Storage.
Use o seguinte esquema JSON para estruturar os arquivos de importação:
{"entry":{"name":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID/categories/CATEGORY_ID","entryType":"projects/dataplex-types/locations/global/entryTypes/glossary-category","aspects":{"dataplex-types.global.glossary-category-aspect":{"data":{}},"dataplex-types.global.overview":{"data":{"content":"CONTENT"}},"dataplex-types.global.contacts":{"data":{"identities":[{role: "steward", name: "CONTACT_DISPLAY_NAME", id: "CONTACT_EMAIL"}]}}},"parentEntry":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID","entrySource":{"resource":"projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID/categories/CATEGORY_ID","displayName":"CATEGORY_NAME","description":"CATEGORY_DESCRIPTION","ancestors":[{"name":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID","type":"projects/dataplex-types/locations/global/entryTypes/glossary"}]}}} {"entry":{"name":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID/terms/TERM1_ID","entryType":"projects/dataplex-types/locations/global/entryTypes/glossary-term","aspects":{"dataplex-types.global.glossary-term-aspect":{"data":{}},"dataplex-types.global.overview":{"data":{"content":"TERM1_CONTENT"}},"dataplex-types.global.contacts":{"data":{"identities":[{role: "steward", name: "CONTACT_DISPLAY_NAME", id: "CONTACT_EMAIL"}]}}},"parentEntry":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID","entrySource":{"resource":"projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID/terms/TERM1_ID","displayName":"TERM1_DISPLAY_NAME","description":"TERM1_DESCRIPTION","ancestors":[{"name":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID","type":"projects/dataplex-types/locations/global/entryTypes/glossary"},{"name":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID/categories/CATEGORY_ID","type":"projects/dataplex-types/locations/global/entryTypes/glossary-category"}]}}} {"entry":{"name":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID/terms/TERM2_ID","entryType":"projects/dataplex-types/locations/global/entryTypes/glossary-term","aspects":{"dataplex-types.global.glossary-term-aspect":{"data":{}},"dataplex-types.global.overview":{"data":{"content":"TERM1_CONTENT"}},"dataplex-types.global.contacts":{"data":{"identities":[{role: "steward", name: "CONTACT_DISPLAY_NAME", id: "CONTACT_EMAIL"}]}}},"parentEntry":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID","entrySource":{"resource":"projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID/terms/TERM2_ID","displayName":"TERM2_DISPLAY_NAME","description":"TERM2_DESCRIPTION","ancestors":[{"name":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID","type":"projects/dataplex-types/locations/global/entryTypes/glossary"},{"name":"projects/PROJECT_NUMBER/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/LOCATION_ID/glossaries/GLOSSARY_ID/categories/CATEGORY_ID","type":"projects/dataplex-types/locations/global/entryTypes/glossary-category"}]}}}
Importar glossário, categorias e termos
Importe o glossário, as categorias e os termos para o bucket do Cloud Storage:
# Set GCURL alias alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"' gcurl https://DATAPLEX_API/metadataJobs?metadata_job_id=JOB_ID -d "$(cat<<EOF { "type":"IMPORT", "import_spec":{ "log_level":"DEBUG", "source_storage_uri":"gs://STORAGE_BUCKET/", "entry_sync_mode":"FULL", "aspect_sync_mode":"INCREMENTAL", "scope":{ "glossaries": "GLOSSARY_NAME" } } } EOF )"
Substitua DATAPLEX_API pelo endpoint da API Dataplex
no formato
dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID.
Importar links de entrada usando arquivos JSON
Para importar em massa links de entrada fazendo upload de arquivos JSON para o Cloud Storage, conclua as tarefas a seguir.
Preparar arquivos JSON
Crie um arquivo JSON delimitado por novas linhas com os links de entrada que você quer fazer upload para o bucket do Cloud Storage.
Use o seguinte esquema JSON para estruturar os arquivos de importação:
Exemplo de formato para links entre termos
{"entryLink":{"name":"projects/PROJECT_NUMBER/locations/global/entryGroups/@dataplex/entryLinks/el-import-0606e3f2-8206-4f3a-aba9-32c6196f6048","entryLinkType":"projects/dataplex-types/locations/global/entryLinkTypes/synonym","entryReferences":[{"name":"projects/PROJECT_NUMBER/locations/global/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/global/glossaries/import-glossary/terms/term-1"},{"name":"projects/PROJECT_NUMBER/locations/global/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/global/glossaries/import-glossary/terms/term-2"}]}} {"entryLink":{"name":"projects/PROJECT_NUMBER/locations/global/entryGroups/@dataplex/entryLinks/el-import-2f7408e3-af3d-405d-81bb-861cf9ec5146","entryLinkType":"projects/dataplex-types/locations/global/entryLinkTypes/related","entryReferences":[{"name":"projects/PROJECT_NUMBER/locations/global/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/global/glossaries/import-glossary/terms/term-1"},{"name":"projects/PROJECT_NUMBER/locations/global/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/global/glossaries/import-glossary/terms/term-2"}]}}
Exemplo de formato para links entre termos e recursos de dados
{"entryLink":{"name":"projects/PROJECT_NUMBER/locations/global/entryGroups/@dataplex/entryLinks/el-import-0606e3f2-8206-4f3a-aba9-32c6196f6048","entryLinkType":"projects/dataplex-types/locations/global/entryLinkTypes/definition","entryReferences":[{"name":"projects/PROJECT_NUMBER/locations/global/entryGroups/@dataplex/entries/projects/PROJECT_NUMBER/locations/global/glossaries/import-glossary/terms/term-1"},{"name":"projects/PROJECT_NUMBER/locations/us-central1/entryGroups/entry-group-1/entries/entry-1"}]}}
Importar links entre termos como sinônimos ou termos relacionados
Para iniciar um job de importação de metadados que estabelece conexões synonym ou related
entre os termos do catálogo, use o seguinte comando:
gcurl https://DATAPLEX_API/metadataJobs?metadata_job_id=JOB_ID -d "$(cat<<EOF { "type":"IMPORT", "import_spec":{ "log_level":"DEBUG", "source_storage_uri":"gs://STORAGE_BUCKET/", "entry_sync_mode":"FULL", "aspect_sync_mode":"INCREMENTAL", "scope":{ "entry_groups":[ "projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/@dataplex" ], "entry_link_types":[ "projects/dataplex-types/locations/global/entryLinkTypes/synonym", "projects/dataplex-types/locations/global/entryLinkTypes/related" ], "referenced_entry_scopes":[ "PROJECT_IDS" ] } } } EOF )"
Substitua
DATAPLEX_API por
dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID.
Importar links entre termos e recursos ou colunas de dados específicos
Para criar um link entre os termos do glossário e os recursos de dados, execute o job de importação para cada grupo de entrada ao qual a entrada do recurso de dados pertence. Todos os links de entrada de definição são criados nesse grupo de entrada.
gcurl https://DATAPLEX_API/metadataJobs?metadata_job_id=JOB_ID -d "$(cat<<EOF { "type":"IMPORT", "import_spec":{ "log_level":"DEBUG", "source_storage_uri":"gs://STORAGE_BUCKET/", "entry_sync_mode":"FULL", "aspect_sync_mode":"INCREMENTAL", "scope":{ "entry_groups":[ "projects/PROJECT_ID/locations/ENTRY_GROUP_LOCATION_ID/entryGroups/@dataplex" ], "entry_link_types":[ "projects/dataplex-types/locations/global/entryLinkTypes/definition" ], "referenced_entry_scopes":[ "PROJECT_IDS" ] } } } EOF )"
Substitua
DATAPLEX_API por
dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID.
Monitorar o status do job de importação
Para ver o status da operação
import, execute o seguinte comando:gcurl https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/operations/operation-OPERATION_IDSubstitua
OPERATION_IDpelo ID da operação.Para conferir o status do job de metadados, execute o seguinte comando:
gcurl -X GET https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataJobs/JOB_ID
A seguir
- Saiba como gerenciar glossários empresariais no Knowledge Catalog.
- Saiba como importar glossários de uma planilha do Google.
- Saiba mais sobre o gerenciamento de metadados.