基于数据仓库中宽表结构的报表设计技巧
本例中将逐步介绍用润乾报表动态列方式实现基于宽表的报表设计过程。
首先介绍要做的样表结构:
参数:
参数描述 | 参数名称 | 参数类型 |
指标公式 | zbgs | 字符串组 |
指标名称 | zbmc | 字符串组 |
为了sql动态查询指标个数,需将指标公式参数转为字符串类型,定义如下动态宏:
宏名称 | 宏表达式 |
zbgs | “R_FAC_EVASUM.APTFLGID,R_FAC_EVASUM.CCY,A_MAS_VALUNTDEF.VALUNTNAM,A_MAS_PRDDEF.PRDNAM,R_FAC_EVASUM.PRSPEDDTE ,”+str(@zbgs) |
公式中的前部分是sql查询固定返回列,后面的str(@zbgs)是按照zbgs参数内容返回动态列。
定义如下数据集:
select ${zbgs} From R_FAC_EVASUM,A_MAS_PRDDEF,A_MAS_VALUNTDEF
WHERE A_MAS_PRDDEF.PRDNUM=R_FAC_EVASUM.FORPRD AND A_MAS_VALUNTDEF.VALUNTNUM=R_FAC_EVASUM.VALUNTNUM
${chanpin}
${jigou}
${bizhong}
${fentan}
${riqi}
${feisn}
下面开始定义报表
如上图,
l 在A1中输入:
=ds1.colcount()
l 在E5中输入:
=to(6,A1)
l E5的显示值输入:
=@zbmc[E5-5]
l 在E6中输入:
=eval(“ds1.#”+E5)/@danwei
通过上述4步设定,完成横向动态列的报表功能,具体实现可以参见随本文上传的t12.raq文件。
例表中使用的其它的宏和层次坐标定义,是为了方便报表其它功能的设计,在本文中不予介绍。