У меня есть таблица bigquery с датой, key_1 и key_2. В этом примере key_2 будет равен -1 для всех key_1, пока ему не будет присвоено какое-либо значение в будущем. Мое требование состоит в том, чтобы получить первое ненулевое (а не -1) значение key_2 для key_1 и заполнить его на оставшиеся дни, пока key_2 не изменит свое значение.
В этом примере key_2 равен -1 с 1 по 3 марта. Но он будет иметь значение (XYZ123) 4 марта. Я должен заполнить XYZ123 с 1 по 3 марта. И тогда key_2 становится PGQ123 7 марта. Это не -1 или ноль, поэтому мне нужно заполнить PGQ123 с 7 марта.
Это мой вклад:
И это результат, который я ожидаю.
Вы можете рассмотреть ниже.
SELECT *,
LAST_VALUE(
IF(key_2 = '-1', NULL, key_2) IGNORE NULLS
) OVER w AS key_2_populated
FROM sample_table
WINDOW w AS (PARTITION BY key_1 ORDER BY PARSE_DATE('%d/%m/%Y', date) DESC)
ORDER BY date;
Результаты запроса