CREATE TABLE - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CREATE TABLE

Erstellt eine Tabelle mit dem Namen und den Parametern, den bzw. die Sie angeben.

Anmerkung

Diese Seite enthält zusammenfassende Referenzinformationen. Weitere Informationen zum Erstellen von Tabellen in Athena und ein Beispiel für eine CREATE TABLE-Anweisung finden Sie unter Erstellen von Tabellen in Athena. Für ein Beispiel für das Erstellen einer Datenbank, das Erstellen einer Tabelle und das Ausführen einer SELECT-Abfrage auf dem Tisch in Athena siehe Erste Schritte.

Syntax

CREATE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [WITH SERDEPROPERTIES (...)] [LOCATION 's3://DOC-EXAMPLE-BUCKET/[folder]/'] [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]

Parameter

EXTERNAL

Gibt an, dass die Tabelle auf einer Datendatei basiert, die in Amazon S3 an dem von Ihnen angegebenen LOCATION vorhanden ist. Verwenden Sie außer beim Erstellen von Iceberg-Tabellen immer das EXTERNAL-Schlüsselwort. Wenn Sie CREATE TABLE ohne das EXTERNAL-Schlüsselwort für Nicht-Iceberg-Tabellen verwenden, gibt Athena einen Fehler aus. Wenn Sie eine externe Tabelle erstellen, müssen die referenzierten Daten mit dem Standardformat oder dem Format übereinstimmen, das Sie über die Klauseln ROW FORMAT, STORED AS und WITH SERDEPROPERTIES festlegen.

[IF NOT EXISTS]

Dieser Parameter prüft, ob bereits eine Tabelle mit demselben Namen vorhanden ist. Ist dies der Fall, gibt der Parameter TRUE zurück und Amazon Athena bricht die CREATE TABLE-Aktion ab. Da die Stornierung erfolgt, bevor Athena den Datenkatalog aufruft, wird kein AWS CloudTrail Ereignis ausgegeben.

[db_name.]table_name

Gibt einen Namen für die zu erstellende Tabelle an. Der optionale Parameter db_name gibt die Datenbank an, in der die Tabelle gespeichert ist. Ist nichts angegeben, wird von der aktuellen Datenbank ausgegangen. Schließen Sie table_name in Anführungszeichen ein, wenn der Tabellenname Zahlen enthält, zum Beispiel "table123". Wenn table_name mit einem Unterstrich beginnt, verwenden Sie Backticks, beispielsweise `_mytable`. Sonderzeichen (außer Unterstriche) werden nicht unterstützt.

Bei Athena-Tabellennamen wird die Groß-/Kleinschreibung berücksichtigt. Wenn Sie mit Apache Spark arbeiten, beachten Sie, dass Spark Tabellennamen in Kleinbuchstaben erfordert.

[ ( col_name data_type [COMMENT col_comment] [, ...] ) ]

Gibt den Datentyp und den Namen jeder zu erstellenden Spalten an. Spaltennamen lassen außer Unterstrichen (_) keine Sonderzeichen zu. Falls col_name mit einem Unterstrich beginnt, schließen Sie den Spaltennamen in Backticks ein, beispielsweise `_mycolumn`.

