Материализованный вид Bigquery на секционированной таблице

# #google-bigquery #materialized-views

Вопрос:

Я не могу создать материализованное представление над секционированной таблицей, хотя я добавил фильтр разделов в сам запрос.

введите описание изображения здесь

Исходная таблица содержит столбец разделов ts:метка времени, разделенная по дате(ts) введите описание изображения здесь

Запрос для материализованного представления:

 create materialized view `materialized_view_1`
partition by Date(ts)
as
select Date(ts) date, count(*) count from `source_table`
where date(ts) > "2021-01-01"
group by 1
 

Ошибка —

Для таблицы source_table требуется фильтр разделов. Материализованные представления над таблицей, для которой требуется фильтр разделов, должны иметь фильтр над столбцом разбиения таблицы или выводить столбец.

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

1. Столбец разбиения материализованного представления должен соответствовать столбцу разбиения или псевдоколонке (если используется раздел времени приема)базовой таблицы или быть временной меткой над ней. Пожалуйста, смотрите здесь cloud.google.com/bigquery/docs/materialized-views . Пожалуйста, измените свой запрос на «ниже» и попробуйте создать materialized_view_1 раздел материализованного представления по дате(ts), как выбрать ts, количество(*) количество, начиная с source_table которого дата(ts) > «2021-01-01» группа по 1

2. Я вижу ту же ошибку.

3. Я создал тестовую таблицу, которая разделена по дням в столбце метки времени, а также требуется фильтр разделов. Я запустил запрос ниже, и он действительно создал материализованное представление.создайте или замените project.dataset.materialized_view_2 раздел материализованного представления по дате(ts), как выберите ts, количество(*) отсчет от project.dataset.test_partition того, где дата(ts) > «2021-01-01» группа на 1. Я не получил никакой ошибки, но, хотя созданное материализованное представление разделено на день в столбце ts, я вижу, что оно было создано с помощью фильтра разделов, как это требуется.