Exploreで例えば以下のようなMeasureを定義しています。
measure: count{
type:count_distinct
sql: CASE WHEN a_date <= b_date THEN id ELSE NULL END
}
a_date,b_dateどちらも元データがtimestampでtype:time型のdimension_groupを定義しており、date型を取り出して使用しています。
このcountメジャーをtimezone:Asia/Tokyoに設定したNDTで使用すると以下のようにSQLが変換されます。
COUNT(DISTINCT CASE WHEN
TIMESTAMP(FORMAT_TIMESTAMP('%F %H:%M:%E*S', FORMAT_TIMESTAMP('%Y-%m-%d', TIMESTAMP(FORMAT_TIMESTAMP('%F %H:%M:%E*S', a_date , 'Asia/Tokyo')))), 'Asia/Tokyo')
<= ( TIMESTAMP(FORMAT_TIMESTAMP('%F %H:%M:%E*S', FORMAT_TIMESTAMP('%Y-%m-%d', TIMESTAMP(FORMAT_TIMESTAMP('%F %H:%M:%E*S', b_date , 'Asia/Tokyo')))), 'Asia/Tokyo'))
THEN id END
) AS count
一度FORMAT_TIMESTAMPした指標に対して再度FORMAT_TIMESTAMPが動作し引数の型が合わないためエラーが発生してしまい、PDTの生成などに失敗してしまいます。(ExploreのRun自体はエラーが表示されていても実行できます。)
timezone:Asia/Tokyoを外せばFORMAT_TIMESTAMPは動作しないので問題ないですが、そうするとデータベースのタイムゾーン(UTC)で集計されてしまい、意図しない結果となります。
この問題に対処する方法はなにかありますでしょうか?