日历数据类型

日历数据类型控制可以存储时间系列数据的时间。

日历数据类型是不透明数据类型,由以下项组成:

对于规则的时间系列,日历还用于将关注的时间段转换为偏移量(向量值),反之亦然。

日历数据类型的输入格式是加引号的文本字符串。

表 1. 日历数据类型参数值
数据类型 描述
start_date DATETIME YEAR TO FRACTION(5) 日历开始日期。

如果不指定开始日期,那么将使用日历模式开始日期。

日历开始日期不会影响时间系列的原点。时间系列的原点指定时间系列中元素的最早日期。原点可以早于日历开始日期。

pattern_date DATETIME YEAR TO FRACTION(5) 日历模式开始日期。

如果日历开始日期和模式开始日期都包括在内,那么模式开始日期必须与日历开始日期相同或比日历开始日期晚几个时间间隔,这几个时间间隔数要小于或等于模式长度中的时间间隔长度数。

如果不指定日历模式开始日期,那么将使用日历开始日期。

calendar_pattern 日历模式 要使用的日历模式。
pattern_name VARCHAR 要使用的 CalendarPatterns 表中的日历模式名称。

用法

要创建日历,请将关键字及其值插入 CalendarTable 表。

可以使用形成日历的布尔运算 AND、OR 和 NOT 的函数对日历进行组合。生成的日历可以存储在 CalendarTable 表中或作为其他函数的参数使用。

如果日历和日历模式起始时间不一致,那么可以同时定义日历模式起始时间和日历起始时间。日历开始日期和模式开始日期可以相隔一个或多个时间间隔,这取决于日历模式长度。例如,如果日历模式为 {1 on, 14 off},那么模式长度为 15。日历开始日期和模式开始日期可以相隔 0 到 15 个时间间隔。

有时,如果您使用的是规则的时间系列,那么将得到没有数据的元素。例如,如果有一个每天日历,那么可能无法获得假期中的数据。这些日历异常将标记为空元素。但是,您可以使用 HideElem 函数隐藏异常,这样它们就不会包括在计算或分析中。

示例

以下示例将名为 weekcal 的日历插入 CalendarTable 表:
INSERT INTO CalendarTable(c_name, c_calendar)
  VALUES ('weekcal',
          'startdate(2011-01-02 00:00:00.00000), 
           pattstart(2011-01-02 00:00:00.00000), 
           pattname(workweek_day)');

此日历及其模式于 2011 年 1 月 2 日开始,该日历使用名为 workweek_day 的模式。

以下示例使用指定模式创建每小时日历:
INSERT INTO CalendarTable(c_name, c_calendar)
   VALUES('my_cal',
      'startdate(2011-01-01 00:00:00.00000),
       pattstart(2011-01-02 00:00:00.00000), 
       pattern({24 off, 120 on, 24 off}, hour)');
日历开始日期比模式开始日期早 24 小时。模式长度为 168 小时,或者说一周。