Я видел это решение как альтернативу материализованным представлениям:
Но он использует запланированные запросы, которые выполняются не чаще, чем каждые 3 часа. Мои пользователи ожидают данных в реальном времени, что я могу сделать?
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 )
для эффективного удаления разделов.