Row Partitioning Valid-Time Tables - Advanced SQL Engine - Teradata Database

Temporal Table Support

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
June 2020
Language
English (United States)
Last Update
2021-01-23
dita:mapPath
cjo1556732840654.ditamap
dita:ditavalPath
lze1555437562152.ditaval
dita:id
B035-1182
lifecycle
previous
Product Category
Teradata Vantage™

The following table describes the recommended partitioning expressions for a valid-time table, where vtcolumn represents the valid-time column.

Valid-Time Column Data Type Recommended Partitioning Expressions
PERIOD(DATE) NOT NULL
PARTITION BY CASE_N(
 END(vtcolumn) >= CURRENT_DATE AT '-12:59',
 NO CASE)

(where AT '-12:59' is a shorthand form of AT INTERVAL -'12:59' HOUR TO MINUTE)

If the valid-time column is a derived period column, the component columns must be defined as NOT NULL, and the derived period column is considered to be defined as NOT NULL.
PERIOD(DATE)
PARTITION BY CASE_N(
 END(vtcolumn) IS NULL OR 
 END(vtcolumn) >= CURRENT_DATE AT '-12:59',
 NO CASE)

(where AT '-12:59' is a shorthand form of AT INTERVAL -'12:59' HOUR TO MINUTE)

PERIOD(TIMESTAMP[(n)] [WITH TIME ZONE]) NOT NULL
PARTITION BY CASE_N(
 END(vtcolumn) >= CURRENT_TIMESTAMP,
 NO CASE)
PERIOD(TIMESTAMP[(n)] [WITH TIME ZONE])
PARTITION BY CASE_N(
 END(vtcolumn) IS NULL OR
 END(vtcolumn) >= CURRENT_TIMESTAMP,
 NO CASE)

By using the recommended physical partitioning for a valid-time table, the physical partitions are as follows:

  • The current partition has rows that are or were valid as of the last resolved CURRENT_DATE or CURRENT_TIMESTAMP value for the partitioning expression and rows that are in the future with respect to that date or timestamp.

    Note that rows with a valid-time column value as NULL are in the current partition (but are not considered current or valid rows).

  • The history partition has rows that were no longer valid as of the last resolved CURRENT_DATE or CURRENT_TIMESTAMP value for the partitioning expression.
Most of the AS OF queries are concerned with times that have already past. Consequently, these queries will not benefit from the recommended partitioning expressions described above. If AS OF queries are expected to be frequent, one way to get the benefit of row partition elimination is to partition on END(< VT_column >) and, within each partition, by BEGIN(< VT_column >) such that there is a 20% distribution within each outer partition.