Funzioni di inclusione

La classe Adp.Ingest viene utilizzata per caricare dati da origini diverse in tabelle e viste.

L'API Autonomous Database Load Data per Python consente le operazioni riportate di seguito.

  • Copiare le tabelle dal database link a tabelle o viste dello schema corrente
  • Copiare gli oggetti dal collegamento Storage cloud alle tabelle o alle tabelle esterne dello schema corrente
  • Crea tabella con dati da json

Queste operazioni creano il job di inclusione corrispondente

Operazioni Database Link

Le funzioni Database Link forniscono la sintassi e le descrizioni delle classi, dei metodi, degli attributi e dei parametri dell'interfaccia di programmazione dell'applicazione al Database Link.

Recupera procedura gruppo di consumer

Questa funzione riceve una lista di gruppi di consumer per eseguire il codice SQL o PL/SQL. I valori corrispondono ai servizi di database disponibili durante la connessione al database. Questa funzione è disponibile solo se si dispone del privilegio EXECUTE sul pacchetto CS_SESSION.

Sintassi

Ingest.get_consumer_groups()

Esempio

In questo esempio viene visualizzato l'elenco dei gruppi di consumer:

adp.Ingest.get_consumer_groups() //Output:['LOW', 'MEDIUM', 'HIGH']

Procedura Recupera collegamenti database

Restituisce l'elenco dei database link disponibili (per creare il database link, vedere Database LinksDatabase Links in "Oracle® Database Database Administrator's Guide 21c").

Ingest.get_database_links(owner)
Parametri:
  • Proprietario: questo campo visualizza il proprietario dei database link. Se manca questo campo, lo strumento utilizza il proprietario dello schema corrente.

Esempio

In questo esempio viene visualizzata la lista dei database link:
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":[]}

Procedura di recupero delle tabelle nel database link

Restituisce la lista di tabelle e viste dal database link.

Ingest.get_db_link_owner_tables(db_link)

Parametri:

  • db_link: questo nome del database link.

Esempio

In questo esempio viene visualizzata la lista degli oggetti in un database link specificato:

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
  },...
]

Copia tabella dalla procedura Database Link

Creare una tabella dalle tabelle specificate nel database corrente.

Sintassi

Ingest.copy_tables_from_db_link(tables, consumer_group)

Parametri:

  • tabelle: array di descrizioni delle tabelle. Ogni descrizione ha 4 campi.
  • Proprietario: questo campo visualizza il proprietario del database link. Se manca questo campo, lo strumento utilizza il proprietario dello schema corrente.
  • table_name: il nome della tabella nel database link. Questo campo è obbligatorio.
  • db_link: il nome del database link. Questo campo è obbligatorio.
  • target_table_name: il nome della tabella di destinazione. Se manca questo campo, lo strumento utilizza il nome della tabella di origine.
  • consumer_group: il gruppo di consumer. Il valore predefinito è "LOW".

Esempi

In questo esempio, è possibile creare una tabella basata sulla tabella nel database link:

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
    }
]

Il metodo restituisce l'elenco delle tabelle create. Il dizionario dell'output è uguale a quello dei parametri di input e viene inserito il conteggio delle righe.

Tabella collegamenti da procedura Database Link

Creare una vista dalle tabelle specificate nel database corrente. Tenere presente che la stringa dei risultati non contiene un numero di righe.

Ingest.link_tables_from_db_link(tables, consumer_group)
Parametri:
  • tabelle: array di descrizioni delle tabelle. Ogni descrizione ha 4 campi
    • Proprietario: questo campo visualizza il proprietario del database link. Se manca questo campo, lo strumento utilizza il proprietario dello schema corrente.
    • table_name: il nome della tabella nel database link. Questo campo è obbligatorio.
    • db_link: il nome del database link. Questo campo è obbligatorio.
    • target_table_name: il nome della tabella di destinazione. Se manca questo campo, lo strumento utilizza il nome della tabella di origine.
  • consumer_group: il gruppo di consumer. Il valore predefinito è "LOW".

