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_TABLE
kö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_TABLE
kö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.parquet
Ein 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.parquet
Ein 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_type
auf "hive" gesetzt wird. Der einzige gültige Wert fürpartition_type
ist hive. Die Optimierung wird aktiviert, indemsetting strict_column_order
auf "true" gesetzt wird. Die Optionpartition_columns
gibt 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_type
aufhive
gesetzt, undimplicit_partition_columns
stellt 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_type
aufhive
gesetzt, undimplicit_partition_columns
wird nicht angegeben. Die Partitionsspalten werden automatisch erkannt, indem Sie in dem vonfile_uri_list
angegebenen Pfad nach "=" suchen. Diecolumn_name
befindet sich links von "=", und der Wert befindet sich auf der rechten Seite. Wenn einecolumn_name
im 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_type
nicht festgelegt, undimplicit_partition_columns
stellt 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_order
ist 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_columns
aktualisieren 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