Shift.sql 1.6 KB

12345678910111213141516171819202122232425262728293031
  1. /* syntax version 1 */
  2. $check = ($arg) -> {
  3. return <|
  4. sh10y: CAST(DateTime::MakeTimestamp64(DateTime::ShiftYears($arg, 10)) as String),
  5. sh16q: CAST(DateTime::MakeTimestamp64(DateTime::ShiftQuarters($arg, 16)) as String),
  6. shm16q: CAST(DateTime::MakeTimestamp64(DateTime::ShiftQuarters($arg, -16)) as String),
  7. sh0m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, 0)) as String),
  8. sh1m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, 1)) as String),
  9. sh3m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, 3)) as String),
  10. sh11m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, 11)) as String),
  11. sh12m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, 12)) as String),
  12. sh123m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, 123)) as String),
  13. shm1m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, -1)) as String),
  14. shm3m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, -3)) as String),
  15. shm11m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, -11)) as String),
  16. shm12m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, -12)) as String),
  17. shm123m: CAST(DateTime::MakeTimestamp64(DateTime::ShiftMonths($arg, -123)) as String),
  18. |>
  19. };
  20. $typeDispatcher = ($row) -> {
  21. $tm = $row.tm;
  22. return <|
  23. explicit: $check(DateTime::Split($tm)),
  24. implicit: $check($tm),
  25. |>;
  26. };
  27. $input = SELECT CAST(ftimestamp64 as Timestamp64) as tm FROM Input;
  28. PROCESS $input USING $typeDispatcher(TableRow());