Esempio

In questo esempio, è possibile creare una tabella basata sulla tabella nel database link:

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'}
]

Operazioni del collegamento alla memoria cloud

Le funzioni Cloud Storage Link forniscono la sintassi e le descrizioni delle classi, dei metodi, degli attributi e dei parametri dell'interfaccia di programmazione dell'applicazione allo strumento Cloud Storage Link della suite di strumenti Data Studio.

Questi metodi consentono di gestire le credenziali e il collegamento allo storage cloud e di importare gli oggetti cloud in tabelle o tabelle esterne dello schema corrente.

Procedura di recupero della lista delle credenziali

Restituisce la lista delle credenziali disponibili

Ingest.get_credential_list()

La funzione sopra riportata restituisce una lista di Credenziali.

Esempio

In questo esempio è possibile ottenere tutte le credenziali:

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\": \"\"}"
    },
    ...
    ]
}

Crea procedura credenziali

Crea credenziale semplice. Per il cloud Microsoft Azure l'uso è un nome account e la password è una chiave di accesso, per l'utente Amazon è un ID chiave di accesso e la password è una chiave di accesso segreta, per l'utente Google è una chiave di accesso HMAC e la password è un segreto di accesso HMAC.

Sintassi

Ingest.create_credential(credential_name, user, password)

Parametri:

  • nome_credenziale: il nome di una nuova credenziale
  • utente e password dipendono dal sistema cloud: per Microsoft Azure l'utente cloud è un nome account e la password è una chiave di accesso, per Amazon l'utente è un ID chiave di accesso e la password è una chiave di accesso segreta, per Google l'utente è una chiave di accesso HMAC e la password è un segreto di accesso HMAC.

Esempio

In questo esempio è possibile creare una credenziale con utente e password specificati:

adp.Ingest.create_credential('TEST", 'ADMIN', 'PASSWORD')

Crea procedura credenziali OCID

Creare le credenziali utilizzando le chiavi di firma OCI.

Sintassi

Ingest.create_ocid_credential(credential_name, user_ocid, tenancy_ocid,
                          private_key, fingerprint)

Questa funzione crea le credenziali utilizzando le chiavi di firma OCI.

Parametri:

  • nome_credenziale: il nome della credenziale.
  • user_ocid: l'OCID dell'utente.
  • tenancy_ocid: l'OCID della tenancy.
  • private_key: la chiave privata nella coppia di chiavi RSA. La chiave privata si estende su più righe. Assicurarsi di sostituire tutti i caratteri di nuova riga con il carattere di spazio e utilizzare la chiave risultante.
  • impronta: l'impronta digitale per la coppia di chiavi RSA che si sta utilizzando per accedere a OCI.

Esempio

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')

Elimina procedura credenziali

Eliminare la credenziale con il nome specificato.

Ingest.drop_credential(credential_name)

Parametri:

  • nome_credenziale: il nome della credenziale.

Esempio

In questo esempio è possibile eliminare la credenziale con il nome 'TEST':

adp.Ingest.drop_credential('TEST')

Procedura di recupero della lista di collegamenti allo storage cloud

Sintassi

Ingest.get_cloud_storage_link_list(owner)

Parametri:

  • Proprietario: questo campo visualizza il proprietario del database link. Se manca questo campo, lo strumento utilizza il proprietario dello schema corrente.

Esempio

In questo esempio, è possibile visualizzare la lista dei collegamenti allo storage cloud:

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"
      }
    },
    ...
    ]
}

Procedura Crea collegamento memoria cloud

Crea la procedura di collegamento allo storage cloud in base all'URI e alle credenziali dello storage cloud. La credenziale può essere saltata se il collegamento di storage è un bucket pubblico.

Sintassi

Ingest.create_cloud_storage_link(storage_link_name, uri, credential_name,
                          description)

