Я бы подошел к этому только путем генерации массива даты для необходимых значений на строку :
WITH t AS (
SELECT DATE '2018-01-21' date, 1516492800 timeStamp, 0.44013312375 score UNION ALL
SELECT '2018-01-22', 1516579200, 0.3821605743 UNION ALL
SELECT '2018-01-24', 1516752000, 0.3397971282666667
)
SELECT dte,
UNIX_SECONDS(TIMESTAMP(dte)) AS timeStamp,
t.score
FROM (SELECT t.*, DATE_ADD(LEAD(date) OVER (ORDER BY date), INTERVAL -1 day) as to_date
FROM t
) t CROSS JOIN
UNNEST(GENERATE_date_ARRAY(date, COALESCE(to_date, date))) dte
ORDER BY dte ;
Я почти уверен, что это имеет лучшие характеристики производительности при больших объемах данных , На самом деле я вчера предложил такой подход коллеге, пытающейся ускорить один из ее запросов.