时间管理
时间维度是每个 TGKML 脚本的必需维度。Tagetik 为用户提供一组函数,允许在处理不同场景/期间上存在的数据时沿"时间"轴移动。
时间维度可按如下方式导航:
| 语法 | 描述 |
|---|---|
| Time.Prev | 上一期间 |
| Time.Next | 下一期间 |
| Time.Lag(N) | 向后 N 个期间。N 也可以是负数,在这种情况下,移动为向前 示例:Time.Lag(3) 表示当前期间之前的第三个期间 |
| Time.Lead(N) | 向前 N 个期间。N 也可以是负数,在这种情况下,移动为向后 示例:Time.Lead(3) 表示当前期间之后的第三个期间 |
| Time.Scenario | 当前场景(当前期间所属的场景)所有期间之和 |
| Time.PN | 其中 N 是整数。一组期间之和(P3=三个月;P2=两个月;P4=四个月) 示例:Time.P3 与当前场景相关的三个月的金额之和 |
| Time.Scenario.Prev | 上一场景 |
| Time.Scenario.Next | 下一场景 |
| Time.Scenario.First | 当前场景的第一个期间 |
| Time.Scenario.Last | 当前场景的最后一个期间 |
| Time.Scenario.Prev.Last | 当前场景之前场景的最后一个期间 |
| Time.Scenario.Last(P3) | 当前场景上的最后四个月 |
| Time.Scenario.Period(N) | 其中 N = 1,..,maxPeriod 当前场景的期间 N |
| Time.Scenario.First(P3).Last | 当前场景前四个月的最后一个期间 |
| Time.Ref(N) | 其中 N = 1,..,5 与当前场景相关的参考场景 N |
| Time.[scenario_code] | 特定场景所有期间之和 示例:Time.[2013BDG] = 场景 2013BDG 所有期间之和 |
| Time.[scenario_code | period_code] |
此外,可以使用以下语法指定时间范围
| 语法 | 描述 |
|---|---|
| Time.ToDate | 所有 <= 当前期间的期间 |
| Time.ToDate(P3) | 当前四个月中所有 <= 当前期间的期间 |
| Time.P3.ToDate | 当前场景中所有 <= 当前四个月的四个月 |
| Time.Span(1) | 当前期间和上一期间 |
| Time.P3.Span(1) | 当前和上一个四个月 |
上述时间维度的特性必须在赋值中按如下方式使用:
[LO].[X0000] := [C00000](Dest1.Filter([01|D11]), Time.Scenario.Prev);
[LO].[X0000] := [C00000](Dest1.Filter([01|D12]), Time.Scenario.Ref(3));
当需要在赋值中从非当前场景读取当前期间时,必须使用 "ParallelPeriod" 函数。
例如,如果当前期间为 3,使用语法
… := [C00000](Dest1.Filter(01|D11), Time.ParallelPeriod(Scenario.Prev));
系统从上一场景的相同期间(3)读取。
系统从上一场景的相同期间(3)读取,而使用语法
… := [C00000](Dest1.Filter(01|D11), Time.ParallelPeriod(Scenario.[2015ACT]));
系统从场景 2015ACT 的相同期间(3)读取数据。