Parametri:

  • nome_collegamento_storage: il nome del collegamento allo storage cloud. Questo campo è obbligatorio.
  • URI: il percorso URL (URI) ad eccezione del nome file. Questo campo è obbligatorio.
  • nome_credenziale: il nome della credenziale deve essere conforme alle convenzioni di denominazione degli oggetti Oracle.
  • descrizione: descrizione del collegamento. Se manca la descrizione, lo strumento utilizza nome_collegamento_storage.

Esempio

In questo esempio è possibile creare il collegamento allo storage cloud con il nome 'TEST'

Ingest.create_cloud_storage_link('TEST', 'https://.../test-bucket/o/', None, 'OCI Storage Link')

Elimina procedura collegamento storage cloud

Elimina il collegamento allo storage cloud in base al nome del collegamento allo storage.

Ingest.drop_cloud_storage_link(storage_link_name)

Parametri:

  • nome_collegamento_storage: il nome del collegamento allo storage cloud.

Esempio

In questo esempio, è possibile eliminare il collegamento allo storage cloud con il nome 'TEST'

Ingest.drop_cloud_storage_link('TEST')

Procedura di recupero degli oggetti di storage cloud

Recupera la lista degli oggetti nel collegamento dello storage cloud.

Sintassi

Ingest.get_cloud_objects(storage_link,owner)

Questa funzione restituisce la lista degli oggetti nel collegamento dello storage cloud.

Parametri:

  • storage_link: il nome del collegamento allo storage cloud.
  • Proprietario: questo campo visualizza il proprietario del database link. Se manca questo campo, lo strumento utilizza il proprietario dello schema corrente.

Esempio

In questo esempio, è possibile elencare gli oggetti nel collegamento Storage cloud con il 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"
      }
    },...
    ]
}

Restituisce l'elenco dei gruppi di consumer disponibili.

Procedura Copia oggetti cloud

Copiare gli oggetti cloud dal collegamento Storage cloud alle tabelle nello schema corrente

Ingest.copy_cloud_objects(objects, consumer_group)

Parametri:

  • oggetti: array di descrizioni delle tabelle. Ogni descrizione ha 4 campi.
    • storageLink: il nome del collegamento di storage cloud. Questo campo è obbligatorio.
    • objectName: il nome del file nel collegamento Storage cloud. Vedere il campo name nei risultati del metodo get_cloud_object. Questo campo è obbligatorio.
    • targetTableName: il nome della tabella di destinazione. Se manca questo campo, lo strumento utilizza il nome del file come nome della tabella.
  • consumer_group: il gruppo di consumer. Il valore predefinito è "LOW".

Esempio

In questo esempio è possibile creare una tabella e caricare i dati dall'oggetto nel collegamento Storage cloud.

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
  }
]

Procedura Collega oggetti cloud

Crea tabelle esterne basate su oggetti cloud dal collegamento Storage cloud.

Ingest.link_cloud_objects(objects, consumer_group)

Parametri:

  • oggetti: array di descrizioni delle tabelle. Ogni descrizione ha 4 campi.
    • storageLink: il nome del collegamento di storage cloud. Questo campo è obbligatorio.
    • objectName: il nome del file nel collegamento Storage cloud. Vedere il campo nome nei risultati del metodo get_cloud_object. Questo campo è obbligatorio.
    • targetTableName: il nome della tabella di destinazione. Se manca questo campo, lo strumento utilizza il nome del file come nome della tabella.
  • consumer_group: il gruppo di consumer. Il valore predefinito è "LOW".

Esempio

In questo esempio, è possibile creare una tabella esterna dall'oggetto specificato nel collegamento Storage cloud.
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
  }
]

Procedura Crea tabella da dati json

Ingest.load_data(tables)

Parametri:

  • tabelle è l'elenco dei dizionari con i seguenti campi:
    • contenuto: è il contenuto dei dati, è un dizionario con chiave come nome colonna e valori come elenco di valori della colonna.
    • targetTableName: il nome della tabella.

Esempio

In questo esempio è possibile creare una tabella e riempirla con i dati del contenuto:
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}]