Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58989
  • 博文数量: 18
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 286
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-16 21:41
个人简介

微信公众号:大话EPM 10年EPM产品线经验,精通HFM/Tagetik产品

文章分类
文章存档

2021年(17)

2013年(1)

分类: IT职场

2021-07-22 16:12:28

今天这篇文章主要是引用官方文档的内容并加以解释,笔者认为有关exp函数使用的资料,官方文档上的例子是非常经典的,值得读者细品。

1、Exp函数介绍


Exp函数是HFM的顶级对象,即只能是HS.exp的用法,并且只能在计算规则(Calculate),折算规则(Translate),分摊规则(Allocate)中使用。

不能在合并规则(Consolidate)中使用,读者可以想一想为什么?

Hs.exp中的维度组合一般只用Account,ICP,C1-CN(N代表自定义维度的个数)。

语法:hs.exp “目标维度组合=源维度组合或者数值”,并且每个维度之间是英文的.分割,每个维度使用短名称和#连接。

维度短名称列表(8个固定维度的短名称取的就是每个维度的首字母):

维度编码

维度短名称(规则中用)

说明

Account

A

科目维度

Entity

E

组织维度

Year

Y

年维度

Period

P

期间维度

View

W

视图维度,由于View和Value维度首字母都是V,为了区分使用W

Value

V

值维度

ICP

I

往来单位

Scenario

S

情景维度

Custom1-CustomN

C1-Cn

2.1 版本以后,自定义维度支持给自定维度重命名,并且可以大于4个自定维度,比如Custom 1 设置为Report,更加直观


2、Exp函数示例

先看下以下示例,

将科目库存现金:100101与自定义维的 [None] 成员交叉的单元格设置为100:

HS.Exp "A#100101.C1#[None].C2#[None].C3#[None].C4#[None]=100"

规则中一般只用Account,ICP, C1-Cn,不用其他维度,为什么?

因为其他维度默认就是“当前成员”,什么意思,上面这个语句也可以将1 2 个维度(假设是4个自定义维度)组合全部写出来,怎么写?

HS.Exp "E#"&hs.entity.member&".Y#"&hs.Year.member&"….A#100101.C1#[None].C2#[None].C3#[None].C4#[None]=100"

这样写可以,但是,是不是很复杂,可读性也不好,初学时如果对“当前成员”不理解,可以这样记住:能和H S 直接使用的维度就是当前成员,有如下维度:

我们再回过头去看上面的语句:

HS.Exp "A#100101.C1#[None].C2#[None].C3#[None].C4#[None]=100"

上面的维度组合我漏了I CP 维度,可以吗?

a. 一般库存现金科目是非I CP 科目,既不挂I CP ,也就是默认在[ ICP None]

科目维度I CP 属性字段:isICP =”N”

b. 如果isICP =”Y”,即:

HS.Exp "A#100101.C1#[None].C2#[None].C3#[None].C4#[None]=100"

如果还这样写,有问题吗?

显然有问题,这个语句会将所有I CP 维度都填充,当表单选择 ICP 维度成员[ ICP TOP] 时,数据会翻 N 倍。

正确的写法应该是:

HS.Exp "A#100101. I#[ICP None]. C1#[None].C2#[None].C3#[None].C4#[None]=100"


通过这个简单的例子,说明非常重要的几点:

1) 写规则时必须要关注维度模板中每个维度的属性配置,特别是科目维度。

2) 尽可能将公式中的维度组合写全(主要是account,icp,C 1-Cn,其他维度一般不需要写在公式中),可避免垃圾数据和不正确的数据产生。

3) 读者一定要敢于怀疑,并且敢于去尝试不同写法的数据结果。


今天就先写这么多,下篇我们将真正走进exp函数的复杂场景使用。

阅读(4531) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~