PRESTOで、 CREATE TABLE実行時に、タイムスタンプ項目があると、エラー になリます。
クエリを書いていて、何度か同じ現象に悩まされることがあったので、対処方法をメモしておきます。
※2019/10/1追記 PRESTO/hiveを利用した場合は上記問題は起こりません。
やりたい事
CREATE TABLE実行時にタイムスタンプ項目のフォーマットを変更してエラー回避する
サンプルコード
DROP TABLE IF EXISTS temp_tbl1;
CREATE TABLE temp_tbl1
AS
SELECT
id
, target_date
-- DATE_FORMAT関数でレイアウトをVARCHARに変換する→これでCREATE TABLEのエラーを回避可能
, DATE_FORMAT(target_date_to_1week, '%Y-%m-%d %H:%i:%s') AS target_date_to_1week
FROM
(
SELECT
id
, target_date
-- DATE_ADDで1週間後の日時を取得する場合、このアウトプットはタイムスタンプ項目になる
, DATE_ADD('week', 1, CAST(target_date AS TIMESTAMP)) AS target_date_to_1week
FROM
table
)