Funções de Ingestão
A classe Adp.Ingest é usada para carregar dados de diferentes origens em tabelas e views.
A API Load Data do Autonomous Database para Python permite as seguintes operações:
- Copiar tabelas do Link de Banco de Dados para tabelas ou views do esquema atual
- Copiar objetos do Link de Armazenamento na Nuvem para tabelas ou tabelas externas do esquema atual
- Criar tabela com dados de json
Essas operações criam o Job de Ingestão correspondente
Operações de Link de Banco de Dados
As funções de Link de Banco de Dados fornecem a sintaxe e as descrições das classes, métodos, atributos e parâmetros da interface de programação do aplicativo para o Link de Banco de Dados.
Obter Procedimento do Grupo de Consumidores
Esta função recebe uma lista de grupos de consumidores para executar seu código SQL ou PL/SQL. Os valores correspondem aos serviços de banco de dados disponíveis ao estabelecer conexão com o banco de dados. Esse recurso só estará disponível se você tiver o privilégio EXECUTE no pacote CS_SESSION.
Sintaxe
Ingest.get_consumer_groups()Exemplo
Neste exemplo, você obtém a lista dos grupos de consumidores:
adp.Ingest.get_consumer_groups() //Output:['LOW', 'MEDIUM', 'HIGH']
Obter Procedimento de Links de Banco de Dados
Retorna a lista de links de banco de dados disponíveis (para criar o link de banco de dados, consulte Database LinksDatabase Links no "Oracle® Database Database Administrator's Guide 21c").
Ingest.get_database_links(owner)- proprietário: Este campo exibe o proprietário dos Links de Banco de Dados. Se este campo estiver ausente, a ferramenta usará o proprietário do esquema atual.
Exemplo
adp.Ingest.get_database_links()
//Output
{"nodes":
[
{"label":"***********_*********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM",
"type":"DB_LINK",
"id":"\"ADPTEST\".\"DB_LINK\".\"***********_*********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM\"",
"data":{
"name":"********_*******_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM",
"namespace":"DB_LINK",
"path":"\"DB_LINK\".\"*************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM\"",
"schema":"ADPTEST",
"application":"DATABASE",
"created":"2024-05-02T08:30:15Z",
"updated":"2024-05-02T08:30:15Z"
}
}
],"links":[]}Procedimento Get Tables in the Database Link
Retornar lista de tabelas e views do link de banco de dados.
Ingest.get_db_link_owner_tables(db_link)Parâmetros:
- db_link: Este nome do Link de Banco de Dados.
Exemplo
Neste exemplo, você obtém a lista dos objetos em um Link de Banco de Dados especificado:
adp.Ingest.get_db_link_owner_tables("**************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM")
//Output
[
"APEX_DG_DATASET_ROWS": {
"dbLink": "**************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM",
"owner": "APEX_230200",
"tableName": "APEX_DG_DATASET_ROWS",
"numRows": 3,
"avgRowLen": 54
},...
]Procedimento Copiar Tabela do Link do Banco de Dados
Crie uma tabela a partir das tabelas especificadas no banco de dados atual.
Sintaxe
Ingest.copy_tables_from_db_link(tables, consumer_group)Parâmetros:
- tabelas: Matriz de descrição de tabelas. Cada descrição tem 4 campos.
- proprietário: Este campo exibe o proprietário do Link de Banco de Dados. Se este campo estiver ausente, a ferramenta usará o proprietário do esquema atual.
- table_name: o nome da tabela no Link de Banco de Dados. Esse campo é obrigatório.
- db_link: O nome do Link de Banco de Dados. Esse campo é obrigatório.
- target_table_name: O nome da tabela de destino. Se este campo estiver ausente, a ferramenta usará o nome da tabela de origem.
- consumer_group: o grupo de consumidores. O valor padrão é "BAIXO".
Exemplos de
Neste exemplo, você pode criar uma tabela com base na tabela no Link de Banco de Dados:
adp.Ingest.copy_tables_from_db_link([{'owner':'SH', 'tableName':'PRODUCTS', 'dbLink':'PHOENIX119757_ORDS_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM','targetTableName': 'PRODUCT'}], 'HIGH')
//Output
[
{
'schema': 'SH',
'tableName': 'PRODUCTS',
'targetTableName': 'PRODUCTS',
'name': '***********_***********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM',
'rowsCopied': 766
}
]O método retorna a lista de tabelas que você cria. O dicionário da saída é o mesmo que nos parâmetros de entrada, e o valor adicional é inserido na contagem de linhas.
Tabela de Links do Procedimento de Link do Banco de Dados
Crie uma view das tabelas especificadas no banco de dados atual. Leve em consideração que a string de resultado não tem número de linhas.
Ingest.link_tables_from_db_link(tables, consumer_group)- tabelas: Matriz de descrição de tabelas. Cada descrição tem 4 campos
- proprietário: Este campo exibe o proprietário do Link de Banco de Dados. Se este campo estiver ausente, a ferramenta usará o proprietário do esquema atual.
- table_name: o nome da tabela no Link de Banco de Dados. Esse campo é obrigatório.
- db_link: O nome do Link de Banco de Dados. Esse campo é obrigatório.
- target_table_name: O nome da tabela de destino. Se este campo estiver ausente, a ferramenta usará o nome da tabela de origem.
-
consumer_group: o grupo de consumidores. O valor padrão é "BAIXO".
Exemplo
Neste exemplo, você pode criar uma tabela com base na tabela no Link de Banco de Dados:
adp.Ingest.link_tables_from_db_link([{'owner':'SH', 'tableName':'PROMOTIONS', 'dbLink':'**************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM', 'targetTableName': 'PROMOTIONS'}},'HIGH')
//Output
[
{
'schema': 'SH',
'tableName': 'PROMOTIONS',
'targetTableName': 'PROMOTIONS',
'name': '**************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM'}
]Operações Cloud Storage Link
As funções de Link de Armazenamento em Nuvem fornecem a sintaxe e as descrições das classes, métodos, atributos e parâmetros da interface de programação de aplicativos para a ferramenta de Link de Armazenamento em Nuvem do conjunto de ferramentas do Data Studio.
Esses métodos permitem gerenciar Credenciais e Link de Armazenamento na Nuvem e importar objetos da nuvem para tabelas ou tabelas externas do esquema atual.
Procedimento Obter Lista de Credenciais
Retornar lista de Credenciais disponíveis
Ingest.get_credential_list()A função acima retorna uma lista de Credenciais.
Exemplo
Neste exemplo, você pode obter todas as Credenciais:
adp.Ingest.get_credential_list()
{
"items": [
{
"credential_name": "PROVIDER_DEMO_DELTA_SHARING_111$SHARE_CRED",
"username": "BEARER_TOKEN",
"windows_domain": null,
"comments": "{\"comments\": \"Created via DBMS_CLOUD.create_credential\",\"user_comments\": \"\"}"
},
...
]
}
Criar Procedimento de Credencial
Criar Credencial Simples. Para o Microsoft Azure, o uso da nuvem é um nome de conta, e a senha é uma chave de acesso, para o usuário da Amazon é um ID de chave de acesso e a senha é uma chave de acesso secreta, para o usuário do Google é uma chave de acesso HMAC e a senha é um segredo de acesso HMAC.
Sintaxe
Ingest.create_credential(credential_name, user, password)Parâmetros:
- credential_name: o nome de uma nova credencial
- usuário e senha dependem do sistema de nuvem: para o usuário do Microsoft Azure na nuvem, senha é uma chave de acesso, para o usuário da Amazon é um ID de chave de acesso, e a senha é uma chave de acesso secreto, para o usuário do Google é uma chave de acesso HMAC e a senha é um segredo de acesso HMAC.
Exemplo
Neste exemplo, você pode criar uma Credencial com o usuário e a senha especificados:
adp.Ingest.create_credential('TEST", 'ADMIN', 'PASSWORD')Criar Procedimento de Credencial do OCID
Crie credenciais usando Chaves de Assinatura do OCI.
Sintaxe
Ingest.create_ocid_credential(credential_name, user_ocid, tenancy_ocid,
private_key, fingerprint)Esta função cria credenciais usando Chaves de Assinatura do OCI.
Parâmetros:
- credential_name: O nome da credencial.
- user_ocid: O OCID do usuário.
- tenancy_ocid: O OCID da tenancy.
- private_key: a chave privada no par de chaves RSA. A chave privada se estende por várias linhas. Certifique-se de substituir todos os caracteres de nova linha pelo caractere de espaço e usar a chave resultante.
- impressão digital: A impressão digital do par de chaves RSA que você está usando para acessar o OCI.
Exemplo
adp.Ingest.create_ocid_credential('OCI_NATIVE_CRED', 'ocid1.user.oc1..aaaaaaaatfn77fe3fxux3o5lego7glqjejrzjsqsrs64f4jsjrhbsk5qzndq','ocid1.user.oc1..aaaaaaaatfn77fe3fxux3o5lego7glqjejrzjsqsrs64f4jsjrhbsk5qzndq', 'MIIEogIBAAKCAQEAsbNPOYEkxM5h0DF+qXmie6ddo95BhlSMSIxRRSO1JEMPeSta0C7WEg7g8SOSzhIroCkgOqDzkcyXnk4BlOdn5Wm/BYpdAtTXk0sln2DH...', '4f:0c:d6:b7:f2:43:3c:08:df:62:e3:b2:27:2e:3c:7a')
Procedimento Eliminar Credencial
Elimine a credencial com o nome especificado.
Ingest.drop_credential(credential_name)Parâmetros:
- credential_name: O nome da credencial.
Exemplo
Neste exemplo, você pode eliminar a Credencial com o nome 'TEST':
adp.Ingest.drop_credential('TEST')
Obter Procedimento de Lista de Links de Armazenamento na Nuvem
Sintaxe
Ingest.get_cloud_storage_link_list(owner)Parâmetros:
- proprietário: Este campo exibe o proprietário do Link de Banco de Dados. Se este campo estiver ausente, a ferramenta usará o proprietário do esquema atual.
Exemplo
Neste exemplo, você pode ver a lista de Links de Armazenamento na Nuvem:
Ingest.get_cloud_storage_link_list()
// Output
{
"nodes": [
{
"label": "AA",
"type": "CLOUD_STORAGE_LINK",
"id": "\"ADMIN\".\"STORAGE_LINK\".\"AA\"",
"data": {
"name": "AA",
"entityID": 28897,
"namespace": "STORAGE_LINK",
"path": "\"STORAGE_LINK\".\"AA\"",
"schema": "ADMIN",
"application": "CLOUD",
"created": "2023-01-30T21:42:17Z",
"updated": "2023-01-30T21:42:17Z",
"catalog": "LOCAL"
}
},
...
]
}
Criar Procedimento de Link de Armazenamento na Nuvem
Criar Procedimento de Link de Armazenamento na Nuvem com base no URI e nas credenciais do Cloud Storage. A credencial poderá ser ignorada se o link de armazenamento for um bucket público.
Sintaxe
Ingest.create_cloud_storage_link(storage_link_name, uri, credential_name,
description)Parâmetros:
- storage_link_name: O nome do link de armazenamento na nuvem. Esse campo é obrigatório.
- URI: O Caminho do URL (URI), exceto o nome do arquivo. Esse campo é obrigatório.
- credential_name: O nome da credencial deve estar em conformidade com as convenções de nomenclatura de objetos da Oracle.
- descrição: uma descrição para o link. Se a descrição estiver ausente, a ferramenta usará storage_link_name .
Exemplo
Neste exemplo, você pode criar o Link de Armazenamento na Nuvem com o nome 'TESTE'
Ingest.create_cloud_storage_link('TEST', 'https://.../test-bucket/o/', None, 'OCI Storage Link')
Eliminar Procedimento do Link de Armazenamento na Nuvem
Eliminar Link de Armazenamento na Nuvem com base no nome do link de armazenamento.
Ingest.drop_cloud_storage_link(storage_link_name)Parâmetros:
- storage_link_name: O nome do link de armazenamento na nuvem.
Exemplo
Neste exemplo, você pode eliminar o Link de Armazenamento na Nuvem com o nome 'TESTE'
Ingest.drop_cloud_storage_link('TEST')Obter Procedimento de Objetos de Armazenamento na Nuvem
Obtenha a lista de objetos no Link de Armazenamento na Nuvem.
Sintaxe
Ingest.get_cloud_objects(storage_link,owner)Esta função retorna a lista de objetos no link de armazenamento na nuvem.
Parâmetros:
- storage_link: O nome do link de armazenamento na nuvem.
- proprietário: Este campo exibe o proprietário do Link de Banco de Dados. Se este campo estiver ausente, a ferramenta usará o proprietário do esquema atual.
Exemplo
Neste exemplo, você pode listar objetos no Link de Armazenamento na Nuvem com o nome 'TEST'
Ingest.get_cloud_objects('TEST')
// Output
{
"nodes": [
{
"label": "users/1623813236395.parquet",
"type": "CLOUD_OBJECT",
"id": "\"ADMIN\".\"STORAGE_LINK\".\"TEST\".\"OBJECT\".\"users/1623813236395.parquet\"",
"data": {
"name": "users/1623813236395.parquet",
"namespace": "OBJECT",
"path": "\"STORAGE_LINK\".\"TEST\".\"OBJECT\".\"users/1623813236395.parquet\"",
"schema": "ADMIN",
"annotation": {
"bytes": 1835742,
"checksum": "8c215516638037427850b03f0e111850",
"isFolder": false,
"fileName": "1623813236395.parquet",
"uri": "https://.../test-bucket/o/users/1623813236395.parquet"
},
"application": "CLOUD",
"created": "2022-08-02T14:21:26Z",
"updated": "2022-08-02T14:21:26Z",
"catalog": "LOCAL"
}
},...
]
}Isso retorna a lista de grupos de consumidores disponíveis.
Copiar Procedimento do Cloud Objects
Copiar objetos da nuvem do Link de Armazenamento na Nuvem para as tabelas no esquema atual
Ingest.copy_cloud_objects(objects, consumer_group)Parâmetros:
- objects: Matriz de descrição de tabelas. Cada descrição tem 4 campos.
- storageLink: O nome do Link de Armazenamento na Nuvem. Esse campo é obrigatório.
- objectName: o nome do arquivo no Link de Armazenamento na Nuvem. Consulte o campo name nos resultados do método get_cloud_object. Esse campo é obrigatório.
- targetTableName: O nome da tabela de destino. Se este campo estiver ausente, a ferramenta usará o nome do arquivo como o nome da tabela.
-
consumer_group: o grupo de consumidores. O valor padrão é "BAIXO".
Exemplo
Neste exemplo, você pode criar uma tabela e carregar dados do objeto no Link de Armazenamento na Nuvem.
adp.Ingest.copy_cloud_objects([{'storageLink': 'TEST', 'objectName': 'users/testData.csv','targetTableName': 'TESTDATA'}, 'HIGH')
output:
[
{
"storageLink": "TEST",
"targetTableName": "TESTDATA",
"objectName": "users/testData.csv",
"rowsCopied": 588
}
]
Procedimento Link Cloud Objects
Crie tabelas externas com base em objetos da nuvem no Link de Armazenamento na Nuvem.
Ingest.link_cloud_objects(objects, consumer_group)Parâmetros:
- objects: Matriz de descrição de tabelas. Cada descrição tem 4 campos.
- storageLink: O nome do Link de Armazenamento na Nuvem. Esse campo é obrigatório.
- objectName: o nome do arquivo no Link de Armazenamento na Nuvem. Consulte o campo name nos resultados do método get_cloud_object. Esse campo é obrigatório.
- targetTableName: O nome da tabela de destino. Se este campo estiver ausente, a ferramenta usará o nome do arquivo como o nome da tabela.
-
consumer_group: o grupo de consumidores. O valor padrão é "BAIXO".
Exemplo
adp.Ingest.link_cloud_objects([{'storageLink': 'TEST', 'objectName': 'users/testData.csv','targetTableName': 'TESTDATA'}, 'HIGH')
output:
[
{
"storageLink": "TEST",
"targetTableName": "TESTDATA",
"objectName": "users/testData.csv",
"rowsCopied": 588
}
]Criar Tabela do Procedimento de Dados json
Ingest.load_data(tables)Parâmetros:
- tables é a lista de dicionários com os seguintes campos:
- content: é o conteúdo dos dados, é um dicionário com chave como nome da coluna e valores como uma lista de valores da coluna.
- targetTableName: o nome da tabela.
Exemplo
content = {
"Year_id":[11,12,13,14,15],
"Year_name": ["CY2011","CY2012","CY2013","CY2014","CY2015"],
"Year_end_date": ["31-DEC-11","31-DEC-12","31-DEC-13","31-DEC-14","31-DEC-15"],
"Quarter_id":[211,212,213,214,215],
"Quarter_name":["Q2CY2011","Q2CY2012","Q2CY2013","Q2CY2014","Q2CY2015"],
"Quarter_end_date":["30-JUN-11","30-JUN-12","30-JUN-13","30-JUN-14","30-JUN-15"]
}
content_list=[{"content": content, "targetTableName": "TestLoad"}]
adp.Ingest.load_data(content_list)
//Output
[{'fileName': 'TESTLOAD', 'targetTableName': 'TESTLOAD', 'rowsCopied': 6}]