Funciones de ingesta
La clase Adp.Ingest se utiliza para cargar datos de diferentes orígenes en tablas y vistas.
La API de carga de datos de Autonomous Database para Python permite las siguientes operaciones:
- Copiar tablas del enlace de la base de datos en tablas o vistas del esquema actual
- Copiar objetos del enlace de almacenamiento en la nube en tablas o tablas externas del esquema actual
- Crear tabla con datos de json
Estas operaciones crean el trabajo de ingesta correspondiente
Operaciones de enlace de base de datos
Las funciones de enlace de base de datos proporcionan la sintaxis y las descripciones de las clases, métodos, atributos y parámetros de la interfaz de programación de aplicaciones para el enlace de base de datos.
Obtener procedimiento de grupo de consumidores
Esta función recibe una lista de grupos de consumidores para ejecutar el código SQL o PL/SQL. Los valores coinciden con los servicios de base de datos disponibles al conectarse a la base de datos. Esta función solo está disponible si tiene el privilegio EXECUTE en el paquete CS_SESSION.
Sintaxis
Ingest.get_consumer_groups()Ejemplo
En este ejemplo, obtendrá la lista de los grupos de consumidores:
adp.Ingest.get_consumer_groups() //Output:['LOW', 'MEDIUM', 'HIGH']
Procedimiento para Obtener Enlaces de Base de Datos
Devolver la lista de enlaces de base de datos disponibles (para crear un enlace de base de datos, consulte Enlaces de base de datosEnlaces de base de datos en la "Guía del administrador de bases de datos Oracle® Database 21c").
Ingest.get_database_links(owner)- owner (Propietario): este campo muestra el propietario de los enlaces de base de datos. Si falta este campo, la herramienta utiliza el propietario del esquema actual.
Ejemplo
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":[]}Obtener tablas en el procedimiento de enlace de base de datos
Devuelve la lista de tablas y vistas desde el enlace de base de datos.
Ingest.get_db_link_owner_tables(db_link)Parámetros:
- db_link: este nombre del vínculo de base de datos.
Ejemplo
En este ejemplo, obtendrá la lista de los objetos en un enlace de base de datos 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
},...
]Procedimiento de Copia de Tabla de Enlace de Base de Datos
Cree una tabla a partir de las tablas especificadas en la base de datos actual.
Sintaxis
Ingest.copy_tables_from_db_link(tables, consumer_group)Parámetros:
- tables: matriz de descripción de tablas. Cada descripción tiene 4 campos.
- owner (Propietario): este campo muestra el propietario del enlace de base de datos. Si falta este campo, la herramienta utiliza el propietario del esquema actual.
- table_name: nombre de la tabla en el enlace de base de datos. Este campo es obligatorio.
- db_link: nombre del vínculo de base de datos. Este campo es obligatorio.
- target_table_name: nombre de la tabla de destino. Si falta este campo, la herramienta utiliza el nombre de la tabla de origen.
- consumer_group: el grupo de consumidores. El valor por defecto es "LOW".
Ejemplos
En este ejemplo, puede crear una tabla basada en la tabla en el enlace de base de datos:
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
}
]El método devuelve la lista de tablas que ha creado. El diccionario de la salida es el mismo que en los parámetros de entrada y se inserta un valor adicional en el recuento de filas.
Procedimiento de enlace de tabla de base de datos
Cree una vista de las tablas especificadas en la base de datos actual. Tenga en cuenta que la cadena de resultados no tiene número de filas.
Ingest.link_tables_from_db_link(tables, consumer_group)- tables: matriz de descripción de tablas. Cada descripción tiene 4 campos
- owner (Propietario): este campo muestra el propietario del enlace de base de datos. Si falta este campo, la herramienta utiliza el propietario del esquema actual.
- table_name: nombre de la tabla en el enlace de base de datos. Este campo es obligatorio.
- db_link: nombre del vínculo de base de datos. Este campo es obligatorio.
- target_table_name: nombre de la tabla de destino. Si falta este campo, la herramienta utiliza el nombre de la tabla de origen.
-
consumer_group: el grupo de consumidores. El valor por defecto es "LOW".
Ejemplo
En este ejemplo, puede crear una tabla basada en la tabla en el enlace de base de datos:
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'}
]Operaciones de enlace de almacenamiento en la nube
Las funciones de Cloud Storage Link proporcionan la sintaxis y las descripciones de las clases, los métodos, los atributos y los parámetros de la interfaz de programación de aplicaciones a la herramienta Cloud Storage Link del conjunto de herramientas de Data Studio.
Estos métodos permiten gestionar las credenciales y el enlace de almacenamiento en la nube, así como importar objetos en la nube a tablas o tablas externas del esquema actual.
Obtener lista de procedimientos de credenciales
Lista de devoluciones de credenciales disponibles
Ingest.get_credential_list()La función anterior devuelve una lista de credenciales.
Ejemplo
En este ejemplo, puede obtener todas las credenciales:
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\": \"\"}"
},
...
]
}
Crear procedimiento de credencial
Cree una credencial simple. Para Microsoft Azure Cloud el uso es un nombre de cuenta, y la contraseña es una clave de acceso, para el usuario de Amazon es un ID de clave de acceso, y la contraseña es una clave de acceso secreta, para el usuario de Google es una clave de acceso HMAC, y la contraseña es un secreto de acceso HMAC.
Sintaxis
Ingest.create_credential(credential_name, user, password)Parámetros:
- credential_name: nombre de una nueva credencial
- user y password dependen del sistema en la nube: para Microsoft Azure, user en la nube es un nombre de cuenta y password es una clave de acceso, para Amazon, user es un ID de clave de acceso y password es una clave de acceso secreta, para Google, user es una clave de acceso HMAC y password es un secreto de acceso HMAC.
Ejemplo
En este ejemplo, puede crear una credencial con el usuario y la contraseña especificados:
adp.Ingest.create_credential('TEST", 'ADMIN', 'PASSWORD')Crear Procedimiento de Credencial de OCID
Crear credenciales mediante claves de firma de OCI.
Sintaxis
Ingest.create_ocid_credential(credential_name, user_ocid, tenancy_ocid,
private_key, fingerprint)Esta función crea credenciales mediante las claves de firma de OCI.
Parámetros:
- credential_name: nombre de la credencial.
- user_ocid: OCID del usuario.
- tenancy_ocid: el OCID del arrendamiento.
- private_key: clave privada en el par de claves RSA. La clave privada abarca varias líneas. Asegúrese de sustituir todos los caracteres de nueva línea por el carácter de espacio y utilice la clave resultante.
- huella: huella del par de claves RSA que está utilizando para acceder a OCI.
Ejemplo
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')
Borrar procedimiento de credencial
Borre la credencial con el nombre especificado.
Ingest.drop_credential(credential_name)Parámetros:
- credential_name (Nombre_credencial): nombre de la credencial.
Ejemplo
En este ejemplo, puede borrar la credencial con el nombre 'TEST':
adp.Ingest.drop_credential('TEST')
Procedimiento de lista Obtener enlaces de almacenamiento en la nube
Sintaxis
Ingest.get_cloud_storage_link_list(owner)Parámetros:
- owner (Propietario): este campo muestra el propietario del enlace de base de datos. Si falta este campo, la herramienta utiliza el propietario del esquema actual.
Ejemplo
En este ejemplo, puede ver la lista de enlaces de almacenamiento en la nube:
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"
}
},
...
]
}
Procedimiento de creación de enlace de almacenamiento en la nube
Crear procedimiento de enlace de almacenamiento en la nube basado en URI y credenciales de almacenamiento en la nube. La credencial se puede omitir si el enlace de almacenamiento es un cubo público.
Sintaxis
Ingest.create_cloud_storage_link(storage_link_name, uri, credential_name,
description)Parámetros:
- storage_link_name: nombre del enlace de almacenamiento en la nube. Este campo es obligatorio.
- URI: ruta de URL (URI), excepto el nombre de archivo. Este campo es obligatorio.
- credential_name: el nombre de credencial debe cumplir con las convenciones de nomenclatura de objetos de Oracle.
- description: descripción del enlace. Si falta la descripción, la herramienta utiliza storage_link_name en su lugar.
Ejemplo
En este ejemplo, puede crear el enlace de almacenamiento en la nube con el nombre 'TEST'
Ingest.create_cloud_storage_link('TEST', 'https://.../test-bucket/o/', None, 'OCI Storage Link')
Procedimiento para borrar enlaces de almacenamiento en la nube
Borrar enlace de almacenamiento en la nube según el nombre del enlace de almacenamiento.
Ingest.drop_cloud_storage_link(storage_link_name)Parámetros:
- storage_link_name: nombre del enlace de almacenamiento en la nube.
Ejemplo
En este ejemplo, puede borrar el enlace de almacenamiento en la nube con el nombre 'TEST'
Ingest.drop_cloud_storage_link('TEST')Procedimiento para obtener objetos de almacenamiento en la nube
Obtenga la lista de objetos en el enlace de almacenamiento en la nube.
Sintaxis
Ingest.get_cloud_objects(storage_link,owner)Esta función devuelve la lista de objetos en el enlace de almacenamiento en la nube.
Parámetros:
- storage_link: nombre del enlace de almacenamiento en la nube.
- owner (Propietario): este campo muestra el propietario del enlace de base de datos. Si falta este campo, la herramienta utiliza el propietario del esquema actual.
Ejemplo
En este ejemplo, puede mostrar una lista de objetos en el enlace de almacenamiento en la nube con el nombre '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"
}
},...
]
}De esta forma, se devuelve la lista de grupos de consumidores disponibles.
Procedimiento de copia de objetos en la nube
Copiar objetos en la nube del enlace de almacenamiento en la nube en las tablas del esquema actual
Ingest.copy_cloud_objects(objects, consumer_group)Parámetros:
- objetos: matriz de descripción de tablas. Cada descripción tiene 4 campos.
- storageLink: nombre del enlace de almacenamiento en la nube. Este campo es obligatorio.
- objectName: nombre del archivo en el enlace de almacenamiento en la nube. Consulte el campo name en los resultados del método get_cloud_object. Este campo es obligatorio.
- targetTableName: nombre de la tabla de destino. Si falta este campo, la herramienta utiliza el nombre de archivo como nombre de tabla.
-
consumer_group: el grupo de consumidores. El valor por defecto es "LOW".
Ejemplo
En este ejemplo, puede crear tablas y cargar datos del objeto en el enlace de almacenamiento en la nube.
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
}
]
Procedimiento de enlace de objetos en la nube
Cree tablas externas basadas en objetos en la nube desde el enlace de almacenamiento en la nube.
Ingest.link_cloud_objects(objects, consumer_group)Parámetros:
- objetos: matriz de descripción de tablas. Cada descripción tiene 4 campos.
- storageLink: nombre del enlace de almacenamiento en la nube. Este campo es obligatorio.
- objectName: nombre del archivo en el enlace de almacenamiento en la nube. Consulte el campo name en los resultados del método get_cloud_object. Este campo es obligatorio.
- targetTableName: nombre de la tabla de destino. Si falta este campo, la herramienta utiliza el nombre de archivo como nombre de tabla.
-
consumer_group: el grupo de consumidores. El valor por defecto es "LOW".
Ejemplo
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
}
]Crear tabla a partir de procedimiento de datos json
Ingest.load_data(tables)Parámetros:
- Las tablas son la lista de diccionarios con los siguientes campos:
- contenido: es el contenido de los datos, es un diccionario con clave como nombre de columna y valores como lista de valores de la columna.
- targetTableName: nombre de la tabla.
Ejemplo
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}]