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)
Parâmetros:
  • 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

Neste exemplo, você obtém a lista dos Links de Banco de Dados:
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)
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".

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

Neste exemplo, você pode criar uma tabela externa com base no objeto especificado no Link do Cloud Storage.
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

Neste exemplo, você pode criar uma tabela e preenchê-la com dados do conteúdo:
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}]