79254911

Date: 2024-12-05 13:46:50
Score: 0.5
Natty:
Report link

You can create a custom user-defined aggregation function (UDAFs), currently in preview:

CREATE OR REPLACE AGGREGATE FUNCTION `project.dataset.latest_non_null`(
  value STRING,
  some_timestamp INTEGER)
RETURNS STRING
AS (
  ANY_VALUE(value HAVING MAX if(value is null, null, some_timestamp))
);

SELECT
  a,
  project.dataset.latest_non_null(b, some_timestamp) AS latest_b,
  project.dataset.latest_non_null(c, some_timestamp) AS latest_c,
FROM
  foo
GROUP BY
  a

Output:

output

Reasons:
  • Probably link only (1):
  • Has code block (-0.5):
Posted by: Damião Martins