Beim Wert data_type kann es sich um den folgenden Typ handeln:

  • boolean – Die Werte sind true und false.

  • tinyint – Eine 8-Bit signierte Ganzzahl im Zweierkomplement-Format mit einem Mindestwert von -2^7 und einem Höchstwert von 2^7-1.

  • smallint – Eine 16-Bit signierte Ganzzahl im Zweierkomplement-Format mit einem Mindestwert von -2^15 und einem Höchstwert von 2^15-1.

  • int – Benutzen Sie in DDL-Abfragen (Data Definition Language) wie CREATE TABLE das int-Schlüsselwort, um eine Ganzzahl darzustellen. Verwenden Sie in anderen Abfragen das Schlüsselwort integer, wobei integer als 32-Bit-Wert mit Vorzeichen im Zweierkomplementformat mit einem Mindestwert von -2^31 und einem Höchstwert von 2^31-1 dargestellt wird. Im JDBC-Treiber wird integer zurückgegeben, um Kompatibilität mit den geschäftlichen Analyseanwendungen zu gewährleisten.

  • bigint – Eine 64-Bit signierte Ganzzahl im Zweierkomplement-Format mit einem Mindestwert von -2^63 und einem Höchstwert von 2^63-1.

  • double – Eine signierte 64-Bit-Gleitkommazahl mit doppelter Genauigkeit. Der Bereich liegt zwischen 4,94065645841246544e-324d bis 1,79769313486231570e+308d, positiv oder negativ. double folgt dem IEEE-Standard für Gleitkommaarithmetik (IEEE 754).

  • float – Eine signierte 32-Bit-Gleitkommazahl mit einfacher Genauigkeit. Der Bereich liegt zwischen 1,40129846432481707e-45 bis 3,40282346638528860e+38, positiv oder negativ. float folgt dem IEEE-Standard für Gleitkommaarithmetik (IEEE 754). Entspricht dem real in Presto. Verwenden Sie in Athena float in DDL-Anweisungen wie CREATE TABLE und real in SQL-Funktionen wie SELECT CAST. Der AWS Glue Crawler gibt Werte in zurückfloat, und Athena übersetzt real und float tippt intern (siehe 5. Juni 2018 Versionshinweise).

  • decimal [ (precision, scale) ], wobei precision die Gesamtanzahl der Stellen und scale (optional) die Anzahl der Nachkommastellen ist. Der Standardwert ist 0. Verwenden Sie z. B. diese Definitionen: decimal(11,5), decimal(15). Die maximale Wert der Genauigkeit ist 38 und der maximale Wert für die Skalierung beträgt 38.

    Um Dezimalwerte als Literale anzugeben, z. B. bei der Auswahl von Zeilen mit einem bestimmten Dezimalwert im DDL-Ausdruck einer Abfrage, legen Sie als Typdefinition decimal fest und listen Sie die Dezimalwerte als Literalwert (in einfachen Anführungszeichen) in Ihrer Abfrage auf, wie in diesem Beispiel: decimal_value = decimal '0.12'.

  • char – Zeichendaten mit fester Länge, die zwischen 1 und 255 Zeichen liegen muss, z. B char(10). Weitere Informationen finden Sie unter CHAR-Hive-Datentyp.

  • varchar – Zeichendaten mit variabler Länge, die zwischen 1 und 65535 Zeichen liegen muss, z. B varchar(10). Weitere Informationen finden Sie unter VARCHAR-Hive-Datentyp.

  • string – Ein Zeichenfolgenliteral, das in einfache oder doppelte Anführungszeichen eingeschlossen ist.

    Anmerkung

    Nicht-Zeichenfolgen-Datentypen können nicht zu string in Athena umgewandelt werden. Wandeln Sie sie stattdessen zu varchar um.

  • binary – (für Daten in Parquet)

  • date – Ein Datum im ISO-Format, z. B. YYYY-MM-DD. z. B. date '2008-09-15'. Eine Ausnahme ist OpenCSVSerDe, das die Anzahl der Tage verwendet, die seit dem 1. Januar 1970 vergangen sind. Weitere Informationen finden Sie unter OpenCSV SerDe für die Verarbeitung von CSV.

  • timestamp– Datum und Uhrzeit in einem java.sql.Timestamp-kompatiblen Format bis zu einer maximalen Auflösung von Millisekunden, wie yyyy-MM-dd HH:mm:ss[.f...]. z. B. timestamp '2008-09-15 03:04:05.324'. Eine Ausnahme ist OpenCSVSerDe, das TIMESTAMP Daten im numerischen UNIX-Format verwendet (zum Beispiel1579059880000). Weitere Informationen finden Sie unter OpenCSV SerDe für die Verarbeitung von CSV.

  • array < data_type >

  • map < primitive_type, data_type >

  • struct < col_name : data_type [COMMENT col_comment] [, ...] >

[COMMENT table_comment]

Erstellt die Tabelleneigenschaft comment und füllt diese mit dem von Ihnen angegebenen table_comment.

[PARTITIONED BY (col_name data_type [ COMMENT col_comment ], ... ) ]

