海波龙系统HFM的数据表和各维度取值方法

数据表包括DCE表、DCN表、DCT表

DCE表格存储值以及相关的日记账调整。
DCN表格存储价值维度剩余成员的数据。
DCT表格存储日记账调整。当日记账被过账时,数据值流向DCE和/或DCN表格。

表的命名格式:APPNAME_[表][场景][年份]
例如:APPNAME_DCE_1_2024, APPNAE应用,DCE表,场景1,年份为2024。依此类推。
1、表结构说明
数据表的数据与维值取法相关,以APPNAME为“HFM"为例,查询 HFM_DCE_1_2024 表的数据如下图


lentity,lvalue,laccoount,licp分别表示组织、值、科目和往来方的维度,关联主数据表即可,lcustom1、lcustom2为Custom维度,dp0_inpt、dp1_input、dp2_input...等,依次对应各财务期间(分别对应1月、2月、3月等)的数据。
以下为取数的SQL:

SELECT xv.label,c1.label,c2.label,c3.label,c4.label,xt.*
FROM (select bitand(x.lcustom1,
to_number('00000000ffffffff', 'XXXXXXXXXXXXXXXX')) as C1id,--C1维度
bitand(x.lcustom1,
to_number('ffffffff00000000', 'XXXXXXXXXXXXXXXX')) /
to_number('000000100000000', 'XXXXXXXXXXXXXXXX') as C2id, --C2维度
bitand(x.lcustom2,
to_number('00000000ffffffff', 'XXXXXXXXXXXXXXXX')) as C3id,--C3维度
bitand(x.lcustom2,
to_number('0000ffff00000000', 'XXXXXXXXXXXXXXXX')) /
to_number('000000100000000', 'XXXXXXXXXXXXXXX') as C5id,--C5维度
bitand(x.lcustom2,
to_number('00ff000000000000', 'XXXXXXXXXXXXXXXX')) /
to_number('001000000000000', 'XXXXXXXXXXXXXXX') as C4id,--C4维度
x.*
from HFM.HFM_dce_1_2024 x) xt,
HFM.HFM_ACCOUNT_ITEM xai,--科目
HFM.HFM_CUSTOM_ITEM c1,--C1
HFM.HFM_CUSTOM_ITEM c2,--C2
HFM.HFM_CUSTOM_ITEM c3,--C3
HFM.HFM_CUSTOM_ITEM c4,--C4
HFM.HFM_Entity_Item ent,--组织
hfm.HFM_icp_item xii,--ICP
EDW_APP.HFM_value xv--值
where xt.C1id = c1.itemid
and xt.c2id=c2.itemid
and xt.c3id=c3.itemid
and xt.c4id=c4.itemid
and c1.ldimid = 1
and c2.ldimid=2
and c3.ldimid=3
and c4.ldimid=4
and xt.laccount = xai.itemid
and xt.lentity = ent.itemid
and xt.licp = xii.itemid
and xt.lvalue = xv.id
and ent.label = '100' --组织编码为100
and c4.label='E_Load'--C3为 E_load
and c2.label='[None]'

2、C1~C5维度的取法

查 HFM_CUSTOM_MAP 表的数据如下图,按dimid顺序依次对应C1~C5的偏移值(offset)和长度(length)

则需要在bitand中,写入 “f”的位置为 2Xoffset+1 ,长度为 lengthX2
"1"位置对应 2Xoffset+1 ,参考上述SQL的计算方法,可获取C1~C5的值。
例如下图,C4对应dimid=11, offset=6,length=1 ,则“f"放在第13位(2X6+1),长度为2,
因此C4维值获取逻辑为:
bitand(x.lcustom2,to_number('00ff000000000000', 'XXXXXXXXXXXXXXXX')) /to_number('001000000000000', 'XXXXXXXXXXXXXXX')
注意:第一个to_number固定为16位,第二个to_number固定为15位
为什么要这么计算?HFM产品就是这么设计的,底层原因不清楚。

posted @   在海边看风景  阅读(144)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
点击右上角即可分享
微信分享提示