Amazon Athena のデータ型 - Amazon Athena

Amazon Athena のデータ型

CREATE TABLE を実行するときは、列名と、各列に含めることができるデータ型を指定します。Athena は、以下のデータ型をサポートします。Athena、JDBC、および Java 間で JDBC ドライバーがサポートするデータ型マッピングについては、JDBC Driver Installation and Configuration Guide の「Data Types」を参照してください。Athena および SQL 間で ODBC ドライバーがサポートするデータ型マッピングについては、ODBC Driver Installation and Configuration Guide の「Data Types」を参照してください。

  • BOOLEAN – 値は truefalse です。

  • TINYINT – 2 の補数形式の 8 ビット符号付き INTEGER で、最小値は -27、最大値は 27-1 です。

  • SMALLINT – 2 の補数形式の 16 ビット符号付き INTEGER で、最小値は -215、最大値は 215-1 です。

  • INT および INTEGER – 以下の通り、Athena は 2 つの異なる整数データ型の実装を組み合わせます。

    • INT – データ定義言語 (DDL) クエリでは、Athena が INT データ型を使用します。

    • INTEGER – DML クエリでは、Athena が INTEGER データ型を使用します。INTEGER は 2 の補数形式の 32 ビット符号付き値で表され、最小値は -231、最大値は 231-1です。

      • ビジネス分析アプリケーションとの互換性を確保するため、JDBC ドライバーは INTEGER 型を返します。

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

  • DOUBLE – 64 ビットの倍精度浮動小数点数です。

  • FLOAT – 32 ビットの単精度浮動小数点数です。Presto の REAL に相当します。Athena では、CREATE TABLE のような DDL ステートメントで FLOATSELECT CAST のような SQL 関数で REAL を使用します。AWS Glue クローラは FLOAT で値を返し、Athena は REAL 型と FLOAT 型を内部で変換します (2018 年 5 月 6 日 リリースノートを参照)。

  • DECIMAL(precision, scale)precision は桁の合計数で、scale (オプション) は小数点以下の桁数です (デフォルトは 0)。例えば、DECIMAL(11,5)DECIMAL(15) といった型定義を使用します。

    クエリ DDL 式で特定の小数値を含む行を選択する場合など、小数値をリテラルとして指定するには、DECIMAL 型の定義を指定し、クエリ内で小数値をリテラル (一重引用符) としてリストします。これは、decimal_value = DECIMAL '0.12' のようになります。

  • CHAR – 固定長の文字データです。char(10) のように、1 から 255 の長さを指定します。詳細については、CHAR Hive データ型を参照してください。

    注記

    substr 関数を使用して CHAR データ型から指定された長さの部分文字列を返すには、以下の例のように、まず CHAR 値を VARCHAR としてキャストする必要があります。

    substr(cast(col1 as varchar), 1, 4)
  • VARCHAR – 可変長の文字データです。varchar(10) のように、1 から 65535 の長さを指定します。詳細については、VARCHAR Hive データ型を参照してください。

  • STRING – 一重引用符または二重引用符で囲まれた文字列リテラルです。詳細については、STRING Hive データ型を参照してください。

    注記

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

  • BINARY – Parquet のデータに使用されます。

  • DATEYYYY-MM-DD などの ISO 形式の日付です。例えば、 。DATE '2008-09-15'例外として、1970 年 1 月 1 日以降の経過日数を使用する OpenCSVSerDe があります。詳細については、「CSV を処理するための OpenCSVSerDe」を参照してください。

  • TIMESTAMP - yyyy-MM-dd HH:mm:ss[.f...] など、最小分解能をミリ秒単位までとする java.sql.Timestamp 互換形式での日付と時刻のインスタントです。例えば、 。TIMESTAMP '2008-09-15 03:04:05.324'例外として、UNIX の数値形式 (1579059880000 など) の TIMESTAMP データを使用する OpenCSVSerDe があります。詳細については、「CSV を処理するための OpenCSVSerDe」を参照してください。

  • ARRAY<data_type>

  • MAP<primitive_type, data_type>

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