Erstellt eine partitionierte Tabelle mit einer oder mehreren Partitionsspalten, bei denen col_name, data_type und col_comment angegeben sind. Eine Tabelle kann eine oder mehrere Partitionen umfassen. Diese bestehen aus einem eindeutigen Spaltennamen und einer Wertekombination. Für jede angegebene Kombination wird ein eigenes Datenverzeichnis erstellt. Dies kann die Abfrageleistung in einigen Fällen verbessern. In den Tabellendaten selbst sind keine partitionierten Spalten vorhanden. Wenn Sie einen Wert für col_name verwenden, der mit einer Tabellenspalte identisch ist, erhalten Sie einen Fehler. Weitere Informationen finden Sie auf der Seite zum Partitionieren von Daten.

Anmerkung

Nach dem Erstellen einer Tabelle mit Partitionen führen Sie eine weitere Abfrage aus, die aus der Klausel MSCK REPAIR TABLE besteht, um die Partitionsmetadaten aufzufrischen, beispielsweise MSCK REPAIR TABLE cloudfront_logs;. Verwenden Sie für Partitionen, die nicht Hive-kompatibel sind, ALTER TABLE ADD PARTITION zum Laden von Partitionen, sodass Sie die Daten abfragen können.

[CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS]

Unterteilt die Daten in den angegebenen col_name-Spalten mit oder ohne Partitionierung in Datenteilmengen, die als Buckets bezeichnet werden. Der num_buckets-Parameter gibt die Anzahl der zu erstellenden Buckets an. Bucketing kann die Leistung einiger Abfragen auf großen Datensätzen verbessern.

[ROW FORMAT row_format]

Gibt das Zeilenformat der Tabelle und deren zugrunde liegenden Quelldaten an, wenn zutreffend. Für row_format können Sie mit der Klausel DELIMITED ein oder mehrere Trennzeichen angeben, oder alternativ die Klausel SERDE verwenden, wie unten beschrieben. Wenn ROW FORMAT es weggelassen oder angegeben ROW FORMAT DELIMITED ist, SerDe wird ein systemeigener Wert verwendet.

  • [DELIMITED FIELDS TERMINATED BY char [ESCAPED BY char]]

  • [DELIMITED COLLECTION ITEMS TERMINATED BY char]

  • [MAP KEYS TERMINATED BY char]

  • [LINES TERMINATED BY char]

  • [NULL DEFINED AS char]

    Nur mit Hive 0.13 verfügbar und wenn das STORED AS-Dateiformat TEXTFILE ist.

--ODER--

  • SERDE 'serde_name' [WITH SERDEPROPERTIES ("property_name" = "property_value", "property_name" = "property_value" [, ...] )]

    Das serde_name gibt an SerDe , dass es verwendet werden soll. Die WITH SERDEPROPERTIES Klausel ermöglicht es Ihnen, eine oder mehrere benutzerdefinierte Eigenschaften anzugeben, die gemäß der zulässig sind SerDe.

[STORED AS Dateiformat]

Gibt das Dateiformat für Tabellendaten an. Wenn nichts angegeben ist, wird standardmäßig TEXTFILE verwendet. Optionen für file_format sind:

  • SEQUENCEFILE

  • TEXTFILE

  • RCFILE

  • ORC

  • PARQUET

  • AVRO

  • ION

  • INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

[STANDORT 's3://DOC-EXAMPLE-BUCKET/[folder]/']

Gibt den Speicherort der zugrunde liegenden Daten in Amazon S3 an, aus denen die Tabelle erstellt wurde. Der Speicherpfad muss ein Bucket-Name oder ein Bucket-Name sowie ein oder mehrere Ordner sein. Wenn Sie Partitionen verwenden, geben Sie den Stamm der partitionierten Daten an. Weitere Informationen zum Speicherort der Tabelle finden Sie unter Tabellenspeicherort in Amazon S3. Weitere Informationen zum Datenformat und zu den Berechtigungen finden Sie unter Voraussetzungen für Tabellen in Athena und Daten in Amazon S3.

Verwenden Sie einen abschließenden Schrägstrich für Ihren Ordner oder Bucket. Verwenden Sie keine Dateinamen oder glob-Zeichen.

Verwenden:

s3://DOC-EXAMPLE-BUCKET/

s3://DOC-EXAMPLE-BUCKET/folder/

