В настоящее время у нас есть несколько авторизованных представлений в большом запросе для различных команд
В настоящее время мы используем столбец partition_date
для использования в запросе, чтобы уменьшить объем обрабатываемых данных ( ссылка)
#standardSQL
SELECT
<required_fields,...>,
EXTRACT(DATE FROM _PARTITIONTIME) AS partition_date
FROM
`<project-name>.<dataset-name>.<table-name>`
WHERE
_PARTITIONTIME >= TIMESTAMP("2018-05-01")
AND _PARTITIONTIME <= CURRENT_TIMESTAMP()
AND <Blah-Blah-Blah>
Однако из-за количества пользователей и данных, которые у нас есть, очень сложно поддерживать качество сценариев больших запросов, что ведет к увеличению стоимости запросов при относительно увеличенном количестве пользователей.,
Я вижу, мы можем использовать --require_partition_filter
( ссылка ) при создании TABLEs
.Итак, может ли кто-нибудь помочь мне ответить на следующие вопросы
- Когда я создаю таблицу с вышеуказанным фильтром, ожидает ли ссылочное представление также условие раздела из-за того, что фильтр раздела включен на уровне таблицы?
- Из-за количества авторизованных представлений, связанных с имеющимися у нас таблицами, требуются значительные усилия для его преобразования в материализованные представления (таблицы).Есть ли альтернативный способ применить что-то подобное / использовать, например,
--require_partition_filter
на уровне просмотра?
К вашему сведению, для тех, кто хочет обновить текущую таблицу с помощью вышеуказанного фильтра, я вижу, что мы можем использовать команду bq update
( reference ), которую я планирую использовать длясуществующие секционированные таблицы.