-
shijiao 小试身手Lv3
发表于2021-7-8 15:25
悬赏1
已解决
bbqdim
定义整个数据期维的根节点,数据期维的类型,描述,起止时间和前期范围,字段定义,周期表达式,过滤表达式都是在此节点下定义
属性type:数据期维的类型,每种数据期维的类型都是不同的。
属性caption:可选。数据期维的描述信息
属性start:数据期维的开始时间
属性end:数据期维的结束时间
属性prefields:数据期维的前期范围,如1,-2,-5:-7表示前1期,前两期,前5期到前7期.等价于-1,-2,-5,-6,-7,示例中的-1:-36表示上期到前36期
子节点field:数据期维的字段定义
子节点cycleexp:数据期维的周期表达式
子节点ppts:数据期维的过滤表达式
子节点timeexp:可选。将开始时间和结束时间转换为cycleexp可以直接计算的时间
field
此部分用于定义表字段信息
name表示字段的名称
value,exp,CDATA用于表示此字段值的生成表达式,支持参数@bbq,该参数表示当前数据期,如日报@bbq=20110309,此表达式可以根据@bbq的值计算出当前年是2011
pre表示与@bbq相差多少数据期,-1表示上期,-2表示前2期,主要用于生成前期数据。如日报定义年字段的表达式为<field name="year_" ><![CDATA[datetostr(@bbq,'yyyy')]]></field>,则@bbq=20110309时,pre=0是,year_字段值为2011,pre=-1,year_字段值为2010,pre=1,year_字段值为2012
cycleexp
此部分是数据期循环表达式,支持两个参数 (bbq,)offset,用于生成数据期。如年报@bbq=2011,当@offset=-1时,表达式可以生成新的数据期@bbq=2012;@offset=0时,表达式可以生成新的数据期@bbq=2011;@offset=-1时,表达式可以生成新的数据期@bbq=2010
ppts
此部分用于记录维的属性,在表达式中定义为的过滤表达式filterexp,在查看维时,符合过滤表达式的维节点才会显示出来,支持参数item.id,表示维节点的id
timeexp
将开始时间和结束时间转换为cycleexp可以直接计算的时间。示例中的cycleexp只支持根据数据期格式生成前后期,所以timeexp将开始时间转换为了数据期的格式。再如年报的cycleexp为
<cycleexp><![CDATA[datetostr(offsetdate(@bbq,@offset),'yyyy----')]]></cycleexp>
它支持根据时间生成前后期,所以不需要此子节点
数据的生成过程
具体数据期维的数据生成过程如下:
根据开始时间生成一个数据期@bbq
根据生成的@bbq,计算每个字段的表达式。如月报,定义了字段年,季,月,计算完成后,这些字段的值就都生成了
根据上面的@bbq,并设置@offset=1,通过数据期循环表达式(cycleexp)可以计算出下一个数据期
下一个数据期如果大于结束时间,则数据生成完成,否则再次进入第二步
整个过程用图形表示如下:
Unknown macro: {graph-from-table}
@bbq=start @offset=0
周期表达式
label="初始化"
周期表达式
bbq
label = "生成"
bbq
字段表达式
label = "设置@bbq=bbq"
bbq
周期表达式
label = "@bbq=bbq @offset=1"
bbq
结束
label = "bbq大于end"
字段表达式
字段
label = "计算结果写入"
数据库中的字段一般都有:
year_,yearcap_ 表示年,年的描述
halfyear_,halfyearcap_ 表示半年,半年的描述
quarter_,quartercap_ 表示季,季的描述
month_ monthcap_ 表示月,月的描述
halfmonth_ halfmonthcap_ 表示半月,半月的描述
tendays_ tendayscap_ 表示旬报,旬报的描述
fivedays_ fivedayscap_ 表示五日报,五日报的描述
bbq_ bbqcap_ 表示数据期,数据期的描述
bbqpre1..36_ 表示前期
6个回答
上面的xml分为以下几个部分
bbqdim
定义整个数据期维的根节点,数据期维的类型,描述,起止时间和前期范围,字段定义,周期表达式,过滤表达式都是在此节点下定义
属性type:数据期维的类型,每种数据期维的类型都是不同的。
属性caption:可选。数据期维的描述信息
属性start:数据期维的开始时间
属性end:数据期维的结束时间
属性prefields:数据期维的前期范围,如1,-2,-5:-7表示前1期,前两期,前5期到前7期.等价于-1,-2,-5,-6,-7,示例中的-1:-36表示上期到前36期
子节点field:数据期维的字段定义
子节点cycleexp:数据期维的周期表达式
子节点ppts:数据期维的过滤表达式
子节点timeexp:可选。将开始时间和结束时间转换为cycleexp可以直接计算的时间
field
此部分用于定义表字段信息
name表示字段的名称
value,exp,CDATA用于表示此字段值的生成表达式,支持参数@bbq,该参数表示当前数据期,如日报@bbq=20110309,此表达式可以根据@bbq的值计算出当前年是2011
pre表示与@bbq相差多少数据期,-1表示上期,-2表示前2期,主要用于生成前期数据。如日报定义年字段的表达式为<field name="year_" ><![CDATA[datetostr(@bbq,'yyyy')]]></field>,则@bbq=20110309时,pre=0是,year_字段值为2011,pre=-1,year_字段值为2010,pre=1,year_字段值为2012
cycleexp
此部分是数据期循环表达式,支持两个参数 (bbq,)offset,用于生成数据期。如年报@bbq=2011,当@offset=-1时,表达式可以生成新的数据期@bbq=2012;@offset=0时,表达式可以生成新的数据期@bbq=2011;@offset=-1时,表达式可以生成新的数据期@bbq=2010
ppts
此部分用于记录维的属性,在表达式中定义为的过滤表达式filterexp,在查看维时,符合过滤表达式的维节点才会显示出来,支持参数item.id,表示维节点的id
timeexp
将开始时间和结束时间转换为cycleexp可以直接计算的时间。示例中的cycleexp只支持根据数据期格式生成前后期,所以timeexp将开始时间转换为了数据期的格式。再如年报的cycleexp为
<cycleexp><![CDATA[datetostr(offsetdate(@bbq,@offset),'yyyy----')]]></cycleexp>
它支持根据时间生成前后期,所以不需要此子节点
数据的生成过程
具体数据期维的数据生成过程如下:
根据开始时间生成一个数据期@bbq
根据生成的@bbq,计算每个字段的表达式。如月报,定义了字段年,季,月,计算完成后,这些字段的值就都生成了
根据上面的@bbq,并设置@offset=1,通过数据期循环表达式(cycleexp)可以计算出下一个数据期
下一个数据期如果大于结束时间,则数据生成完成,否则再次进入第二步
整个过程用图形表示如下:
Unknown macro: {graph-from-table}
@bbq=start @offset=0
周期表达式
label="初始化"
周期表达式
bbq
label = "生成"
bbq
字段表达式
label = "设置@bbq=bbq"
bbq
周期表达式
label = "@bbq=bbq @offset=1"
bbq
结束
label = "bbq大于end"
字段表达式
字段
label = "计算结果写入"
数据库中的字段一般都有:
year_,yearcap_ 表示年,年的描述
halfyear_,halfyearcap_ 表示半年,半年的描述
quarter_,quartercap_ 表示季,季的描述
month_ monthcap_ 表示月,月的描述
halfmonth_ halfmonthcap_ 表示半月,半月的描述
tendays_ tendayscap_ 表示旬报,旬报的描述
fivedays_ fivedayscap_ 表示五日报,五日报的描述
bbq_ bbqcap_ 表示数据期,数据期的描述
bbqpre1..36_ 表示前期