Externe Tabellen mit impliziter Partitionierung abfragen
In der autonomen KI-Datenbank können Sie implizite partitionierte externe Tabellen aus partitionierten Daten im Hive-Stil oder aus partitionierten Daten aus einfachen Ordnern erstellen, die in Ihrem Cloud-Objektspeicher gespeichert sind.
- Info zu externen Tabellen mit impliziter Partitionierung
Verwenden Sie in einer autonomen KI-Datenbank die ProzedurDBMS_CLOUD.CREATE_EXTERNAL_TABLE, um implizite partitionierte externe Tabellen aus partitionierten Daten im Hive-Stil oder aus partitionierten einfachen Ordnern zu erstellen, die in Ihrem Cloud-Objektspeicher gespeichert sind. - Externe implizite partitionierte Daten mit der Quelldateiorganisation im Hive-Format abfragen
Mit der ProzedurDBMS_CLOUD.CREATE_EXTERNAL_TABLEkönnen Sie eine implizite partitionierte externe Tabelle aus Daten im Objektspeicher erstellen, die aus Hive-Daten generiert wurden. - Externe implizite partitionierte Nicht-Hive-Stildaten abfragen
Mit der ProzedurDBMS_CLOUD.CREATE_EXTERNAL_TABLEkönnen Sie eine implizite partitionierte externe Tabelle aus Daten im Objektspeicher erstellen, die aus Nicht-Hive-Daten generiert wurden.
Übergeordnetes Thema: Externe Daten mit autonomer KI-Datenbank abfragen
Externe Tabellen mit impliziter Partitionierung
Verwenden Sie in der autonomen KI-Datenbank die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_TABLE, um implizite partitionierte externe Tabellen aus partitionierten Daten im Hive-Stil oder aus partitionierten Daten aus einfachen Ordnern zu erstellen, die in Ihrem Cloud-Objektspeicher gespeichert sind.
Durch die Übergabe der entsprechenden Optionen an diese Prozedur werden die Partitionen aus den Quelldaten abgeleitet. Die partitionierten externen Tabellen unterstützen die Laufzeit-Discovery von Partitionsspalten und deren Werten. Die Laufzeit-Discovery von Änderungen in der zugrunde liegenden Objektspeicherstruktur, wie das Hinzufügen oder Entfernen von Objekten, vereinfacht den Verwaltungsprozess, indem zusätzliche Synchronisierungsprozeduren, die für DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE erforderlich sind, vermieden werden. Dadurch wird sichergestellt, dass die Daten zur Abfragelaufzeit auf dem neuesten Stand sind.
Bei der impliziten Partitionierung bestimmt die autonome KI-Datenbank automatisch die Spalten, auf denen eine Tabelle "partitioniert" wird, basierend auf der hierarchischen Dateistruktur der Objektspeicherquelle. Ein Partitionierungsschema muss nicht explizit deklariert werden. Die implizite Partitionierung bietet Vorteile für die Partitionierungstabellen, ohne dass explizit eine partitionierte externe Tabelle mit der Prozedur DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE definiert werden muss.
Um die Abfrageantwortzeit für Abfragen mit sehr großen Datasets mithilfe der impliziten Partitionierung zu optimieren, können Sie die Optimierung aktivieren, indem Sie strict_column_order auf "true" setzen. Der Parameter strict_column_order ist eine Unteroption der Formatoption implicit_partition_config. Diese Optimierung gilt nur, wenn partition_type hive ist. See Query External Implicit Partitioned Data with Hive Format Source File Organization for an example and DBMS_CLOUD Package Format Options for more information on the implicit partitioning format parameters.
Implizite partitionierte externe Tabellen unterstützen die folgenden Benennungsstile für partitionierte Objekte im Objektspeicher:
- Hive-Benennungsformat: Daten im Objektspeicher, die von Hive generiert wurden, haben das folgende Format.
OBJBUCKET/<table>/<partcol1>=<value1>/<partcol2>=<value2>/file.parquetEin Beispiel finden Sie unter Externe implizite partitionierte Daten mit Quelldateiorganisation im Hive-Format abfragen.
- Nicht-Hive-Benennungsformat "Pathtail": Ein zweites Format, das häufig in Data Lakes gefunden wird, ähnelt dem Hive-Format, aber der Ordnername enthält nicht die Partitionsspalten.
OBJBUCKET/<table>/<value1>/<value2>/file.parquetEin Beispiel finden Sie unter Externe implizite partitionierte Nicht-Hive-Stildaten abfragen.
Weitere Informationen zu Benennungsformaten finden Sie unter Informationen zu externen Tabellen mit der Partitionierung von Quelldateien.
DBMS_CLOUD.CREATE_EXTERNAL_TABLE können implizite partitionierte externe Tabellen wie folgt erstellt werden:
- Implizite Partitionierung optimieren Verwenden Sie die Option
implicit_partition_config, um die implizite Partitionierung und Optimierung der verstrichenen Abfragezeit zu aktivieren.In diesem Beispiel wird die implizite Partitionierung aktiviert, indem
partition_typeauf "hive" gesetzt wird. Der einzige gültige Wert fürpartition_typeist hive. Die Optimierung wird aktiviert, indemsetting strict_column_orderauf "true" gesetzt wird. Die Optionpartition_columnsgibt an, welche Spalten partitioniert sind.Beispiel:
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; / - Partitionstyp mit einer bestimmten Liste von Partitionsspalten auf "Hive" setzen
In diesem Fall ist
implicit_partition_typeaufhivegesetzt, undimplicit_partition_columnsstellt eine Liste der Partitionsspalten bereit.Beispiel:
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; / - Partitionstyp auf "hive" setzen, ohne eine Liste der Partitionsspalten anzugeben
In diesem Fall wird
implicit_partition_typeaufhivegesetzt, undimplicit_partition_columnswird nicht angegeben. Die Partitionsspalten werden automatisch erkannt, indem Sie in dem vonfile_uri_listangegebenen Pfad nach "=" suchen. Diecolumn_namebefindet sich links von "=", und der Wert befindet sich auf der rechten Seite. Wenn einecolumn_nameim Pfad nicht gefunden wird, wird ein Fehler ausgelöst.Beispiel:
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; / - Geben Sie eine Liste der Partitionsspalten an, ohne den Typ anzugeben
In diesem Fall ist
implicit_partition_typenicht festgelegt, undimplicit_partition_columnsstellt eine Liste mit Spalten bereit.Beispiel:
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; /
Weitere Informationen finden Sie unter Externe implizite partitionierte Daten mit Quelldateiorganisation im Hive-Format abfragen und Prozedur CREATE_EXTERNAL_TABLE.
Übergeordnetes Thema: Externe Tabellen mit impliziter Partitionierung abfragen
Externe implizite partitionierte Daten mit Quelldatei-Organisation im Hive-Format abfragen
Verwenden Sie die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_TABLE, um eine implizite partitionierte externe Tabelle aus Daten im Objektspeicher zu erstellen, die aus Hive-Daten generiert wurden.
Die Beispielquelldateien im folgenden Beispiel verwenden das folgende Benennungsformat:
OBJBUCKET/<table>/<partcol1>=<value1>/<partcol2>=<value2>/file.parquet
Beachten Sie die folgenden Beispielquelldateien:
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
Um eine implizite partitionierte externe Tabelle mit Daten zu erstellen, die in diesem Hive-Beispielformat gespeichert sind, gehen Sie wie folgt vor:
- Objektspeicherabfrageplanung mit der Option strict_column_order optimieren
Wenn eine Abfrage auf einen Objektspeicherordner mit einer sehr großen Anzahl von Dateien und Unterordnern abzielt, kann die Planungs- und Auflistungsphase zu den primären Kosten werden, bevor Daten tatsächlich gescannt werden. Dies ist bei Ordnerlayouts im Hive-Stil üblich, bei denen Partitionswerte in den Pfad eingebettet sind.
Übergeordnetes Thema: Externe Tabellen mit impliziter Partitionierung abfragen
Optimierung der Objektspeicherabfrageplanung mit der Option strict_column_order
Wenn eine Abfrage auf einen Objektspeicherordner mit einer sehr großen Anzahl von Dateien und Unterordnern abzielt, kann die Planungs- und Auflistungsphase zu den primären Kosten werden, bevor Daten tatsächlich gescannt werden. Dies ist bei Ordnerlayouts im Hive-Stil üblich, bei denen Partitionswerte in den Pfad eingebettet sind.
-
Die Einstellung
strict_column_orderist standardmäßig deaktiviert. Aktivieren Sie diese Option nur, wenn das Pfadlayout konsistent ist. -
Wenn sich die Ordnerkonventionen ändern (z. B. Hinzufügen, Entfernen oder Neuanordnen von Partitionsspalten), müssen Sie die Option
partition_columnsaktualisieren und diese Option möglicherweise deaktivieren.
Aktivieren Sie die Option strict_column_order wie folgt:
Wenn Ihre Daten partitionierte Pfade im Hive-Stil verwenden und die Partitionsspalten immer in einer festen, konsistenten Reihenfolge ohne fehlende Segmente angezeigt werden, aktivieren Sie die Optimierung mit der folgenden Einstellung:
strict_column_order = true (with partition_type = "hive")Die Datenbank kann unnötige Verzeichnisse überspringen, indem sie die Reihenfolge der bereits definierten Partitionen befolgt. Dies bedeutet, dass nicht jedes einzelne Objekt aufgelistet werden muss, was die Planungszeit für große Datensätze erheblich verkürzen kann.
Hinweise zur Verwendung der Option strict_column_order:
-
Pfade folgen der Benennung und Reihenfolge von Hive. Beispiel:
.../country=US/year=2025/month=09/... -
Die Partitionsspalten behalten eine feste Menge und Sequenz bei, ohne dass Präfixe neu angeordnet oder übersprungen werden.
- Sie müssen die Planzeitauflistung für Ordner optimieren, die eine sehr große Anzahl von Objekten enthalten.
- Sie können diese Option nicht in Datasets verwenden, in denen nicht alle Präfixe vorhanden sind. Zum Beispiel enthalten einige Ordner Jahr=, während andere mit Monat= beginnen.
Beispiele: Verwenden Sie die Option strict_column_order für Partitionen im Hive-Stil mit 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;
/
Vergewissern Sie sich, dass die Planungslogik die Auflistung nicht zugehöriger Pfade der obersten Ebene vermeidet (z.B. Pfade, die zu anderen Ländern oder Jahren gehören):
- Führen Sie eine selektive Abfrage aus, die führende Partitionen einschränkt. Beispiel:
mitSELECT COUNT(*) FROM sales_xt WHERE country = ''US'' AND year = 2025;
.strict_column_order = true - Wenn die Layoutannahmen nicht erfüllt sind, deaktivieren Sie die Option, und wiederholen Sie den Vorgang.
Externe implizite partitionierte Nicht-Hive-Formatdaten abfragen
Verwenden Sie die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_TABLE, um eine implizite partitionierte externe Tabelle aus Daten im Objektspeicher zu erstellen, die aus Nicht-Hive-Daten generiert wurden.
Die Beispielquelldateien im folgenden Beispiel verwenden das folgende Benennungsformat:
OBJBUCKET/<table>/<value1>/<value2>/file.parquet
Beachten Sie die folgenden Beispielquelldateien:
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
Um eine implizite partitionierte externe Tabelle mit Daten zu erstellen, die in diesem Hive-Beispielformat gespeichert sind, gehen Sie wie folgt vor:
Übergeordnetes Thema: Externe Tabellen mit impliziter Partitionierung abfragen