Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

SQL with pipe syntax can also do functions like that. An sequence of pipe operators can be saved as a table-valued function, and then reused by invoking in other queries with CALL.

Example:

  CREATE TEMP TABLE FUNCTION ExtendDates(input ANY TABLE, num_days INT64)
  AS
  FROM input
  |> EXTEND date AS original_date
  |> EXTEND max(date) OVER () AS max_date
  |> JOIN UNNEST(generate_array(0, num_days - 1)) diff_days
  |> SET date = date_add(date, INTERVAL diff_days DAY)
  |> WHERE date <= max_date
  |> SELECT * EXCEPT (max_date, diff_days);

  FROM Orders
  |> RENAME o_orderdate AS date, o_custkey AS user_id
  |> CALL ExtendDates(7)
  |> LIMIT 10;
from the script here: https://github.com/google/zetasql/blob/master/zetasql/exampl...


Oh nice! Thanks for setting that straight. Apologies, I must have either missed that or forgotten about it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: