Я пытаюсь найти способ составления списка разделов таблицы, созданной с помощью require_partition_filter = true
, но пока не могу найти способ.
Это скрипт создания таблицы
CREATE TABLE mydataset.partitionedtable_partitiontime
(
x INT64 \
)
PARTITION BY DATE(_PARTITIONTIME)
OPTIONS(
require_partition_filter = true
);
Некоторые тестовые строки
INSERT INTO mydataset.partitionedtable_partitiontime (_PARTITIONTIME, x) SELECT TIMESTAMP("2017-05-01"), 10;
INSERT INTO mydataset.partitionedtable_partitiontime (_PARTITIONTIME, x) SELECT TIMESTAMP("2017-04-01"), 20;
INSERT INTO mydataset.partitionedtable_partitiontime (_PARTITIONTIME, x) SELECT TIMESTAMP("2017-03-01"), 30;
Как и ожидалось, если попытаться выполнить следующий запрос для получения разделов, я получаю сообщение об ошибке, потому что мне нужно использовать фильтр поверх столбца разделов
SELECT _PARTITIONTIME as pt, FORMAT_TIMESTAMP("%Y%m%d", _PARTITIONTIME) as partition_id
FROM `mydataset.partitionedtable_partitiontime`
GROUP BY _PARTITIONTIME
ORDER BY _PARTITIONTIME
Error
Cannot query over table 'mydataset.partitionedtable_partitiontime' without a filter over column(s) '_PARTITION_LOAD_TIME', '_PARTITIONDATE', '_PARTITIONTIME' that can be used for partition elimination
есть идеи как составить список разделов?
РЕДАКТИРОВАТЬ: я знаю, что можно добавить фильтр, но я ищу решение, как "ПОКАЗАТЬ РАЗДЕЛ TABLENAME" Hive, чтобы перечислить все разделы (которые по сути являются метаданными)
Спасибо!