Мы настраиваем наш проект BigQuery и обсуждаем использование вложенных и повторяющихся полей . Мы не уверены в лучших методах обновления значений для повторяющейся записи.
Представьте, что у нас есть таблица супергероев, которая выглядит как
super_hero_id | powers | Date
----------------| -------------------|-------------
5 | Fly | 2020-08-01
| Change Skin Color |
----------------|--------------------|-------------
6 | Shoot Lasers | 2020 -08-01
| Attract Metal |
| Become Transparent |
----------------|--------------------|-------------
Теперь предположим, что «супергерой 5» обнаруживает свой исходное происхождение и понимает, что он также обладает способностью «формировать воду», как лучше всего добавить эту информацию в аналитическую таблицу?
Мы видим два варианта:
- Обновить вложенную запись в таблице BigQuery пример . Однако BigQuery имеет ограничения на операции с таблицами в день, насколько мы понимаем, и сделать это на миллионах супергероев было бы невозможно.
- Используйте потоковые вставки для вставки новой строки в стол. Мы хотим изучить этот вариант, но, как мы его понимаем, это только вставляет данные в таблицу, поэтому наша таблица будет выглядеть как
super_hero_id | powers | Date
----------------| -------------------|-------------
5 | Fly | 2020-08-01
| Change Skin Color |
----------------|--------------------|--------------
6 | Shoot Lasers | 2020 -08-01
| Attract Metal |
| Become Transparent |
----------------|--------------------|-------------
5 | Fly | 2020-08-01
| Change Skin Color |
| Shape Water |
----------------|--------------------|--------------
Из-за нашей Вселенной l aws, у нас не может быть столбца детерминированной c даты для определения самой последней строки, и нам придется использовать функцию Номер строки для определения нашей последней строки.
Итак, два больших вопроса у нас есть
- Можно ли выполнить обновление с помощью Streaming Inserts? (мы так не думаем)
- Для того, чтобы последняя строка была как всегда полной, делаем мы.
- Всегда читать предыдущую строку из Big Query, чтобы затем построить полную новую строку (невозможно)? ИЛИ
- Всегда заполнять полные данные в нашей последней строке из другого источника?
Какие рекомендуемые подходы.
Спасибо за чтение. Любой ввод приветствуется