テーブル、データベース、および列の名前
Athena でのアイテムの命名には、以下のヒントを使用してください。
Athena のテーブル名とテーブルの列名に小文字を使用する
Athena では大文字と小文字の DDL クエリと DML クエリを受け入れますが、クエリを実行するときの名前は小文字になります。このため、テーブル名や列名で大文字と小文字を混在させることは避け、そのような名前を区別するために、大文字と小文字の区別だけに依存しないでください。例えば、DDL ステートメントを使用して Castle
という名前の列を作成する場合、作成される列は小文字で castle
になります。また、DML クエリで列名を Castle
または CASTLE
に指定すると、Athena はクエリを実行する際の名前を小文字にし、クエリで選択した大文字と小文字を使用して列見出しを表示します。
データベース、テーブル、および列名は 255 文字以下である必要があります。
特殊文字
アンダースコア (_) を除く特殊文字はサポートされていません。詳細については、Apache Hive LanguageManual DDL
アンダースコアを除く特殊文字を含むテーブル、ビュー、データベース、または列の名前は、バックティック (`) 文字で囲むことで作成できますが、それを参照する後続の DDL または DML クエリは失敗する可能性があります。
アンダースコアで始まる名前
テーブルを作成するときは、アンダースコアで始まるテーブル名、ビュー名、または列名はバックティックで囲みます。以下に例を示します。
CREATE EXTERNAL TABLE IF NOT EXISTS `_myunderscoretable`( `_id` string, `_index` string) LOCATION 's3://my-athena-data/'
数字で始まるテーブル、ビュー、または列の名前
SELECT
、CTAS
、または VIEW
クエリを実行するときは、数字で始まるテーブル名、ビュー名、または列名といった識別子を引用符で囲みます。以下に例を示します。
CREATE OR REPLACE VIEW "123view" AS SELECT "123columnone", "123columntwo" FROM "234table"
列名と複合型
複合型の場合、列名には、英数字、アンダースコア(_
)、ピリオド (.
) のみが使用可能です。カスタム DDL ステートメントを使用すると、テーブルとキーのマッピングの作成に使用する文字を制限できます。詳細については、AWS ビッグデータブログの「JSONSerDe によるマッピングを使って、入れ子の JSON から Amazon Athena のテーブルを作成する
予約語
Athena の特定の予約語は、エスケープする必要があります。DDL ステートメントで予約キーワードをエスケープするには、バックティック (`) で囲みます。SQL の SELECT
ステートメントや ビュー のクエリで予約キーワードをエスケープするには、二重引用符 ('') で囲みます。
詳細については、「予約キーワード」を参照してください