When you have to troubleshoot some queries, it’s always interesting to get the population of a table by partition. We all know the query that gives you the count by partition number
SELECT PARTITION, COUNT(*) FROM BASE.TABLE GROUP BY PARTITION ORDER BY PARTITION ASC
Here is a query that will return the count with the actual ranges defined
Table DDL
CREATE MULTISET TABLE BASE.TABLE1 ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO ( TABLE_ID VARCHAR(32) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, CONTACT_KEY VARCHAR(250) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, SEND_DT DATE FORMAT 'YYYY-MM-DD' ) PRIMARY INDEX PI_A_ECRM_SEND (TABLE_ID, SEND_DT ) PARTITION BY RANGE_N(SEND_DT BETWEEN DATE '2015-11-30' AND DATE '2019-02-17' EACH INTERVAL '7' DAY , NO RANGE,UNKNOWN);
Query to get the population of Ranges with the defined ranges
LOCKING BASE.TABLE1 FOR ACCESS SELECT PARTITION AS PARTITION_NUMBER, MIN(SEND_DT) AS RANGE_LOW, MAX(SEND_DT) AS RANGE_HIGH, COUNT(*) AS POPULATION FROM BASE.TABLE1 GROUP BY PARTITION ORDER BY PARTITION ASC
Displaying the result
You clearly also get the UNKNOW and NO RANGE Partitions