2018-10: BigQuery не поддерживает материализованных представлений , но вы можете использовать этот подход:
- Использовать предыдущее решение для "материализации"«Сводка последних данных до времени выполнения запланированного запроса.
- Создание представления, объединяющего материализованные данные, с оперативным представлением последних данных в таблице только для добавления.
Код будет выглядеть следующим образом:
CREATE OR REPLACE VIEW `wikipedia_vt.just_latest_rows_live` AS
SELECT latest_row.*
FROM (
SELECT ARRAY_AGG(a ORDER BY datehour DESC LIMIT 1)[OFFSET(0)] latest_row
FROM (
SELECT * FROM `fh-bigquery.wikipedia_vt.just_latest_rows`
# previously "materialized" results
UNION ALL
SELECT * FROM `fh-bigquery.wikipedia_v3.pageviews_2018`
# append-only table, source of truth
WHERE datehour > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY )
) a
GROUP BY title
)
Обратите внимание, что BigQuery может использовать TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY )
для эффективного сокращения разделов.