CREATE TABLE - Amazon Athena

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

CREATE TABLE

指定した名前とパラメータでテーブルを作成します。

Synopsis

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], ...)] [ROW FORMAT row_format] [STORED AS file_format] [WITH SERDEPROPERTIES (...)] ] [LOCATION 's3://bucket_name/[folder]/'] [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]

Parameters

[EXTERNAL]

Amazon S3 内の基になるデータファイルに基づくテーブルを、指定した LOCATION に作成することを指定します。外部テーブルを作成する場合、参照先のデータはデフォルト形式に準拠しているか、ユーザーが ROW FORMATSTORED AS、および WITH SERDEPROPERTIES で指定する形式に準拠している必要があります。

IF NOT EXISTS

table_name という名前のテーブルが既に存在している場合は、エラーメッセージを抑制します。

[db_name.]table_name

作成するテーブルの名前を指定します。オプションの db_name パラメータは、テーブルを作成する先のデータベースを指定します。この引数を省略すると、現在のデータベースが使用されます。テーブル名に数字が含まれる場合は、 table_name たとえば、 "table123"。 次の場合: table_name アンダースコアで始まり、バックティックを使用します。たとえば、 `_mytable`。 特殊文字(アンダースコア以外)はサポートされていません。

Athena のテーブル名では大文字と小文字が区別されません。ただし、Apache Spark を使用する場合は、テーブル名を小文字にする必要があります。

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

作成する各列の名前とデータ型を指定します。列名にアンダースコア以外の特殊文字は使用できません (_)。 次の場合: col_name はアンダースコアで始まり、列名をバックティックで囲みます。たとえば、 `_mycolumn`.

data_type 値には次のいずれかを指定できます。

  • BOOLEAN。 値は true および false.

  • TINYINT。 8ビット符号付き INTEGER -2^7 の最小値と 2^7-1 の最大値を持つ 2 つの補数形式。

  • SMALLINT。 16 ビットの符号付き INTEGER 2つの補数形式で表示され、最小値は-2^15、最大値は2^15-1です。

  • INT。Athena では、2 種類の異なる INTEGER データ型を組み合わせて実装しています。Athena では、データ定義言語 (DDL) クエリで、INT データ型を使用します。他のすべてのクエリでは、Athena は INTEGER データ型を使用します。ここで INTEGER は 2 の補数形式の 32 ビット符号付き値で表されます。最小値は -2^31、最大値は 2^31-1 です。JDBC ドライバーで、ビジネス分析アプリケーションとの互換性を保証するために、INTEGER が返ります。

  • BIGINT。2 の補数形式の 64 ビット符号付き INTEGER。最小値は -2^63、最大値は 2^63-1 です。

  • DOUBLE

  • FLOAT

  • DECIMAL [ (precision, scale) ]。ここで precision は桁の合計数であり、scale (オプション) は小数点以下の桁数です。デフォルトは 0 です。たとえば、次のタイプ定義を使用します。、。DECIMAL(11,5)DECIMAL(15).

    クエリ DDL 式で特定の小数値を持つ行を選択するときなど、小数値をリテラルとして指定するには、 DECIMAL 定義を入力し、次の例のように、クエリにリテラル(一重引用符)として小数点値をリストします。decimal_value = DECIMAL '0.12'.

  • CHAR。 固定長文字データ、1 ~ 255 の指定した長さ char(10)。 詳細については、以下を参照してください。 CHAR ハイブ データ タイプ.

  • VARCHAR。 可変長文字データ。1から65535までの長さが指定されています。例: varchar(10)。 詳細については、以下を参照してください。 VARCHAR ハイブ データ タイプ.

  • STRING。 一重引用符または二重引用符で囲まれた文字列リテラル。

    注記

    文字列以外のデータ型は、Athena で STRING にキャストすることができません。代わりに VARCHAR にキャストします。

  • BINARY (Parquet のデータ用)

  • 日付と時刻の型

  • DATE ISO 形式の日付。例: YYYY-MM-DD。 例えば、 DATE '2008-09-15'.

  • TIMESTAMP の即時日時 java.sql.Timestamp 互換性のある形式、例: yyyy-MM-dd HH:mm:ss[.f...]。 例えば、 TIMESTAMP '2008-09-15 03:04:05.324'。 この形式は、セッションのタイムゾーンを使用します。

  • ARRAY < data_type >

  • MAP < primitive_type, data_type >

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

