概要
AthenaやRedshift SpectrumからS3ファイルに対してクエリする際にテーブル定義をGlueデータカタログに登録するかと思いますが、その際のカラムのデータ型にdecimalを指定する際の注意点についてです。
事象
カラムのデータ型の指定でdecimal(10, 5)
のようにprecisionとscaleの間に空白を入れると、Athenaからのクエリでは以下のようなエラーが出ます。
HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: Error: name expected at the position 11 of 'decimal(10, 5)' but ' ' is found.
ちなみにRedshift Spectrumからのクエリではエラーは出ません。
解決策
上記のエラー文からもわかるように空白がエラー原因となっているため、空白を無くしdecimal(10,5)
のようにすれば問題ありません。
Prestoの仕様なんでしょうね。。