从固定点读取
在某些情况下,需要定义一个 TGKML 脚本,其中给定金额必须从某个维度的特定元素读取;例如,产品价格可能保存在自定义维度 2 的特定 XY 元素中。
这需要从固定点读取的概念,它允许指定从哪个元素读取给定金额。
用于定义从固定点读取的语法为:
Dimension.[...]
在 FST 项(输入)上从固定点读取时所用的语法为:
{
例如,可以编写
- [20132](Dest2.[XY]) 以指定科目 20132 的值仅从自定义维度 2 的 XY 元素读取;
- [20132](Time.[2009|12]) 以指定科目 20132 的值仅从 2009 / 12 场景 / 期间读取;
-
[20132](Dest2.[01|XY]) 以指定科目 20132 要读取的值是与层次 01 中以 XY 节点为根的子树相关的所有自定义维度 2 元素之和;
-
[20132](Dest2.Null) 以指定科目 20132 要读取的值是所有自定义维度 2 等于 null 的元素之和;
-
[20132](Dest2.NotNull) 以指定科目 20132 要读取的值是所有自定义维度 2 不等于 null 的元素之和。
当使用从固定点读取功能时,系统会从输入数据集中“移除”X 维度(具有常量值)。也就是说,假设我们有以下输入数据集:
| Entity | Account | Scenario | Category | Dest1 | Dest2 | Amount |
|---|---|---|---|---|---|---|
| A00 | X00000 | 2013BDG | $AMOUNT | GEN | GEN | 150 |
并将脚本的输入部分定义如下:
… := [X00000](Dest1.[GEN], Dest2.[GEN])
那么系统读取以下数据集:
| Entity | Account | Scenario | Category | Amount |
|---|---|---|---|---|
| A00 | X00000 | 2013BDG | $AMOUNT | 150 |
如果我们使用输入过滤器,则不会发生这种情况。也就是说,假设我们将脚本的输入部分定义如下:
… := [X00000](Dest1.Filter([GEN]), Dest2.Filter([GEN]))
那么系统读取以下数据集:
| Entity | Account | Scenario | Category | Dest1 | Dest2 | Amount |
|---|---|---|---|---|---|---|
| A00 | X00000 | 2013BDG | $AMOUNT | GEN | GEN | 150 |
这样,假设我们有
[LO].[D00000]:= [X00000](Dest1.[GEN], Dest2.[GEN]) * [C00000]
其中 [C00000] 在数据库中有以下值
| Entity | Account | Scenario | Category | Dest1 | Dest2 | Period | Amount |
|---|---|---|---|---|---|---|---|
| A00 | C00000 | 2013BDG | $AMOUNT | GEN | GEN | 01 | 10 |
| A00 | C00000 | 2013BDG | $AMOUNT | D11 | D22 | 01 | 20 |
| A00 | C00000 | 2013BDG | $AMOUNT | D12 | D22 | 01 | 5 |
结果为:
| Entity | Account | Scenario | Category | Dest1 | Dest2 | Period | Amount |
|---|---|---|---|---|---|---|---|
| A00 | D00000 | 2013BDG | $AMOUNT | GEN | GEN | 01 | 150*10 |
| A00 | D00000 | 2013BDG | $AMOUNT | D11 | D22 | 01 | 150*20 |
| A00 | D00000 | 2013BDG | $AMOUNT | D12 | D22 | 01 | 150*5 |
而在存在输入过滤器的情况下
[LO].[D00000]:= [X00000](Dest1.Filter([GEN]), Dest2.Filter([GEN])) * [C00000]
结果为:
| Entity | Account | Scenario | Category | Dest1 | Dest2 | Period | Amount |
|---|---|---|---|---|---|---|---|
| A00 | D00000 | 2013BDG | $AMOUNT | GEN | GEN | 01 | 150*10 |