Заполнение первого допустимого значения key_2 для каждого key_1 в таблице BigQuery на основе будущих изменений

У меня есть таблица 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 марта.

Это мой вклад:

дата ключ_1 ключ_2 01.01.2023 азбука -1 01.02.2023 азбука -1 01.03.2023 азбука -1 01.04.2023 азбука XYZ123 01.05.2023 азбука XYZ123 01.06.2023 азбука XYZ123 01.07.2023 азбука PGQ123 01.08.2023 азбука PGQ123 01.09.2023 азбука PGQ123

И это результат, который я ожидаю.

дата ключ_1 ключ_2 01.01.2023 азбука XYZ123 01.02.2023 азбука XYZ123 01.03.2023 азбука XYZ123 01.04.2023 азбука XYZ123 01.05.2023 азбука XYZ123 01.06.2023 азбука XYZ123 01.07.2023 азбука PGQ123 01.08.2023 азбука PGQ123 01.09.2023 азбука PGQ123
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете рассмотреть ниже.

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;

Результаты запроса

Другие вопросы по теме