Fonctions d'inclusion

La classe Adp.Ingest permet de charger des données provenant de différentes sources dans des tables et des vues.

L'API de chargement de données Autonomous Database pour Python autorise les opérations suivantes :

  • Copier des tables du lien de base de données vers des tables ou des vues du schéma en cours
  • Copier des objets du lien de stockage cloud vers des tables ou des tables externes du schéma en cours
  • Créer une table avec les données de json

Ces opérations créent le travail d'inclusion correspondant

Opérations de lien de base de données

Les fonctions Lien de base de données fournissent la syntaxe et les descriptions des classes, méthodes, attributs et paramètres de l'interface de programmation d'application vers le lien de base de données.

Obtenir une procédure de groupe de consommateurs de ressources

Cette fonction reçoit la liste des groupes de destinataires pour exécuter le code SQL ou PL/SQL. Les valeurs correspondent aux services de base de données disponibles lors de la connexion à la base de données. Cette fonctionnalité n'est disponible que si vous disposez du privilège EXECUTE sur le package CS_SESSION.

Syntaxe

Ingest.get_consumer_groups()

Exemple

Dans cet exemple, vous obtenez la liste des groupes de consommateurs de ressources :

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

Procédure d'obtention de liens de base de données

Renvoie la liste des liens de base de données disponibles (pour créer un lien de base de données, reportez-vous à Database LinksDatabase Links dans le "Guide de l'administrateur Oracle® Database Database 21c").

Ingest.get_database_links(owner)
Paramètres:
  • owner : Ce champ affiche le propriétaire des liens de base de données. Si ce champ est manquant, l'outil utilise le propriétaire de schéma actuel.

Exemple

Dans cet exemple, vous obtenez la liste des liens de base de données :
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":[]}

Obtenir les tables dans la procédure Lien de base de données

Renvoie la liste des tables et des vues à partir du lien de base de données.

Ingest.get_db_link_owner_tables(db_link)

Paramètres:

  • db_link : nom du liaison de base de données.

Exemple

Dans cet exemple, vous obtenez la liste des objets d'un lien de base de données donné :

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

Copier une table à partir d'un lien de base de données - Procédure

Créez une table à partir des tables indiquées dans la base de données en cours.

Syntaxe

Ingest.copy_tables_from_db_link(tables, consumer_group)

Paramètres:

  • tables : tableau de description des tables. Chaque description comporte 4 champs.
  • owner : Ce champ affiche le propriétaire du lien de base de données. Si ce champ est manquant, l'outil utilise le propriétaire de schéma actuel.
  • table_name : nom de la table dans le lien de base de données. Ce champ est obligatoire.
  • db_link : nom du Lien de base de données. Ce champ est obligatoire.
  • target_table_name : nom de la Table cible. Si ce champ est manquant, l'outil utilise le nom de la table source.
  • consumer_group : groupe de consommateurs de ressources. La valeur par défaut est "LOW".

Exemples 

Dans cet exemple, vous pouvez créer une table basée sur la table du lien de base de données :

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

La méthode renvoie la liste des tables que vous créez. Le dictionnaire de la sortie est identique aux paramètres d'entrée et une valeur supplémentaire est insérée.

Table de liens à partir d'un lien de base de données - Procédure

Créez une vue à partir des tables indiquées dans la base de données en cours. Tenez compte du fait que la chaîne de résultat n'a pas de nombre de lignes.

Ingest.link_tables_from_db_link(tables, consumer_group)
Paramètres:
  • tables : tableau de description des tables. Chaque description comporte 4 champs
    • owner : Ce champ affiche le propriétaire du lien de base de données. Si ce champ est manquant, l'outil utilise le propriétaire de schéma actuel.
    • table_name : nom de la table dans le lien de base de données. Ce champ est obligatoire.
    • db_link : nom du Lien de base de données. Ce champ est obligatoire.
    • target_table_name : nom de la Table cible. Si ce champ est manquant, l'outil utilise le nom de la table source.
  • consumer_group : groupe de consommateurs de ressources. La valeur par défaut est "LOW".

Exemple

Dans cet exemple, vous pouvez créer une table basée sur la table du lien de base de données :

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

Opérations de lien de stockage cloud

Les fonctions Cloud Storage Link fournissent la syntaxe et les descriptions des classes, méthodes, attributs et paramètres de l'interface de programmation d'application à l'outil Cloud Storage Link de la suite d'outils Data Studio.

Ces méthodes permettent de gérer les informations d'identification et le lien de stockage cloud, et d'importer des objets cloud dans des tables ou des tables externes du schéma en cours.

Obtenir la liste des informations d'identification - Procédure

Renvoyer la liste des informations d'identification disponibles

Ingest.get_credential_list()

La fonction ci-dessus renvoie une liste d'informations d'identification.

Exemple

Dans cet exemple, vous pouvez obtenir toutes les informations d'identification :

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

Créer une procédure d'identification

Créez des informations d'identification simples. Pour l'utilisation du cloud Microsoft Azure est un nom de compte, et le mot de passe est une clé d'accès, pour l'utilisateur Amazon est un ID de clé d'accès et le mot de passe est une clé d'accès secrète, pour l'utilisateur Google est une clé d'accès HMAC et le mot de passe est une clé secrète d'accès HMAC.

Syntaxe

Ingest.create_credential(credential_name, user, password)

Paramètres:

  • credential_name : nom des nouvelles informations d'identification
  • user et password dépendent du système cloud : pour le cloud Microsoft Azure, user est un nom de compte et password est une clé d'accès, pour Amazon, user est un ID de clé d'accès et password est une clé d'accès secrète, pour Google, user est une clé d'accès HMAC et password est une clé secrète d'accès HMAC.

Exemple

