Я получил bigquery — DML не может обновить представление ‘mydateset.myview’

#sql #google-bigquery #data-warehouse

# #sql #google-bigquery #хранилище данных

Вопрос:

Я хотел бы сделать запрос в Google bigquery и запланировать его как простой конвейер. Что я сделал, так это сначала сделал запрос с помощью пары CTE и сохранил представление, а затем изменил запрос как

 INSERT INTO mydataset.myview
With t1 AS (...),
t2 AS (...),
...
big_t AS (...)
SELECT * FROM big_t t2
WHERE t2.date > (SELECT MAX(date) FROM mydataset.myview)
 

но, когда я нажимаю на run_query кнопку, я получаю подсказку с предупреждением

DML не может обновить представление ‘mydateset.myview’

Я не знаю почему, потому что я думаю, что это не имеет ничего общего с синтаксисом

связано ли это с тем, как я сохраняю представление, или с чем-то еще?

Комментарии:

1. Это mydataset.myview действительно ПРЕДСТАВЛЕНИЕ? Вы можете вставлять данные только в таблицу, а не в представление.

Ответ №1:

Я понял, что речь идет о манипуляциях с таблицей и представлением. Итак, ВСТАВКА / ВЫБОР работает только с таблицей, когда я меняю запрос на создание таблицы сначала на ВСТАВКУ / ВЫБОР, он работает.

Ответ №2:

Для обновления представления вам необходимо использовать CREATE OR REPLACE VIEW DDL

Ответ №3:

Вы можете обновлять данные только в таблице или материализованном представлении, но не в представлении.