[COMMENT table_comment]

comment テーブルプロパティを作成し、指定した table_comment を追加します。

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

col_namedata_type および col_comment が指定された 1 つ以上の列を持つ、パーティション分割されたテーブルを作成します。テーブルは、個別の列名と値の組み合わせで構成されるパーティションを 1 つ以上持つことができます。指定した組み合わせごとに別個のデータディレクトリが作成されます。これにより、クエリパフォーマンスが向上する場合があります。パーティション化された列はテーブルデータ内には存在しません。テーブル列と同じ col_name の値を使用する場合は、エラーになります。詳細については、「データのパーティション分割」を参照してください。

注記

パーティションを含むテーブルを作成した後、 MSCK修理表 パーティション メタデータを更新する句(例: MSCK REPAIR TABLE cloudfront_logs;。 Hive と互換性のないパーティションには、 ALTER TABLE ADD PARTITION パーティションをロードして、データをクエリできるようにします。

[ROW FORMAT row_format]

テーブルの行形式と基になるソースデータ (該当する場合) を指定します。row_format として、DELIMITED 句で 1 つ以上の区切り記号を指定できます。または、以下に説明するように、SERDE 句を使用できます。ROW FORMAT を省略するか、ROW FORMAT DELIMITED を指定すると、ネイティブ SerDe が使用されます。

  • [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]

    Hive 0.13 で、STORED AS ファイル形式が TEXTFILE である場合にのみ使用できます。

--または--

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

    serde_name は、使用する SerDe を示します。WITH SERDEPROPERTIES 句を使用すると、SerDe で許可される 1 つ以上のカスタムプロパティを指定できます。

[STORED AS file_format]

テーブルデータのファイル形式を指定します。省略すると、デフォルトの TEXTFILE が使用されます。file_format のオプションは以下のとおりです。

  • SEQUENCEFILE

  • TEXTFILE

  • RCFILE

  • ORC

  • PARQUET

  • AVRO

  • INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

[LOCATION 's3://bucket_name/[folder]/']

テーブルを作成する基となるデータがある Amazon S3 の場所を指定します。ロケーションパスは、バケット名、またはバケット名と 1 つ以上のフォルダである必要があります。パーティションを使用する場合は、パーティション分割されたデータのルートを指定します。テーブルのロケーションの詳細については、「Amazon S3 のテーブルの場所」を参照してください。データ形式とアクセス許可の詳細については、「Athena のテーブルと Amazon S3 のデータに関する要件」を参照してください。

フォルダやバケットの後にはスラッシュを使用します。ファイル名や glob 文字を使用しないでください。

使用アイテム:

s3://mybucket/

s3://mybucket/folder/

s3://mybucket/folder/anotherfolder/

使用不可:

s3://path_to_bucket

s3://path_to_bucket/*

s3://path_to-bucket/mydatafile.dat

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

定義済みのテーブルプロパティ ("comment" など) に加えて、テーブル定義のカスタムメタデータとしてキーと値のペアを指定します。

Athena 建物が備え付けられている has_encrypted_data。 このプロパティをに設定 true で指定した基礎となるデータセットを示します。 LOCATION 暗号化されています。省略するか、そのワークグループの設定がクライアント側の設定を上書きしない場合、false が設定されます。省略するか、false に設定して基になるデータを暗号化すると、クエリはエラーになります。詳細については「暗号化オプションの設定」を参照してください。

ETLジョブを実行するには、AWS Glueで classification AWS Glueのデータ型を示すプロパティを csvparquetorcavro、または json。 例えば、 'classification'='csv'。 このプロパティを指定しないと、ETLジョブは失敗します。AWS Glue コンソール、API、または CLI を使用して後で指定できます。詳細については、AWS Glue 開発者ガイドの「Athena における ETL 用の AWS Glue ジョブの使用」と「Glue でのジョブの作成」を参照してください。

Examples

CREATE EXTERNAL TABLE IF NOT EXISTS mydatabase.cloudfront_logs ( Date DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, os STRING, Browser STRING, BrowserVersion STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$" ) LOCATION 's3://athena-examples-myregion/cloudfront/plaintext/';