У меня есть секционированная таблица, созданная в BigQuery следующим образом:
CREATE TABLE IF NOT EXISTS `{{ my_project }}.{{ my_dataset }}.my_table`
(
dt TIMESTAMP
, other_fields
)
PARTITION BY DATE(dt)
OPTIONS(
partition_expiration_days=180
)
- Разделена на: DAY
- Поле разделения: dt (тип: TIMESTAMP)
Как видите, поле разбиения - TIMESTAMP
, но я хочу разделить на DAY
, а не TIMESTAMP
.Так каков правильный способ сокращения разделов?Могу ли я преобразовать поле разделения в DATE
, как в подходе 1, или мне нужно идти в подходе 2?
SELECT COUNT(*) FROM `my_project.my_dataset.my_table` WHERE CAST(dt AS DATE) = "2019-01-01"
SELECT COUNT(*) FROM `my_project.my_dataset.my_table` WHERE dt >= "2019-01-01 00:00:00" AND dt < "2019-01-02 00:00:00"