5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflakeで日時の増減の関数がSQLプッシュバックする

Last updated at Posted at 2023-12-19

SPSS Modeler18.5の新機能のdate_add_XX および time_add_XXの 日時関数で、年月日時分秒の増減のSQLプッシュバックが可能になりました。

Modeler18.4以前でもDB2などでは、DB関数を使ってSQLプッシュバックさせるという回避策がありましたが、Snowflakeではその回避策が無効でした。

この記事ではdate_add_XX および time_add_XXが、SnowflakeでもSQLプッシュバックが実行可能であることを確認しました。

image.png

  • テスト環境
    • Windows 11 64bit
    • Modeler 18.5
    • Snowflake ODBC ドライバー 2.25.2

元データ

以下のDATE型、TIMESTAMP型を持つテーブルをSnowflake上に準備しました。

image.png

time_add_seconds

time_add_seconds(40,@FIELD)でTIMESTAMP列に40秒加算します。

image.png

以下のように{fn TIMESTAMPADD(SECOND,40,T0.TS)}という関数に変換されました。

[2023-12-19 19:32:20] SQL をプレビュー中: 
SELECT T0."INT" AS "INT",T0."FLOAT" AS "FLOAT",T0.STR AS STR,T0."DATE" AS "DATE",T0.TS AS TS,T0."TIME" AS "TIME",
({fn TIMESTAMPADD(SECOND,40,T0.TS)}) AS "TS_Derive" 
FROM SFTESTS.TYPETEST T0

結果をみると、40秒分、増えていることがわかります。
image.png

date_add_days

date_add_days(15, @FIELD)で、DATE列とTIMESTAMP列に15日加算します。

image.png

以下のように、それぞれ
DATEADD(DAY,15,T0."DATE")
({fn TIMESTAMPADD(DAY,15,T0.TS)})
という関数に変換されました。

2023-12-19 19:38:09] SQL をプレビュー中: 
SELECT T0."INT" AS "INT",T0."FLOAT" AS "FLOAT",T0.STR AS STR,T0."DATE" AS "DATE",T0.TS AS TS,T0."TIME" AS "TIME",
DATEADD(DAY,15,T0."DATE") AS "DATE_Derive",
({fn TIMESTAMPADD(DAY,15,T0.TS)}) AS "TS_Derive" 
FROM SFTESTS.TYPETEST T0

結果をみると、15日分、増えていることがわかります。
image.png

参考

日付および時刻の関数 - IBM Documentation

DATEADD | Snowflake Documentation

TIMESTAMPADD | Snowflake Documentation

SPSS Modeler 18.5リリース #SPSS - Qiita

SPSS ModelerからSnowflakeに接続する(Nativeドライバー)

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?