Este documento fornece um modelo de referência para você criar um conector personalizado que extrai metadados de uma fonte de terceiros. Use o conector ao executar um pipeline de conectividade gerenciada que importe metadados para o Dataplex.
Você pode criar conectores para extrair metadados de fontes externas. Por exemplo, é possível criar um conector para extrair dados de fontes como MySQL, SQL Server, Oracle, Snowflake, Databricks e outras.
Use o exemplo de conector neste documento como ponto de partida para criar seus próprios conectores. O conector de exemplo se conecta a um banco de dados Oracle Express Edition (XE). O conector é criado em Python, mas você também pode usar Java, Scala ou R.
Como funcionam os conectores
Um conector extrai metadados de uma origem de dados de terceiros, transforma os
metadados no formato ImportItem
do Dataplex e gera
arquivos de importação de metadados que podem ser importados pelo Dataplex.
O conector faz parte de um pipeline de conectividade gerenciado. Um gerenciador o pipeline de conectividade é um fluxo de trabalho orquestrado que você usa para importar Metadados do catálogo do Dataplex. O pipeline de conectividade gerenciada executa o conector e realiza outras tarefas no fluxo de trabalho de importação, como executar um job de importação de metadados e capturar registros.
O pipeline de conectividade gerenciada executa o conector usando um Dataproc sem servidor em lote. O Dataproc sem servidor oferece sem servidor do Spark. É possível criar um conector que não use o Spark, recomendamos que use o Spark, porque ele pode melhorar a o desempenho do seu conector.
Requisitos do conector
O conector tem os seguintes requisitos:
- O conector precisa ser uma imagem do Artifact Registry que possa ser executada Dataproc sem servidor
- O conector precisa gerar arquivos de metadados em um formato que possa ser importado
por um job de importação de metadados do Dataplex (o
metadataJobs.create
método da API). Para conferir os requisitos detalhados, consulte Arquivo de importação de metadados. O conector precisa aceitar os seguintes argumentos da linha de comando para receber informações do pipeline:
Argumento de linha de comando Valor que o pipeline fornece target_project_id
PROJECT_ID target_location_id
REGION target_entry_group_id
ENTRY_GROUP_ID output_bucket
CLOUD_STORAGE_BUCKET_ID output_folder
FOLDER_ID O conector usa esses argumentos para gerar metadados em um grupo de entrada de destino
projects/PROJECT_ID/locations/REGION/entryGroups/ENTRY_GROUP_ID
e gravar em um bucket do Cloud Storagegs://CLOUD_STORAGE_BUCKET_ID/FOLDER_ID
. Cada execução do pipeline cria uma nova pasta FOLDER_ID no bucket CLOUD_STORAGE_BUCKET_ID. O conector precisa gravar arquivos de importação de metadados nessa pasta.
Os modelos de pipeline são compatíveis com os conectores PySpark. Os modelos presumem que o driver
(mainPythonFileUri
)
é um arquivo local na imagem do conector chamado main.py
. É possível modificar
modelos de pipeline para outros cenários, como um conector Spark, um modelo
URI do driver ou outras opções.
Veja como usar o PySpark para criar um item de importação na importação de metadados .
"""PySpark schemas for the data."""
entry_source_schema = StructType([
StructField("display_name", StringType()),
StructField("source", StringType())])
aspect_schema = MapType(StringType(),
StructType([
StructField("aspect_type", StringType()),
StructField("data", StructType([
]))
])
)
entry_schema = StructType([
StructField("name", StringType()),
StructField("entry_type", StringType()),
StructField("fully_qualified_name", StringType()),
StructField("parent_entry", StringType()),
StructField("entry_source", entry_source_schema),
StructField("aspects", aspect_schema)
])
import_item_schema = StructType([
StructField("entry", entry_schema),
StructField("aspect_keys", ArrayType(StringType())),
StructField("update_mask", ArrayType(StringType()))
])
Antes de começar
Para acompanhar este guia, é necessário ter familiaridade com Python e PySpark.
Confira as seguintes informações:
- Conceitos de metadados do catálogo do Dataplex
- Documentação sobre jobs de importação de metadados
Faça o seguinte. Criar todos os recursos no mesmo Google Cloud o local.
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataplex, Dataproc, Workflows, and Artifact Registry APIs:
gcloud services enable dataplex.googleapis.com
dataproc.googleapis.com workflows.googleapis.com artifactregistry.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/resourcemanager.projectCreator, roles/billing.projectManager, roles/serviceusage.admin, roles/iam.serviceAccountCreator, roles/iam.securityAdmin, roles/storage.admin, roles/artifactregistry.writer, roles/dataplex.entryGroupOwner, roles/dataplex.entryOwner, roles/dataplex.aspectTypeOwner
gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
-
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant the
roles/owner
IAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service account
-
-
Crie um bucket do Cloud Storage para armazenar os arquivos de importação de metadados.
-
Crie os seguintes recursos do catálogo do Dataplex no mesmo projeto.
Para conferir exemplos de valores, consulte a seção Exemplo de recursos do Dataplex Catalog para uma origem do Oracle deste documento.
- Crie um grupo de entrada.
-
Crie tipos de aspecto personalizados para as entradas que você quer importar. Use a convenção de nomenclatura
SOURCE
-ENTITY_TO_IMPORT
.Opcionalmente, é possível criar tipos de aspecto adicionais para armazenar outras informações.
-
Crie tipos de entrada personalizados para os recursos que você quer importar e atribua os tipos de aspecto relevantes a eles. Use a convenção de nomenclatura
SOURCE
-ENTITY_TO_IMPORT
.Por exemplo, para um banco de dados Oracle, crie um tipo de entrada chamado
oracle-database
: Vincule-o ao tipo de aspecto chamadooracle-database
.
- Verifique se a fonte de terceiros pode ser acessada no seu projeto do Google Cloud. Para mais informações, consulte Dataproc sem servidor para configuração de rede do Spark.
Criar um conector Python básico
O exemplo de conector básico do Python cria entradas de nível superior para uma fonte de dados do Oracle usando as classes da biblioteca de cliente do Dataplex. Em seguida, forneça os valores dos campos de entrada.
O conector cria um arquivo de importação de metadados com as seguintes entradas:
- Uma entrada
instance
, com o tipo de entradaprojects/PROJECT_ID/locations/LOCATION/entryTypes/oracle-instance
. Essa entrada representa um sistema do Oracle Database XE. - Uma entrada
database
, que representa um banco de dados no sistema Oracle Database XE.
Para criar um conector Python básico, faça o seguinte:
Clone o repositório
cloud-dataplex
.Configurar um ambiente local. Recomendamos que você use um ambiente virtual.
mkdir venv python -m venv venv/ source venv/bin/activate
Use o ativa ou manutenção mais recentes do Python. As versões 3.7 e posteriores do Python são compatíveis.
Crie um projeto em Python.
Requisitos de instalação:
pip install -r requirements.txt
Os seguintes requisitos estão instalados:
Adicione um arquivo de pipeline
main.py
na raiz do projeto.Ao implantar seu código no Dataproc sem servidor, o
main.py
serve como ponto de entrada para a execução. Recomendamos que você minimize a quantidade de informações armazenadas no arquivomain.py
. Use esse arquivo para chamar funções e classes definidas no conector, como a classesrc/bootstap.py
.Crie uma pasta
src
para armazenar a maior parte da lógica do conector.Atualize o arquivo
src/cmd_reader.py
com uma classe Python para aceitar a linha de comando . Você pode usar o argeparse para fazer isso.Em ambientes de produção, recomendamos armazenar a senha no Secret Manager.
Atualize o arquivo
src/constants.py
com o código para criar constantes.Atualize o arquivo
src/name_builder.py
com métodos para criar os recursos do Dataplex Catalog que você quer que o conector crie para seus recursos do Oracle. Use as convenções descritas na seção Exemplo de recursos do Dataplex Catalog para uma origem do Oracle deste documento.Como o arquivo
name_builder.py
é usado para o código principal do Python e código principal do PySpark, recomendamos que você escreva os métodos puros em vez de membros de uma classe.Atualize o arquivo
src/top_entry_builder.py
com código para preencher as entradas de nível superior com dados.Atualize o arquivo
src/bootstrap.py
com o código para gerar o arquivo de importação de metadados e executar o conector.Execute o código localmente.
Um arquivo de importação de metadados chamado
output.jsonl
é retornado. O arquivo tem duas linhas, cada uma representando um item de importação. O pipeline de conectividade gerenciada lê esse arquivo ao executar o job de importação de metadados.Opcional: estenda o exemplo anterior para usar as classes da biblioteca de cliente do Dataplex para criar itens de importação de tabelas, esquemas e visualizações. Também é possível executar o exemplo do Python no Dataproc sem servidor.
Recomendamos que você crie um conector que use o Spark (e seja executado no Dataproc Serverless), porque ele pode melhorar a performance do conector.
Criar um conector do PySpark
Este exemplo é baseado na API DataFrame do PySpark É possível instalar o PySpark SQL e executá-lo localmente antes em execução no Dataproc sem servidor. Se você instalar e executar o PySpark localmente, instale a biblioteca PySpark usando o pip, mas não será necessário instalar um cluster local do Spark.
Por motivos de desempenho, este exemplo não usa classes predefinidas do biblioteca PySpark. Em vez disso, o exemplo cria DataFrames, os converte em entradas JSON e grava a saída em um arquivo de importação de metadados no formato JSON Lines que pode ser importado para o Dataplex.
Para criar um conector usando o PySpark, faça o seguinte:
Clone o Repositório
cloud-dataplex
.Instale o PySpark:
pip install pyspark
Requisitos de instalação:
pip install -r requirements.txt
Os seguintes requisitos estão instalados:
Atualize o arquivo
oracle_connector.py
com código para ler dados de um A fonte de dados Oracle e retorna DataFrames.Adicione consultas SQL para retornar os metadados que você quer importar. As consultas precisará retornar as seguintes informações:
- Esquemas de banco de dados
- Tabelas que pertencem a esses esquemas
- as colunas que pertencem a essas tabelas, incluindo o nome e a coluna o tipo de dados e se a coluna é anulável ou obrigatória
Todas as colunas de todas as tabelas e visualizações são armazenadas na mesma tabela do sistema. É possível selecionar colunas com o método
_get_columns
. Dependendo dos parâmetros que você fornecer, selecione colunas para das tabelas ou das visualizações separadamente.Observe o seguinte:
- No Oracle, um esquema de banco de dados pertence a um usuário de banco de dados e tem os mesmos como esse usuário.
- Objetos de esquema são estruturas lógicas criadas pelos usuários. Objetos como tabelas ou índices, podem conter dados, e objetos como visualizações ou sinônimos consistem em apenas uma definição.
- O arquivo
ojdbc11.jar
contém a Driver Oracle JDBC
Atualize o arquivo
src/entry_builder.py
com métodos compartilhados para aplicar transformações do Spark.Observe o seguinte:
- Os métodos criam os recursos do Dataplex Catalog que o conector cria para seus recursos Oracle. Use as convenções descritas nos Exemplo de recursos do catálogo do Dataplex para uma origem do Oracle deste documento.
- O método
convert_to_import_items
se aplica a esquemas, tabelas e visualizações. Verifique se o resultado do conector é um ou mais itens de importação que podem ser processadas pela métodometadataJobs.create
, e não entradas individuais. - Mesmo em uma visualização, a coluna é chamada de
TABLE_NAME
.
Atualize o arquivo
bootstrap.py
com o código para gerar o arquivo de importação de metadados e executar o conector.Este exemplo salva o arquivo de importação de metadados como um único arquivo JSON Lines. Você podem usar ferramentas PySpark, como a classe
DataFrameWriter
, para gerar lotes de JSON em paralelo.O conector pode gravar entradas no arquivo de importação de metadados em qualquer ordem.
Atualize o arquivo
gcs_uploader.py
com o código para fazer upload do arquivo de importação de metadados para um bucket do Cloud Storage.Crie a imagem do conector.
Se o conector tiver vários arquivos ou se você quiser usar bibliotecas que não estão incluídas na imagem padrão do Docker, use um contêiner personalizado. O Dataproc Serverless para Spark executa cargas de trabalho no Docker contêineres. Crie uma imagem personalizada do conector do Docker e armazene a imagem no Artifact Registry. O Dataproc Serverless lê a imagem do Artifact Registry.
Crie um Dockerfile:
Use o Conda como gerenciador de pacotes. Dataproc sem servidor do Spark monta
pyspark
no contêiner durante a execução. Assim, você não precisará instalar dependências do PySpark na sua imagem personalizada de contêiner.Crie a imagem do contêiner personalizado e envie-a para o Artifact Registry.
Como uma imagem pode ter vários nomes, você pode usar a tag Docker para atribuir um alias à imagem.
Executar o conector no Dataproc sem servidor. Para enviar um job em lote do PySpark usando a imagem do contêiner personalizada, execute o comando
gcloud dataproc batches submit pyspark
.gcloud dataproc batches submit pyspark main.py --project=PROJECT \ --region=REGION --batch=BATCH_ID \ --container-image=CUSTOM_CONTAINER_IMAGE \ --service-account=SERVICE_ACCOUNT_NAME \ --jars=PATH_TO_JAR_FILES \ --properties=PYSPARK_PROPERTIES \ -- PIPELINE_ARGUMENTS
Observe o seguinte:
- Os arquivos JAR são drivers do Spark. para realizar leituras em Oracle, MySQL ou
Postgres, é preciso fornecer um pacote específico ao Apache Spark. O pacote
pode estar localizado no Cloud Storage ou dentro do contêiner. Se o
arquivo JAR estiver dentro do contêiner, o caminho será semelhante a
file:///path/to/file/driver.jar
. Neste exemplo, o caminho para o arquivo JAR é/opt/spark/jars/
. - PIPELINE_ARGUMENTS são os argumentos de linha de comando. para o conector.
O conector extrai metadados do banco de dados Oracle, gera um arquivo de importação de metadados e o salva em um bucket do Cloud Storage.
- Os arquivos JAR são drivers do Spark. para realizar leituras em Oracle, MySQL ou
Postgres, é preciso fornecer um pacote específico ao Apache Spark. O pacote
pode estar localizado no Cloud Storage ou dentro do contêiner. Se o
arquivo JAR estiver dentro do contêiner, o caminho será semelhante a
Importar manualmente os metadados no arquivo de importação de metadados para o Dataplex, execute um job de metadados. Use o método
metadataJobs.create
.Na linha de comando, adicione variáveis de ambiente e crie um alias para o comando curl.
PROJECT_ID=PROJECT LOCATION_ID=LOCATION DATAPLEX_API=dataplex.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION_ID alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
Chame o método API, passando os tipos de entrada e de aspecto que você que quiser importar.
gcurl https://${DATAPLEX_API}/metadataJobs?metadata_job_id="JOB_ID" -d "$(cat <<EOF { "type": "IMPORT", "import_spec": { "source_storage_uri": "gs://BUCKET/FOLDER/", "entry_sync_mode": "FULL", "aspect_sync_mode": "INCREMENTAL", "scope": { "entry_groups": ["projects/PROJECT/locations/LOCATION/entryGroups/ENTRY_GROUP_ID"], "entry_types": [ "projects/PROJECT/locations/LOCATION/entryTypes/oracle-instance", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-database", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-schema", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-table", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-view"], "aspect_types": [ "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-instance", "projects/dataplex-types/locations/global/aspectTypes/schema", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-database", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-schema", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-table", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-view"], }, }, } EOF )"
schema
é um tipo de aspecto global definido pelo o Dataplex.O formato usado para nomes de tipo de aspecto ao chamar o método da API é diferente do formato usado no código do conector.
Opcional: use o Cloud Logging para conferir os registros do job de metadados. Para mais informações, consulte Monitorar os registros do Dataplex.
Configurar a orquestração de pipeline
As seções anteriores mostraram como criar um conector de exemplo e executá-lo manualmente.
Em um ambiente de produção, execute o conector como parte de um pipeline de conectividade gerenciado usando uma plataforma de orquestração, como o Workflows.
Para executar um pipeline de conectividade gerenciada com o conector de exemplo, siga as etapas para importar metadados usando o Workflows. Faça o seguinte:
- Crie o fluxo de trabalho no mesmo local do Google Cloud que o conector.
No arquivo de definição do fluxo de trabalho, atualize a função
submit_pyspark_extract_job
com o código abaixo para extrair dados do banco de dados Oracle usando o conector que você criou.- submit_pyspark_extract_job: call: http.post args: url: ${"https://dataproc.googleapis.com/v1/projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/batches"} auth: type: OAuth2 scopes: "https://www.googleapis.com/auth/cloud-platform" headers: Content-Type: "application/json" query: batchId: ${WORKFLOW_ID} body: pysparkBatch: mainPythonFileUri: file:///main.py jars: file:///opt/spark/jars/ojdbc11.jar args: - ${"--host_port=" + args.ORACLE_HOST_PORT} - ${"--user=" + args.ORACLE_USER} - ${"--password=" + args.ORACLE_PASSWORD} - ${"--database=" + args.ORACE_DATABASE} - ${"--project=" + args.TARGET_PROJECT_ID} - ${"--location=" + args.CLOUD_REGION} - ${"--entry_group=" + args.TARGET_ENTRY_GROUP_ID} - ${"--bucket=" + args.CLOUD_STORAGE_BUCKET_ID} - ${"--folder=" + WORKFLOW_ID} runtimeConfig: version: "2.0" containerImage: "us-central1-docker.pkg.dev/PROJECT/REPOSITORY/oracle-pyspark" environmentConfig: executionConfig: serviceAccount: ${args.SERVICE_ACCOUNT} result: RESPONSE_MESSAGE
No arquivo de definição do fluxo de trabalho, atualize a função
submit_import_job
com o código abaixo para importar as entradas. A função chama o método da APImetadataJobs.create
para executar um job de importação de metadados.- submit_import_job: call: http.post args: url: ${"https://dataplex.googleapis.com/v1/projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/metadataJobs?metadata_job_id=" + WORKFLOW_ID} auth: type: OAuth2 scopes: "https://www.googleapis.com/auth/cloud-platform" body: type: IMPORT import_spec: source_storage_uri: ${"gs://" + args.CLOUD_STORAGE_BUCKET_ID + "/" + WORKFLOW_ID + "/"} entry_sync_mode: FULL aspect_sync_mode: INCREMENTAL scope: entry_groups: - ${"projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/entryGroups/"+args.TARGET_ENTRY_GROUP_ID} entry_types: -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-instance" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-database" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-schema" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-table" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-view" aspect_types: -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-instance" -"projects/dataplex-types/locations/global/aspectTypes/schema" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-database" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-schema" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-table" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-view" result: IMPORT_JOB_RESPONSE
Forneça os mesmos tipos de entrada e de aspecto que você incluiu ao o método da API manualmente. Não há uma vírgula no final de cada string.
Ao executar o fluxo de trabalho, forneça os seguintes argumentos do ambiente de execução:
{ "CLOUD_REGION": "us-central1", "ORACLE_USER": "system", "ORACLE_HOST_PORT": "x.x.x.x:1521", "ORACLE_DATABASE": "xe", "ADDITIONAL_CONNECTOR_ARGS": [], }
Opcional: use o Cloud Logging para conferir os registros do pipeline de conectividade gerenciada. A carga útil do registro inclui um link para os registros do job em lote do Dataproc sem servidor e o job de importação de metadados relevantes. Para mais informações, consulte Conferir os registros do fluxo de trabalho.
Opcional: para melhorar a segurança, o desempenho e a funcionalidade do pipeline de conectividade gerenciada, considere fazer o seguinte:
- Use o Secret Manager para armazenar as credenciais da sua fonte de dados de terceiros.
- Usar o PySpark para gravar a saída do JSON Lines na importação de vários metadados arquivos em paralelo.
- Use um prefixo para dividir arquivos grandes (mais de 100 MB) em arquivos menores.
- Adicione mais aspectos personalizados que capturem outros metadados comerciais e técnicos da sua fonte.
Exemplo de recursos do Dataplex Catalog para uma origem do Oracle
O exemplo de conector extrai metadados de um banco de dados Oracle e os mapeia para os recursos correspondentes do Dataplex Catalog.
Considerações sobre hierarquia
Cada sistema no Dataplex tem uma entrada raiz que é a entrada
mãe do sistema. Normalmente, a entrada raiz tem um tipo de entrada instance
.
A tabela a seguir mostra um exemplo de hierarquia de tipos de entrada e de aspecto
para um sistema Oracle.
ID do tipo de entrada | Descrição | ID do tipo de aspecto vinculado |
---|---|---|
oracle-instance |
A raiz do sistema importado. | oracle-instance |
oracle-database |
O banco de dados Oracle. | oracle-database |
oracle-schema |
O esquema do banco de dados. | oracle-schema |
oracle-table |
Uma tabela. |
|
oracle-view |
Uma visualização. |
|
schema
é um tipo de aspecto global definido pelo
o Dataplex. Ele contém uma descrição dos campos em uma tabela,
ou outra entidade com colunas. O tipo de aspecto personalizado oracle-schema
contém o nome do esquema do banco de dados Oracle.
Exemplo de campos de importação de itens
O conector deve usar as seguintes convenções para recursos do Oracle.
-
Nomes totalmente qualificados: nomes totalmente qualificados para Oracle os recursos usam o modelo de nomenclatura a seguir. Caracteres proibidos são escapou com acentos graves.
Recurso Modelo Exemplo Instância SOURCE
:ADDRESS
Use o host e o número da porta ou o nome de domínio do sistema.
oracle:`localhost:1521`
ouoracle:`myinstance.com`
Banco de dados SOURCE
:ADDRESS
,DATABASE
oracle:`localhost:1521`.xe
Esquema SOURCE
:ADDRESS
.DATABASE
.SCHEMA
oracle:`localhost:1521`.xe.sys
Tabela SOURCE
:ADDRESS
.DATABASE
.SCHEMA
.TABLE_NAME
oracle:`localhost:1521`.xe.sys.orders
Ver SOURCE
:ADDRESS
.DATABASE
.SCHEMA
.VIEW_NAME
oracle:`localhost:1521`.xe.sys.orders_view
-
Nomes de entrada ou IDs de entrada: entradas para recursos do Oracle. use o modelo de nomenclatura a seguir. Os caracteres proibidos são substituídos por um permitido. Os recursos usam o prefixo
projects/PROJECT/locations/LOCATION/entryGroups/ENTRY_GROUP/entries
:Recurso Modelo Exemplo Instância PREFIX
/HOST_PORT
projects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521
Banco de dados PREFIX
/HOST_PORT
/databases/DATABASE
projects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe
Esquema PREFIX
/HOST_PORT
/bancos de dados/DATABASE
/schema_de_banco_de_dados/SCHEMA
projects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sys
Tabela PREFIX
/HOST_PORT
/databases/DATABASE
/database_schemas/SCHEMA
/tables/TABLE
projects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sys/tables/orders
Ver PREFIX
/HOST_PORT
/databases/DATABASE
/database_schemas/SCHEMA
/views/VIEW
projects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sys/views/orders_view
-
Entradas mães: se uma entrada não for raiz do sistema, ela pode ter um campo de entrada mãe que descreve a posição dela na hierarquia. O campo deve conter o nome da entrada pai. Qa recomendamos que você gere esse valor.
A tabela a seguir mostra as entradas pai dos recursos do Oracle.
Entrada Entrada pai Instância ""
(string vazia)Banco de dados Nome da instância Esquema Nome do banco de dados Tabela Nome do esquema Ver Nome do esquema Mapa de aspecto: o mapa precisa conter pelo menos um aspecto. que descreve a entidade a ser importada. Confira um exemplo de mapa de aspectos para uma tabela do Oracle.
"example-project.us-central1.oracle-table": { "aspect_type": "example-project.us-central1.oracle-table", "path": "", "data": {} },
Você pode encontrar tipos de aspecto predefinidos (como
schema
) que definem a estrutura de tabela ou visualização no projetodataplex-types
, no localglobal
.-
Chaves de aspecto: as chaves de aspecto usam o formato de nomenclatura PROJECT.LOCATION.ASPECT_TYPE. Confira na tabela a seguir exemplos de chaves de aspecto para recursos do Oracle.
Entrada Exemplo de chave de aspecto Instância example-project.us-central1.oracle-instance
Banco de dados example-project.us-central1.oracle-database
Schema example-project.us-central1.oracle-schema
Tabela example-project.us-central1.oracle-table
Ver example-project.us-central1.oracle-view