Consulta de Tablas Externas con Partición Implícita
En Autonomous AI Database puede crear tablas externas particionadas implícitas a partir de datos particionados de estilo Hive o de datos particionados de carpetas simples almacenados en el almacén de objetos en la nube.
- Acerca de las tablas externas con partición implícita
En Autonomous AI Database, utilice el procedimientoDBMS_CLOUD.CREATE_EXTERNAL_TABLE
para crear tablas externas particionadas implícitas a partir de datos particionados de estilo Hive o de datos particionados de carpeta simple almacenados en el almacén de objetos en la nube. - Consulta de Datos Particionados Implícitos Externos con Organización de Archivo de Origen de Formato de Hive
Utilice el procedimientoDBMS_CLOUD.CREATE_EXTERNAL_TABLE
para crear una tabla externa particionada implícita a partir de datos del almacén de objetos generados a partir de datos de Hive. - Consulta de datos de estilo no de Hive particionados implícitos externos
Utilice el procedimientoDBMS_CLOUD.CREATE_EXTERNAL_TABLE
para crear una tabla externa particionada implícita a partir de datos del almacenamiento de objetos que se hayan generado a partir de datos que no sean de Hive.
Tema principal: Consulta de Datos Externos con Autonomous AI Database
Acerca de las Tablas Externas con Partición Implícita
En Autonomous AI Database, utilice el procedimiento DBMS_CLOUD.CREATE_EXTERNAL_TABLE
para crear tablas externas particionadas implícitas a partir de datos particionados de estilo Hive o de datos particionados de carpetas simples almacenados en el almacén de objetos en la nube.
Al transferir las opciones adecuadas a este procedimiento, las particiones se derivan de los datos de origen. Las tablas externas particionadas soportan la detección en tiempo de ejecución de columnas de partición y sus valores. La detección en tiempo de ejecución de cambios en la estructura del almacén de objetos subyacente, como la adición o eliminación de objetos, simplifica el proceso de mantenimiento al eliminar la necesidad de procedimientos de sincronización adicionales necesarios para DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
. Esto garantiza que los datos estén actualizados en el tiempo de ejecución de la consulta.
Con la partición implícita, la base de datos de IA autónoma determina automáticamente las columnas sobre las que se "particiona" una tabla en función de la estructura de archivos jerárquica del origen de almacenamiento de objetos. No es necesario declarar explícitamente un esquema de partición. La partición implícita proporciona ventajas de rendimiento similares a las de la tabla de particiones sin la necesidad de definir explícitamente una tabla externa particionada mediante el procedimiento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
.
Para optimizar el tiempo de respuesta de las consultas de juegos de datos muy grandes mediante la partición implícita, puede activar la optimización definiendo strict_column_order
en true. El parámetro strict_column_order
es una subopción de la opción de formato implicit_partition_config
. Esta optimización solo se aplica cuando partition_type
está colmado. Consulte Query External Implicit Particted Data with Hive Format Source File Organization para obtener un ejemplo y DBMS_CLOUD Package Format Options para obtener más información sobre los parámetros de formato de partición implícita.
Las tablas externas particionadas implícitas soportan los siguientes estilos de nomenclatura para objetos particionados en el almacén de objetos:
- Formato de nomenclatura de Hive: los datos del almacenamiento de objetos que se han generado desde Hive tienen el siguiente formato.
OBJBUCKET/<table>/<partcol1>=<value1>/<partcol2>=<value2>/file.parquet
Para ver un ejemplo, consulte Query External Implicit Particted Data with Hive Format Source File Organization
- Formato de nomenclatura "pathtail" no de Hive: un segundo formato que se suele encontrar en lagos de datos es similar al formato hive, pero el nombre de la carpeta no incluye las columnas de partición.
OBJBUCKET/<table>/<value1>/<value2>/file.parquet
Para ver un ejemplo, consulte Query External Implicit Particted Non-Hive Style Data.
Para obtener más información sobre los formatos de nomenclatura, consulte Acerca de las Tablas Externas con Partición de Archivos de Origen.
DBMS_CLOUD.CREATE_EXTERNAL_TABLE
, las tablas externas particionadas implícitas se pueden crear de las siguientes formas:
- Optimice la partición implícita. Utilice la opción
implicit_partition_config
para activar la partición implícita y la optimización del tiempo de consulta transcurrido.En este ejemplo, la partición implícita se activa definiendo
partition_type
en hive. El único valor válido parapartition_type
es hive. La optimización se activa definiendosetting strict_column_order
en true. La opciónpartition_columns
especifica qué columnas se particionan.Por ejemplo:
BEGIN dbms_cloud.create_external_table ( table_name => 'partitions1', file_uri_list => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/*.parquet', column_list => 'c varchar2(100), y number, total_sales number', format => '{"type":"parquet", "implicit_partition_config":{ "partition_type":"hive", "strict_column_order":true, "partition_columns":["org","tenant","dbtype","year","month","day"] } }'); END; /
- Definir el tipo de partición en conjunto con una lista determinada de columnas de partición
En este caso,
implicit_partition_type
se define enhive
yimplicit_partition_columns
proporciona una lista de columnas de partición.Por ejemplo:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE ( table_name => 'mysales', credential_name => 'MY_CREDENTIAL', file_uri_list => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/*.parquet', column_list => 'product varchar2(100), units number, country varchar2(100),year (number), month varchar2(2)', format => '{"type":"parquet", "implicit_partition_type":"hive", "implicit_partition_columns":["country","year","month"]}'); END; /
- Definir el tipo de partición en activo sin proporcionar una lista de columnas de partición
En este caso,
implicit_partition_type
se define enhive
y no se proporcionaimplicit_partition_columns
. Las columnas de partición se detectan automáticamente buscando '=' en la ruta especificada porfile_uri_list
.column_name
está a la izquierda de '=' y el valor está a la derecha. Si no se encuentra uncolumn_name
en la ruta de acceso, se devuelve un error.Por ejemplo:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE ( table_name => 'mysales', credential_name => 'MY_CREDENTIAL', file_uri_list => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/*.parquet', column_list => 'product varchar2(100), units number, country varchar2(100),year (number), month varchar2(2)', format => '{"type":"parquet", "implicit_partition_type":"hive"'); END; /
- Proporcionar una lista de columnas de partición sin especificar el tipo
En este caso,
implicit_partition_type
no está definido yimplicit_partition_columns
proporciona una lista de columnas.Por ejemplo:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE ( table_name => 'mysales', credential_name => 'MY_CREDENTIAL', file_uri_list => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/*.parquet', column_list => 'product varchar2(100), units number, country varchar2(100),year (number), month varchar2(2)', format => '{"type":"parquet", "implicit_partition_columns":["country","year","month"]}'); END; /
Consulte Query External Implicit Particted Data with Hive Format Source File Organization y CREATE_EXTERNAL_TABLE Procedure para obtener más información.
Tema principal: Consulta de tablas externas con particiones implícitas
Consulta de datos particionados implícitos externos con organización Hive Format Source File
Utilice el procedimiento DBMS_CLOUD.CREATE_EXTERNAL_TABLE
para crear una tabla externa particionada implícita a partir de datos del almacén de objetos generados a partir de datos de Hive.
Los archivos de origen de ejemplo del siguiente ejemplo utilizan este formato de nomenclatura:
OBJBUCKET/<table>/<partcol1>=<value1>/<partcol2>=<value2>/file.parquet
Tenga en cuenta los siguientes archivos de origen de ejemplo:
OBJBUCKET/sales/country=USA/year=2024/month=01/sales-2024-01.parquet
OBJBUCKET/sales/country=USA/year=2024/month=02/sales-2024-02.parquet
OBJBUCKET/sales/country=USA/year=2024/month=02/sales-2024-03.parquet
Para crear una tabla externa particionada implícita con datos almacenados en este formato de Hive de ejemplo, haga lo siguiente:
- Optimización de la planificación de consultas del almacén de objetos con la opción strict_column_order
Cuando una consulta se dirige a una carpeta del almacén de objetos con un gran número de archivos y subcarpetas, la fase de planificación y lista puede convertirse en el costo principal antes de que se escanee realmente cualquier dato. Esto es común con los diseños de carpetas de estilo Hive donde los valores de partición están embebidos en la ruta.
Tema principal: Consulta de tablas externas con particiones implícitas
Optimizar la planificación de consultas del almacén de objetos con la opción strict_column_order
Cuando una consulta se dirige a una carpeta de almacén de objetos con un gran número de archivos y subcarpetas, la fase de planificación y lista puede convertirse en el costo principal antes de que se escanee realmente cualquier dato. Esto es común con los diseños de carpetas de estilo Hive donde los valores de partición están embebidos en la ruta.
-
El valor
strict_column_order
está desactivado por defecto. Activar solo si el diseño de ruta es coherente. -
Si cambian las convenciones de carpeta (como agregar, eliminar o reordenar columnas de partición), debe actualizar la opción
partition_columns
y puede que tenga que desactivar esta opción.
Active la opción strict_column_order
de la siguiente manera:
Si los datos utilizan rutas particionadas de estilo Hive y las columnas de partición siempre aparecen en un orden fijo y consistente sin segmentos faltantes, active la optimización mediante la siguiente configuración:
strict_column_order = true (with partition_type = "hive")
La base de datos puede omitir directorios innecesarios siguiendo el orden de las particiones que ya están definidas. Esto significa que no tiene que enumerar todos los objetos, lo que puede acelerar significativamente el tiempo de planificación de grandes conjuntos de datos.
Notas para el uso de la opción strict_column_order:
-
Las rutas siguen el orden y la nomenclatura de Hive, por ejemplo:
.../country=US/year=2025/month=09/...
-
Las columnas de partición mantienen un conjunto y una secuencia fijos, sin prefijos que se reordenen ni se salten.
- Debe optimizar la lista de tiempo de plan para las carpetas que contienen un gran número de objetos.
- No puede usar esta opción en juegos de datos donde no todos los prefijos están presentes. Por ejemplo, algunas carpetas incluyen year=, mientras que otras comienzan con month=).
Ejemplos: utilice la opción strict_column_order para las particiones de estilo Hive con DBMS_CLOUD.CREATE_EXTERNAL_TABLE
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
table_name => 'sales_xt',
credential_name => 'MY_CREDENTIAL',
file_uri_list => 'https://objectstorage.example.com/n/tenant/b/lake/o/sales/',
-- Data is stored as: .../country=US/year=2025/month=09/*.parquet
column_list => 'product VARCHAR2(100),
units NUMBER,
amount NUMBER,
country VARCHAR2(30),
year NUMBER,
month NUMBER',
format => '{
"type": "parquet",
"implicit_partition_config": {
"partition_type": "hive",
"partition_columns": ["country","year","month"],
"strict_column_order": true
}
}'
);
END;
/
Compruebe que la lógica de planificación evita la enumeración de rutas de nivel superior no relacionadas (por ejemplo, rutas que pertenecen a otros países o años):
- Ejecute una consulta selectiva que restrinja las particiones iniciales, por ejemplo:
conSELECT COUNT(*) FROM sales_xt WHERE country = ''US'' AND year = 2025;
.strict_column_order = true
- Si no se cumplen las suposiciones de diseño, desactive la opción y vuelva a intentarlo.
Consultar datos de estilo no de Hive particionados implícitos externos
Utilice el procedimiento DBMS_CLOUD.CREATE_EXTERNAL_TABLE
para crear una tabla externa particionada implícita a partir de datos del almacenamiento de objetos que se hayan generado a partir de datos que no sean de Hive.
Los archivos de origen de ejemplo del siguiente ejemplo utilizan este formato de nomenclatura:
OBJBUCKET/<table>/<value1>/<value2>/file.parquet
Tenga en cuenta los siguientes archivos de origen de ejemplo:
OBJBUCKET/sales/USA/2024/01/sales-2024-01.parquet
OBJBUCKET/sales/USA/2024/01/sales-2024-02.parquet
OBJBUCKET/sales/USA/2024/01/sales-2024-03.parquet
Para crear una tabla externa particionada implícita con datos almacenados en este formato de Hive de ejemplo, haga lo siguiente:
Tema principal: Consulta de tablas externas con particiones implícitas