Кажется невозможным запланировать запросы в 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