Я хочу "живые материализованные представления", с последней информацией для любой строки - PullRequest
0 голосов
/ 26 октября 2018

Я видел это решение как альтернативу материализованным представлениям:

Ноон использует запланированные запросы, которые выполняются не чаще, чем каждые 3 часа.Мои пользователи ожидают живых данных, что я могу сделать?

1 Ответ

0 голосов
/ 26 октября 2018

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 ) для эффективного сокращения разделов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...