Запланированные запросы и кластеризация - PullRequest
0 голосов
/ 19 октября 2018

Кажется невозможным запланировать запросы в BigQuery, которые записывают в целевые таблицы с разделением по времени и кластеризованные (используя WRITE_TRUNCATE и декоратор разделения): мы получаем сообщение об ошибке:

Invalid value: Incompatible table partitioning specification. Expects partitioning specification interval(type:day) clustering(siteId,channelId), but input partitioning specification is interval(type:day)

Я не понимаю, почему это происходит, не является ли спецификация кластеризации только частью определения таблицы?Нам также не нужно указывать ничего дополнительного при выполнении вставки данных dml в уже кластеризованную таблицу.Или это связано с тем, что не использует DML в запланированном запросе?

РЕДАКТИРОВАТЬ: Структура запланированного запроса выглядит следующим образом:

SELECT
  reportDate,
  channelId,
  siteId,
  pageType,
  [MORE_COLUMNS_SELECT),
  SUM(timeOnPage) AS timeOnPage_agg,
  ARRAY_AGG(STRUCT( sessionId,
      [MORE_COLUMNS_NESTED)
 ) AS Details
  ----
FROM `project.dataset.viewname` 
WHERE    reportDate >= TIMESTAMP_TRUNC(TIMESTAMP_ADD(@run_time, INTERVAL -1 DAY), DAY)
     AND reportDate < TIMESTAMP_TRUNC(@run_time, DAY)
GROUP BY
    reportDate,
  channelId,
  siteId,
  pageType,
  [MORE_COLUMNS_SELECT)

Я записываю результаты этого запроса в целевую таблицу следующим образом: TARGET_TABLE_NAME $ {run_time-24h | "% Y% m% d"}

Эта таблица разбита по времени для _PARTITIONTIME (= Reportdate) и кластеризована для siteId, channelId

1 Ответ

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

По состоянию на 23-10-2018, кажется, что функция запланированного запроса BigQuery НЕ поддерживает шаблон загрузки WRITE_TRUNCATE в сочетании с кластеризацией .

Что DOES работает, однако, выполняет запись в кластеризованную целевую таблицу с использованием инструкции DML.

...