Amazon Athena のデータ型 - Amazon Athena

Amazon Athena のデータ型

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

  • boolean – 値は truefalse です。

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

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

  • int および integer – Athena では、クエリのタイプに応じて整数用に異なる式を使用します。

    • intCREATE TABLE のようなデータ定義言語 (DDL) クエリでは、int のデータ型を使用します。

    • integerSELECT * FROM のような DML クエリでは、integer のデータ型を使用します。integer は 2 の補数形式の 32 ビット符号付き値で表され、その最小値は -231、最大値は 231-1です。

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

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

  • double – 64 ビットの符号付き倍精度浮動小数点数です。これは、4.94065645841246544e-324d から 1.79769313486231570e+308d の範囲の正または負の値です。double は、IEEE Standard for Floating-Point Arithmetic (IEEE 754) に準拠しています。

  • float – 32 ビットの符号付き単精度浮動小数点数です。これは、1.40129846432481707e-45 から 3.40282346638528860e+38 の範囲の正または負の値です。floatは、IEEE Standard for Floating-Point Arithmetic (IEEE 754) に準拠しています。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) のタイプ定義を使用します。precision の最大値は 38 で、scale の最大値も 38 です。

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

  • array<data_type> — 指定されたコンポーネント型の配列。

    [Example] (例)

    CREATE TABLE table array_table (c1 array<integer>) LOCATION '...'; INSERT INTO array_table values(ARRAY[1,2,3]);
  • map<primitive_type, data_type> — 指定されたコンポーネント型間のマッピング。

    [Example] (例)

    CREATE TABLE map_table(c1 map<string, integer>) LOCATION '...'; INSERT INTO map_table values(MAP(ARRAY['foo', 'bar'], ARRAY[1, 2]));
  • struct<col_name : data_type [comment col_comment] , ...> — 異なるコンポーネント型の要素の集合。

    [Example] (例)

    CREATE TABLE struct_table(c1 struct<name:varchar(10), age:integer>) LOCATION '...'; INSERT INTO struct_table SELECT CAST(ROW('Bob', 38) AS ROW(name VARCHAR(10), age INTEGER));