Возможно ли кластеризовать по времени приема таблицу BQ, разделенную по времени приема?

#google-cloud-platform #google-bigquery

#google-cloud-platform #google-bigquery

Вопрос:

В настоящее время мы используем таблицу BQ, разделенную по дням в столбце date1 и кластеризованную по тому же столбцу даты date1 . Это позволяет нам оптимизировать наши затраты. Однако вместо этого мы хотели бы использовать таблицы, разделенные по времени приема, но я не нашел, можно ли также кластеризовать по _PARTITIONTIME .

Кто-нибудь знает, можем ли мы сделать это в BigQuery?

Спасибо за вашу помощь

Ответ №1:

В недавнем выпуске кластеризация BigQuery не зависит от разделения. Таким образом, нет ограничений с разделением времени приема (или без него). Я провел тест, и он отлично сработал

введите описание изображения здесь

Комментарии:

1. Привет, спасибо за ваш ответ, но я хочу сгруппировать по _PARTITIONTIME (которого на самом деле не существует), и я не нашел, как это сделать

2. _PARTITIONTIME — это псевдоколонок, который существует только при разделении по времени приема. Если вы не разделяете по времени приема, она не существует. Если вы разделяете, кластеризация бесполезна (потому что уже в разделе). Решение здесь состоит в том, чтобы задать столбец при приеме данных, чтобы установить эту дату приема вручную.

3. Привет, спасибо, это то, что мы собираемся сделать. Однако это не бесполезно, поскольку кластеризация по-прежнему снижает стоимость. Если вы разбиваете по дням, вы уверены в максимальной стоимости 1D данных. Однако большинство запросов используют данные только за один час, и кластеризация помогает снизить затраты. Однако невозможно разделить по часам, поскольку мы ограничены 4000 разделами