s3://DOC-EXAMPLE-BUCKET/folder/anotherfolder/

Verwenden Sie nicht:

s3://DOC-EXAMPLE-BUCKET

s3://DOC-EXAMPLE-BUCKET/*

s3://DOC-EXAMPLE-BUCKET/mydatafile.dat

[TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='classification_value',] property_name=property_value [, ...] ) ]

Gibt zusätzlich zu den vordefinierten Tabelleneigenschaften wie "comment" benutzerdefinierte Schlüssel/Wert-Paare in Form von Metadaten für die Tabellendefinition an.

has_encrypted_data – Athena verfügt über eine integrierte Eigenschaft, has_encrypted_data. Setzen Sie diese Eigenschaft auf true, um anzugeben, dass das zugrunde liegende Dataset, das durch LOCATION festgelegt ist, verschlüsselt ist. Wenn dies ausgelassen wird und die Einstellungen der Arbeitsgruppe clientseitige Einstellungen nicht überschreiben, wird false angenommen. Wenn nichts angegeben oder die Eigenschaft auf false gesetzt ist, schlägt die Abfrage fehl, wenn die zugrunde liegenden Daten verschlüsselt sind. Weitere Informationen finden Sie unter Verschlüsselung im Ruhezustand.

Klassifizierung — Tabellen, die für Athena in der CloudTrail Konsole erstellt wurden, werden cloudtrail als Wert für die classification Eigenschaft hinzugefügt. Um ETL-Jobs auszuführen, AWS Glue müssen Sie eine Tabelle mit der classification Eigenschaft erstellen, den Datentyp für AWS Glue ascsv,, parquet orcavro, oder json anzugeben. z. B. 'classification'='csv'. ETL-Aufträge schlagen fehl, wenn Sie diese Eigenschaft nicht festlegen. Sie können diese nachträglich über AWS Glue -Konsole, die API oder die CLI angeben. Weitere Informationen finden Sie unter AWS Glue Jobs für ETL mit Athena verwenden und Authoring Jobs in AWS Glue im AWS Glue Developer Guide.

compression_level – Die Eigenschaft compression_level gibt die zu verwendende Komprimierungsstufe an. Diese Eigenschaft gilt nur für die ZSTD-Komprimierung. Mögliche Werte liegen zwischen 1 und 22. Der Standardwert ist 3. Weitere Informationen finden Sie unter Verwendung von ZSTD-Komprimierungsstufen in Athena.

Weitere Informationen zu anderen Tabelleneigenschaften finden Sie unter ALTER TABLE SET TBLPROPERTIES.

Beispiele

Die folgende CREATE TABLE Beispielanweisung erstellt eine Tabelle, die auf tabulatorgetrennten Planetendaten basiert, die in Amazon S3 gespeichert sind.

CREATE EXTERNAL TABLE planet_data ( planet_name string, order_from_sun int, au_to_sun float, mass float, gravity_earth float, orbit_years float, day_length float ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION 's3://DOC-EXAMPLE-BUCKET/tsv/'

Beachten Sie folgende Punkte:

  • Die ROW FORMAT DELIMITED Klausel gibt an, dass die Daten durch ein bestimmtes Zeichen begrenzt sind.

  • Die FIELDS TERMINATED BY '\t' Klausel gibt an, dass die Felder in den TSV-Daten durch das Tabulatorzeichen ('\ t') getrennt sind.

  • Die STORED AS TEXTFILE Klausel gibt an, dass die Daten als Klartextdateien in Amazon S3 gespeichert werden.

Um die Daten abzufragen, könnten Sie eine einfache SELECT Anweisung wie die folgende verwenden:

SELECT * FROM planet_data

Um das Beispiel zu verwenden, um Ihre eigene TSV-Tabelle in Athena zu erstellen, ersetzen Sie die Tabellen- und Spaltennamen durch die Namen und Datentypen Ihrer eigenen Tabelle und Spalten und aktualisieren Sie die LOCATION Klausel so, dass sie auf den Amazon S3 S3-Pfad verweist, in dem Ihre TSV-Dateien gespeichert sind.

Weitere Informationen zum Erstellen von Tabellen finden Sie unter Erstellen von Tabellen in Athena.