Dans cet exemple, vous pouvez créer des informations d'identification avec l'utilisateur et le mot de passe indiqués :

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

Créer une procédure d'informations d'identification d'OCID

Créez des informations d'identification à l'aide des clés de signature OCI.

Syntaxe

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

Cette fonction crée des informations d'identification à l'aide des clés de signature OCI.

Paramètres:

  • credential_name : nom des informations d'identification.
  • user_ocid : OCID de l'utilisateur.
  • tenancy_ocid : OCID de la location.
  • private_key : clé privée dans la paire de clés RSA. La clé privée s'étend sur plusieurs lignes. Veillez à remplacer tous les caractères de retour à la ligne par l'espace et utilisez la clé obtenue.
  • empreinte : empreinte de la paire de clés RSA que vous utilisez pour accéder à OCI.

Exemple

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

Procédure de suppression des informations d'identification

Supprimez les informations d'identification avec le nom indiqué.

Ingest.drop_credential(credential_name)

Paramètres:

  • credential_name : nom des informations d'identification.

Exemple

Dans cet exemple, vous pouvez supprimer les informations d'identification portant le nom "TEST" :

adp.Ingest.drop_credential('TEST')

Obtenir la liste des liens de stockage cloud - Procédure

Syntaxe

Ingest.get_cloud_storage_link_list(owner)

Paramètres:

  • owner : Ce champ affiche le propriétaire du lien de base de données. Si ce champ est manquant, l'outil utilise le propriétaire de schéma actuel.

Exemple

Dans cet exemple, vous pouvez obtenir la liste des liens de stockage 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"
      }
    },
    ...
    ]
}

Créer une procédure de lien de stockage cloud

Créez une procédure de lien de stockage cloud basée sur l'URI et les informations d'identification de stockage cloud. Les informations d'identification peuvent être ignorées si le lien de stockage est un bucket public.

Syntaxe

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

Paramètres:

  • storage_link_name : nom du lien de stockage cloud. Ce champ est obligatoire.
  • URI : Chemin d'URL (URI) à l'exception du nom de fichier. Ce champ est obligatoire.
  • credential_name : le nom des informations d'identification doit être conforme aux conventions de dénomination des objets Oracle.
  • description : description du lien. Si la description est manquante, l'outil utilise storage_link_name à la place.

Exemple

Dans cet exemple, vous pouvez créer le lien de stockage cloud nommé TEST.

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

Procédure de suppression de lien de stockage cloud

Supprimez le lien de stockage cloud en fonction du nom du lien de stockage.

Ingest.drop_cloud_storage_link(storage_link_name)

Paramètres:

  • storage_link_name : nom du lien de stockage cloud.

Exemple

Dans cet exemple, vous pouvez supprimer le lien de stockage cloud portant le nom "TEST"

Ingest.drop_cloud_storage_link('TEST')

Procédure d'obtention des objets de stockage cloud

Obtenez la liste des objets dans Cloud Storage Link.

Syntaxe

Ingest.get_cloud_objects(storage_link,owner)

Cette fonction renvoie la liste des objets dans le lien de stockage cloud.

Paramètres:

  • storage_link : nom du lien de stockage cloud.
  • owner : Ce champ affiche le propriétaire du lien de base de données. Si ce champ est manquant, l'outil utilise le propriétaire de schéma actuel.

Exemple

Dans cet exemple, vous pouvez répertorier les objets dans le lien de stockage cloud portant le nom '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"
      }
    },...
    ]
}

La liste des groupes de consommateurs de ressources disponibles est alors renvoyée.

Procédure de copie d'objets cloud

Copier les objets cloud du lien de stockage cloud vers les tables du schéma en cours

Ingest.copy_cloud_objects(objects, consumer_group)

Paramètres:

  • objects : tableau de la description des tables. Chaque description comporte 4 champs.
    • storageLink : nom de la liaison de stockage cloud. Ce champ est obligatoire.
    • objectName : nom du fichier dans le lien de stockage cloud. Reportez-vous au champ name dans les résultats de la méthode get_cloud_object. Ce champ est obligatoire.
    • targetTableName : nom de la Table cible. Si ce champ est manquant, l'outil utilise le nom de fichier comme nom de table.
  • consumer_group : groupe de consommateurs de ressources. La valeur par défaut est "LOW".

Exemple

Dans cet exemple, vous pouvez créer une table et charger des données à partir de l'objet dans Cloud Storage Link.

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

Procédure de liaison d'objets cloud

Créez des tables externes basées sur des objets cloud à partir du lien de stockage cloud.

Ingest.link_cloud_objects(objects, consumer_group)

Paramètres:

  • objects : tableau de la description des tables. Chaque description comporte 4 champs.
    • storageLink : nom de la liaison de stockage cloud. Ce champ est obligatoire.
    • objectName : nom du fichier dans le lien de stockage cloud. Reportez-vous au champ name dans les résultats de la méthode get_cloud_object. Ce champ est obligatoire.
    • targetTableName : nom de la Table cible. Si ce champ est manquant, l'outil utilise le nom de fichier comme nom de table.
  • consumer_group : groupe de consommateurs de ressources. La valeur par défaut est "LOW".

Exemple

Dans cet exemple, vous pouvez créer une table externe à partir de l'objet indiqué dans Cloud Storage Link.
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
  }
]

Créer une table à partir de données json - Procédure

Ingest.load_data(tables)

Paramètres:

  • tables est la liste des dictionnaires avec les champs suivants :
    • contenu : contenu des données. Il s'agit d'un dictionnaire avec une clé comme nom de colonne et des valeurs comme liste de valeurs de la colonne.
    • targetTableName : nom de la table.

Exemple

Dans cet exemple, vous pouvez créer une table et la remplir avec des données de contenu :
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}]