2014-11-26 2 views
0

Я хочу найти начальную и конечную точку раздела диапазона DB2 с запросом. Можно ли запрашивать эти значения из любой из системных таблиц?


Побольше контекст для моей проблемы:
Мы изменили некоторые из наших огромных таблиц таким образом, они распределяли в ежедневных частях:Запросить диапазон разделов по DB2

CREATE TABLE orders(id INT, CRDTTM TIMESTAMP, …) 
PARTITION BY RANGE(CRDTTM) 
(
    (STARTING ('2014-10-01') ENDING ('2015-15-31') EVERY 1 DAY) 
) 

Можно ли запросить starting- и конечная точка с нормальным SQL впоследствии? Мне нужно изменить хранимую процедуру, которую мы используем, чтобы она фильтровала строки, у которых есть отметка времени за пределами этого диапазона (таблицы находятся в хранилище данных, где загружаются только данные с короткого таймфрейма).

Что касается окружающей среды:
Мы запускаем DB2 LUW Version 10.5 на сервере SUSE Enterprise 11. Соответствующие таблицы основаны на строках.

ответ

0

Посмотрите на таблицу SYSCAT.DATAPARTITIONS, в частности LOWVALUE, HIGHVALUE и LOWINCLUSIVE и HIGHINCLUSIVE колонны.

+0

Спасибо, это будет работать, если я получу значения Max/Min для каждой таблицы. –

1

Эта информация находится в системных каталогах. Задача - просто найти, где и как. Само выражение раздела находится в метке syscat.datapartitionexpression.

Для воссоздания конкретной информации раздела необходимо объединить несколько видов. Пример запроса here может помочь.

Полезно знать documentation.

+0

Спасибо за совет. Я смотрел в системных каталогах, но мне не удалось найти нужные мне данные. 'syscat.datapartitionexpression' содержит только имя столбца, тогда как мне нужен верхний и нижний пределы диапазона разделов. –

+0

@ borst.philipp. , , Я бы предположил, что поле 'DATAPARTITIONEXPRESSION' действительно содержит выражение. Вам нужно будет проанализировать его, чтобы получить значения min и max. –

Смежные вопросы