Amazon Athena のデータ型
CREATE TABLE を実行するときは、列名と、各列に含めることができるデータ型を指定します。Athena は、以下のデータ型をサポートします。Athena、JDBC、および Java 間で JDBC ドライバーがサポートするデータ型マッピングについては、「JDBC ドライバーのインストールおよび設定ガイド」の「データ型
-
tinyint
– 2 の補数形式の 8 ビット符号付き整数で、最小値は -27、最大値は 27-1 です。 -
smallint
– 2 の補数形式の 16 ビット符号付き整数で、最小値は -215、最大値は 215-1 です。 -
int
およびinteger
– Athena では、クエリのタイプに応じて整数用に異なる式を使用します。-
int
–CREATE TABLE
のようなデータ定義言語 (DDL) クエリでは、int
のデータ型を使用します。 -
integer
–SELECT * 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 ステートメントでfloat
、SELECT CAST
のような SQL 関数でreal
を使用します。AWS Glue クローラはfloat
で値を返し、Athena はreal
型とfloat
型を内部で変換します (2018 年 5 月 6 日 リリースノートを参照)。 -
decimal
(
–precision
,scale
)
は桁の合計数で、precision
(オプション) は小数点以下の桁数です (デフォルトは 0)。例えば、scale
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
にキャストします。 -
date
–
などの ISO 形式の日付です。例えば、YYYY
-MM
-DD
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
>例
CREATE TABLE table array_table (c1 array<integer>) LOCATION '...'; INSERT INTO array_table values(ARRAY[1,2,3]);
-
map
<
— 指定されたコンポーネント型間のマッピング。primitive_type
,data_type
>例
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
[commentcol_comment
] ,...
>例
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));