Esegui query su tabelle esterne con partizionamento implicito
In Autonomous AI Database è possibile creare tabelle esterne partizionate implicite da dati partizionati in stile Hive o da semplici dati partizionati in cartelle memorizzati nell'area di memorizzazione degli oggetti cloud.
- Informazioni sulle tabelle esterne con partizionamento implicito
In Autonomous AI Database utilizzare la proceduraDBMS_CLOUD.CREATE_EXTERNAL_TABLEper creare tabelle esterne partizionate implicite da dati partizionati in stile Hive o da semplici dati partizionati in cartelle memorizzati nell'area di memorizzazione degli oggetti cloud. - Interrogazione di dati partizionati impliciti esterni con organizzazione file di origine formato Hive
Utilizzare la proceduraDBMS_CLOUD.CREATE_EXTERNAL_TABLEper creare una tabella esterna partizionata implicita dai dati nell'area di memorizzazione degli oggetti generati dai dati Hive. - Dati di stile non Hive partizionati impliciti esterni delle query
Utilizzare la proceduraDBMS_CLOUD.CREATE_EXTERNAL_TABLEper creare una tabella esterna partizionata implicita dai dati nello storage degli oggetti generati da dati non Hive.
Argomento padre: Eseguire query sui dati esterni con Autonomous AI Database
Informazioni sulle tabelle esterne con partizionamento implicito
In Autonomous AI Database utilizzare la procedura DBMS_CLOUD.CREATE_EXTERNAL_TABLE per creare tabelle esterne partizionate implicite da dati partizionati in stile Hive o da semplici dati partizionati in cartelle memorizzati nell'area di memorizzazione degli oggetti cloud.
Passando le opzioni appropriate a questa procedura, le partizioni vengono derivate dai dati di origine. Le tabelle esterne partizionate supportano la ricerca automatica in runtime delle colonne di partizione e dei relativi valori. La ricerca automatica in runtime delle modifiche nella struttura dell'area di memorizzazione degli oggetti di base, ad esempio l'aggiunta o la rimozione di oggetti, semplifica il processo di manutenzione eliminando la necessità di ulteriori procedure di sincronizzazione richieste da DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE. Ciò garantisce che i dati siano aggiornati al runtime delle query.
Con il partizionamento implicito, Autonomous AI Database determina automaticamente le colonne su cui una tabella viene "partizionata" in base alla struttura di file gerarchica dell'origine dello storage degli oggetti. Non è necessario dichiarare esplicitamente uno schema di partizionamento. Il partizionamento implicito offre vantaggi in termini di prestazioni simili a tabelle di partizione senza la necessità di definire in modo esplicito una tabella esterna partizionata utilizzando la procedura DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE.
Per ottimizzare i tempi di risposta delle query per query di set di dati molto grandi utilizzando il partizionamento implicito, è possibile abilitare l'ottimizzazione impostando strict_column_order su true. Il parametro strict_column_order è un'opzione secondaria del formato implicit_partition_config. Questa ottimizzazione si applica solo quando partition_type è hive. Per un esempio, vedere Interrogazione di dati partizionati impliciti esterni con organizzazione file di origine formato Hive e DBMS_CLOUD Opzioni formato pacchetto per ulteriori informazioni sui parametri del formato di partizionamento implicito.
Le tabelle esterne partizionate implicite supportano i seguenti stili di denominazione per gli oggetti partizionati nell'area di memorizzazione degli oggetti:
- Formato di denominazione Hive: i dati nello storage degli oggetti generati da Hive hanno il formato seguente.
OBJBUCKET/<table>/<partcol1>=<value1>/<partcol2>=<value2>/file.parquetPer un esempio, vedere Interrogazione di dati partizionati impliciti esterni con organizzazione file di origine formato Hive
- Formato di denominazione "Pathtail" non Hive: un secondo formato che si trova spesso nei data lake è simile al formato hive, ma il nome della cartella non include le colonne della partizione.
OBJBUCKET/<table>/<value1>/<value2>/file.parquetAd esempio, vedere Dati di stile non Hive partizionati impliciti esterni delle query.
Per ulteriori informazioni sui formati di denominazione, vedere Informazioni sulle tabelle esterne con il partizionamento dei file di origine.
DBMS_CLOUD.CREATE_EXTERNAL_TABLE, le tabelle esterne partizionate implicite possono essere create nei modi seguenti:
- Ottimizza il partizionamento implicito. Utilizzare l'opzione
implicit_partition_configper abilitare il partizionamento implicito e l'ottimizzazione del tempo di query trascorso.In questo esempio, il partizionamento implicito viene abilitato impostando
partition_typesu hive. L'unico valore valido perpartition_typeè hive. L'ottimizzazione viene abilitata impostandosetting strict_column_ordersu true. L'opzionepartition_columnsspecifica quali colonne vengono partizionate.Ad esempio:
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; / - Impostare il tipo di partizione su hive con un determinato elenco di colonne di partizione
In questo caso,
implicit_partition_typeè impostato suhiveeimplicit_partition_columnsfornisce una lista di colonne di partizione.Ad esempio:
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; / - Impostare il tipo di partizione su hive senza fornire un elenco di colonne di partizione
In questo caso,
implicit_partition_typeè impostato suhiveeimplicit_partition_columnsnon viene fornito. Le colonne della partizione vengono rilevate automaticamente cercando '=' nel percorso specificato dafile_uri_list.column_namesi trova a sinistra di '=' e il valore si trova sul lato destro. Se nel percorso non viene trovato uncolumn_name, viene restituito un errore.Ad esempio:
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; / - Fornire una lista di colonne di partizione senza specificare il tipo
In questo caso,
implicit_partition_typenon è impostato eimplicit_partition_columnsfornisce una lista di colonne.Ad esempio:
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; /
Per ulteriori informazioni, vedere Interrogazione di dati partizionati impliciti esterni con organizzazione file di origine formato Hive e CREATE_EXTERNAL_TABLE Procedure.
Argomento padre: Query di tabelle esterne con partizionamento implicito
Esegui query su dati partizionati impliciti esterni con organizzazione file di origine formato Hive
Utilizzare la procedura DBMS_CLOUD.CREATE_EXTERNAL_TABLE per creare una tabella esterna partizionata implicita dai dati nell'area di memorizzazione degli oggetti generati dai dati Hive.
I file di origine di esempio nell'esempio seguente utilizzano il seguente formato di denominazione:
OBJBUCKET/<table>/<partcol1>=<value1>/<partcol2>=<value2>/file.parquet
Considerare i seguenti file di origine di esempio:
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
Per creare una tabella esterna partizionata implicita con i dati memorizzati in questo formato Hive di esempio, effettuare le operazioni riportate di seguito.
- Ottimizza pianificazione query area di memorizzazione oggetti con l'opzione strict_column_order
Quando una query si rivolge a una cartella dell'area di memorizzazione degli oggetti con un numero molto elevato di file e sottocartelle, la fase di pianificazione ed elenco può diventare il costo principale prima che i dati vengano effettivamente scansionati. Questo è comune con i layout delle cartelle in stile Hive in cui i valori delle partizioni sono incorporati nel percorso.
Argomento padre: Query di tabelle esterne con partizionamento implicito
Ottimizza la pianificazione delle query dell'area di memorizzazione degli oggetti con l'opzione strict_column_order
Quando una query si rivolge a una cartella object-store con un numero molto elevato di file e sottocartelle, la fase di pianificazione e quotazione può diventare il costo principale prima che i dati vengano effettivamente scansionati. Questo è comune con i layout delle cartelle in stile Hive in cui i valori delle partizioni sono incorporati nel percorso.
-
L'impostazione
strict_column_orderè disabilitata per impostazione predefinita. Abilita solo se il layout del percorso è coerente. -
Se le convenzioni delle cartelle cambiano, ad esempio aggiungendo, rimuovendo o riordinando le colonne delle partizioni, è necessario aggiornare l'opzione
partition_columnse potrebbe essere necessario disabilitare questa opzione.
Abilitare l'opzione strict_column_order come indicato di seguito.
Se i dati utilizzano percorsi partizionati in stile Hive e le colonne di partizione vengono sempre visualizzate in un ordine fisso e coerente senza segmenti mancanti, abilitare l'ottimizzazione in base alla seguente impostazione:
strict_column_order = true (with partition_type = "hive")Il database può saltare le directory non necessarie seguendo l'ordine delle partizioni già definite. Ciò significa che non è necessario elencare ogni singolo oggetto, il che può accelerare notevolmente i tempi di pianificazione per set di dati di grandi dimensioni.
Note per l'utilizzo dell'opzione strict_column_order:
-
I percorsi seguono la denominazione e l'ordine Hive, ad esempio:
.../country=US/year=2025/month=09/... -
Le colonne di partizione mantengono un set e una sequenza fissi, senza riordini o prefissi saltati.
- È necessario ottimizzare l'elenco plan-time per le cartelle contenenti un numero molto elevato di oggetti.
- Impossibile utilizzare questa opzione nei set di dati in cui non sono presenti tutti i prefissi. Ad esempio, alcune cartelle includono year=, mentre altre iniziano con month=).
Esempi: utilizzare l'opzione strict_column_order per le partizioni Hive-Style 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;
/
Verificare che la logica di pianificazione evita di elencare percorsi di livello superiore non correlati (ad esempio percorsi appartenenti ad altri paesi o anni):
- Eseguire una query selettiva che vincola le partizioni iniziali, ad esempio:
conSELECT COUNT(*) FROM sales_xt WHERE country = ''US'' AND year = 2025;
.strict_column_order = true - Se le ipotesi di layout non vengono soddisfatte, disabilitare l'opzione e riprovare.
Interroga dati stile non Hive partizionati impliciti esterni
Utilizzare la procedura DBMS_CLOUD.CREATE_EXTERNAL_TABLE per creare una tabella esterna partizionata implicita dai dati nello storage degli oggetti generati da dati non Hive.
I file di origine di esempio nell'esempio seguente utilizzano il seguente formato di denominazione:
OBJBUCKET/<table>/<value1>/<value2>/file.parquet
Considerare i seguenti file di origine di esempio:
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
Per creare una tabella esterna partizionata implicita con i dati memorizzati in questo formato Hive di esempio, effettuare le operazioni riportate di seguito.
Argomento padre: Query di tabelle esterne con partizionamento implicito