BigQuery, как запросить разделение по месяцам / годам, когда таблица разделена по дням? - PullRequest
0 голосов
/ 26 апреля 2020

Я разделил таблицу с помощью следующей команды в поле date, и по умолчанию она была разбита на day.

CREATE TABLE `sales.sales_txn_partition` PARTITION BY DateOfTxn CLUSTER BY SalesPersonID AS (SELECT * FROM `sales.sales_records` WHERE SalesDate IS NOT NULL)

enter image description here

Теперь я хочу фильтровать на основе year/month в моем предложении WHERE вместо записи полной даты. Возможно ли это, или мне нужно было бы создать новую секционированную таблицу для года / месяца отдельно?

Я использую следующую команду, ничего не работает

SELECT * FROM `sales.sales_txn_partition` WHERE DATE_TRUNC(EXTRACT(DATE FROM _PARTITIONTIME), MONTH) = 2018; 
## Doesnt work: Query error: Unrecognized name: _PARTITIONTIME at [3:78]

SELECT * FROM `sales.sales_txn_partition` WHERE EXTRACT(YEAR from DateOfTxn)=2018;
## Works but scans the full table

1 Ответ

1 голос
/ 26 апреля 2020

Почему бы просто не использовать прямые сравнения?

where DateOfTxn >= date('2018-01-01') and
      DateOfTxn < date('2019-01-01')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...