精华内容
下载资源
问答
  • BIRT自带的Data Sources Join以及用ETL转化为同库等方案都难以解决此类问题。具体可以通过如下示例讨论:交易明细数据(trade表)存储于生产系统的数据库DB2中,...报表通过参数来决定trade和哪张表做关联,并在报表中...

    BIRT自带的Data Sources Join以及用ETL转化为同库等方案都难以解决此类问题。具体可以通过如下示例讨论:

    交易明细数据(trade表)存储于生产系统的数据库DB2中,另外一部分业务数据(network表、account表)存储于业务系统的Mysql中,它们其中的关联关系如下图所示:

    cdb6dd1cf23471883c1c3c71b3870026.png

    所谓“动态关联”,是指用户在前台界面输入参数,报表通过参数来决定trade和哪张表做关联,并在报表中显示关联后的数据,实际运算中可能还要进行数据过滤和汇总。查询流程如下图所示:

    6e25f5f866cac4c425ab11bec4aa7616.png

    比如查询场景一:报表根据传入参数,能动态地将trade中的outAccount字段和account中的accountNo字段关联,最后查询结果显示trade中的所有字段以及account的name,gender,city等字段。

    解决此类问题的常见方案与不足,分析如下:

    1、BIRT Data Sources Join的问题在于要求表名和字段名是已知、确定的,但这类报表都是通过参数来动态关联的,因此无法实现。

    2、可以用ETL把生产库的数据抽取到业务库,这样跨库的问题就转化为同库了。这个方案思路简单但实施起来细节上有很多难点。首先是实时查询:为了实时查询数据,需要在生产库使用触发器之类的功能来检测数据的实时变化,并将数据推送到业务库,但生产库不能轻易改动,因此实时查询就无法实现。非实时查询也难以办到,这是因为生产库的数据极其庞大,不可能每次都全部取过来,只有用增量抽取的办法,而判断增量就需要在trade表中加入时间戳字段。同样,生产库是不允许有这种改动的,因此也无法实现。

    3、从能力上讲,BIRT JAVA bean data source是真正能解决报表问题,它比Data Sources Join更具灵活性,也不需要修改生产库。但这个方案只有一个缺陷:代码过于复杂,原因在于数据计算并非JAVA特长,若每次遇到跨库问题都用硬编码方式来实现,并不现实。

    建议使用集算器,它是独立的数据计算引擎,拥有不依赖于数据库的计算能力,支持异构数据源的混合运算,比较适合进行动态关联再计算,事实上,可以把集算器看作是语法更简单的BIRT JAVA bean data source。比如实现上面的问题,集算器脚本只需6行:

    A

    1 =DB2.query("select runningNo,networkNo,outAccount,amount from trade")

    2 ="select"+crossJoinField+","+crossOtherFields+"from"+crossTable

    3 =Mysql.query(A2)

    4 =join(A1:trade,${tradeJoinField};A3:cross,${crossJoinField})

    5 =crossOtherFields.array().("cross."+~).string()

    6 =A4.new(trade.runningNo,trade.networkNo,trade.outAccount,trade.amount,${A5})

    其中 tradeJoinField,crossJoinField,crossOtherFields,crossTable 为输入参数。最后将计算结果返回给BIRT的DataSet进行报表展现。从此示例来看,集算器的参数用法很灵活,非常适合这类动态关联查询。由于它是专门的计算语言,所以较于常规办法,跨库计算的代码更加精炼易懂。

    其实还有很多类似的跨库、分库计算问题,若有集算器SPL的辅助会很简单,感兴趣可以参考:分库后的统计查询

    集算器提供了JDBC驱动,可以很方便的与BIRT等报表工具集成,BIRT调用SPL脚本有使用和获得它的方法。

    关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器。

    展开全文
  • 分库后的报表怎么做

    2020-03-19 20:53:37
    【摘要】 数据分库后报表就无法再使用 SQL 直接查询数据,往往要在应用端借助硬编码完成关联、排序等运算,报表...附件下载:分库后的报表怎么做.pdf 点击查看:分库后的统计查询 ...

    【摘要】

    数据分库后报表就无法再使用 SQL 直接查询数据,往往要在应用端借助硬编码完成关联、排序等运算,报表开发的复杂度增大。本文将介绍一种在报表工具里直接完成跨库计算的方法,无论是同构库还是异构库,同时还能保证高性能。

    点击查看: 海量清单与分组报表的实现

    附件下载:
    分库后的报表怎么做.pdf

    1JPG

    2JPG

    3JPG

    4JPG

    5JPG

    6JPG

    7JPG

    8JPG

    9JPG

    10JPG
    点击查看: 分库后的统计查询

    11JPG

    12JPG

    13JPG

    14JPG

    16JPG

    展开全文
  • 关键词导读:文本与JSON关联 BIRT数据源 BIRT对于两个数据源的联合提供了Joint DataSet的解决方案,它具有图形化的操作界面,可以完成简单的内外关联,但功能非常局限(几乎没有二次计算的能力,Join 后再计算只限于...

    关键词导读:文本与JSON关联 BIRT数据源

    BIRT对于两个数据源的联合提供了Joint DataSet的解决方案,它具有图形化的操作界面,可以完成简单的内外关联,但功能非常局限(几乎没有二次计算的能力,Join 后再计算只限于简单查询和固定查询,难以实现自由的组合查询和变量查询,更不能进行分组汇总再过滤这类多步骤计算)。

    BIRT虽然支持CSV/TXT等文件作为数据源,但不能构建JSON数据源,一些开源社区提供了解析JSON数据源插件,几乎所有插件都非常底层,使用起来很不方便。

    从能力上讲,只有自定义数据源可以完整的解决这个问题,但BIRT JAVA bean data source这种硬编码方式比较复杂,工作量巨大。

    比如要处理这么个场景:sales.txt是tab分割的结构化文本,city.json是非结构化的JSON串,sales.txt的第2列和city.json的部分文本存在外键关系,需要将两个文件连接为二维表。示意图如下:

    536521fb54240afa6b6e2ed528b73204.png

    建议使用集算器,它是独立的数据计算引擎,拥有不依赖于数据库的计算能力,可以从多种多样的文件获取数据并混合关联运算,事实上,可以把集算器看作是语法更简单的BIRT JAVA bean data source。比如实现上面的问题,集算器脚本只需5行:

    c7ef0d7828ea2b46aecbd5f94d19f89d.png

    关联之后还能更方便地实施计算,比如:统计每个城市的销售额;只需在此基础上增加1行:=A5.groups(name;sum(Amount):amount)

    其实还有很多类似的问题做起来不太方便,比如:计算文本、Excel,甚至关联计算、入库等需求,但用集算器SPL却很简单,感兴趣可以参考:结构化文本计算示例(二)、JSON数据计算与入库

    集算器提供了JDBC驱动,可以很方便的与BIRT等报表工具集成,BIRT调用SPL脚本有使用和获得它的方法。

    关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器。

    展开全文
  • 关键词导读:异构跨库 动态关联 ...所谓“动态关联”,是指用户在前台界面输入参数,报表通过参数来决定trade和哪张表做关联,并在报表中显示关联后的数据,实际运算中可能还要进行数据过滤和汇总。..

    关键词导读:异构跨库 动态关联

    BIRT自带的Data Sources Join以及用ETL转化为同库等方案都难以解决此类问题。具体可以通过如下示例讨论:

    交易明细数据(trade表)存储于生产系统的数据库DB2中,另外一部分业务数据(network表、account表)存储于业务系统的Mysql中,它们其中的关联关系如下图所示:

     

     

    所谓“动态关联”,是指用户在前台界面输入参数,报表通过参数来决定trade和哪张表做关联,并在报表中显示关联后的数据,实际运算中可能还要进行数据过滤和汇总。查询流程如下图所示:

     

     

    比如查询场景一:报表根据传入参数,能动态地将trade中的outAccount字段和account中的accountNo字段关联,最后查询结果显示trade中的所有字段以及account的name,gender,city等字段。

    解决此类问题的常见方案与不足,分析如下:

    1、BIRT Data Sources Join的问题在于要求表名和字段名是已知、确定的,但这类报表都是通过参数来动态关联的,因此无法实现。

    2、可以用ETL把生产库的数据抽取到业务库,这样跨库的问题就转化为同库了。这个方案思路简单但实施起来细节上有很多难点。首先是实时查询:为了实时查询数据,需要在生产库使用触发器之类的功能来检测数据的实时变化,并将数据推送到业务库,但生产库不能轻易改动,因此实时查询就无法实现。非实时查询也难以办到,这是因为生产库的数据极其庞大,不可能每次都全部取过来,只有用增量抽取的办法,而判断增量就需要在trade表中加入时间戳字段。同样,生产库是不允许有这种改动的,因此也无法实现。

    3、从能力上讲,BIRT JAVA bean data source是真正能解决报表问题,它比Data Sources Join更具灵活性,也不需要修改生产库。但这个方案只有一个缺陷:代码过于复杂,原因在于数据计算并非JAVA特长,若每次遇到跨库问题都用硬编码方式来实现,并不现实。

    建议使用集算器,它是独立的数据计算引擎,拥有不依赖于数据库的计算能力,支持异构数据源的混合运算,比较适合进行动态关联再计算,事实上,可以把集算器看作是语法更简单的BIRT JAVA bean data source。比如实现上面的问题,集算器脚本只需6行:

     

    A

    1

    =DB2.query("select runningNo,networkNo,outAccount,amount from trade")

    2

    ="select"+crossJoinField+","+crossOtherFields+"from"+crossTable

    3

    =Mysql.query(A2)

    4

    =join(A1:trade,${tradeJoinField};A3:cross,${crossJoinField})

    5

    =crossOtherFields.array().("cross."+~).string()

    6

    =A4.new(trade.runningNo,trade.networkNo,trade.outAccount,trade.amount,${A5})

    其中 tradeJoinField,crossJoinField,crossOtherFields,crossTable 为输入参数。最后将计算结果返回给BIRT的DataSet进行报表展现。从此示例来看,集算器的参数用法很灵活,非常适合这类动态关联查询。由于它是专门的计算语言,所以较于常规办法,跨库计算的代码更加精炼易懂。

    其实还有很多类似的跨库、分库计算问题,若有集算器SPL的辅助会很简单,感兴趣可以参考:分库后的统计查询

    集算器提供了JDBC驱动,可以很方便的与BIRT等报表工具集成,BIRT调用SPL脚本有使用和获得它的方法。

    关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器

    展开全文
  • BIRT自带的Data Sources Join以及用ETL转化为同库等方案都难以解决此类问题。具体可以通过如下示例讨论:交易明细数据(trade表)存储于生产系统的数据库DB2中...报表通过参数来决定trade和哪张表做关联,并在报表中显...
  • 所以,报表人不仅得为报表怎么做而发愁,还得为报表制作的效率发愁,一些基础的,随便Excel做做就好了,但是遇到复杂报表,关注的维度点越来越多,满足这样需求的表也越来越复杂,就没辙了,只能默默加班硬扛(此处...
  • “省”、“市”、“县”三列为下拉框,且是关联下拉框</i></font>]]> <![CDATA[ <br/> 注意:</font><br/>     1、在这种编辑方式中需要先点击“修改”按钮才能修改数据;...
  • SAP使用SQVI制作号码段查询报表

    千次阅读 2019-03-17 17:29:33
    顾问的会遇到各种运维的问题,有些号码段要怎么检查,号码段清单在哪,一个检查LIST是不是就很好用,本文就介绍一下SQVI制作号码段的报表的事情其实就2点:1、明确报表的值来自哪些表,表关联关系,这部分...
  • 因使用公司邮箱,准备发布报表到web时,出现了下图(请与管理员联系以启用嵌入代码创建)这几个大字又不知道公司管理员是谁,后来想着自己这个东西也只是自己学习技能分析使用,就想着关闭掉公司的邮箱注册的pow...
  • 有些时候我们做报表,是多个表进行查询。这怎么处理呢。 方法如下: 其它步骤请看前一篇文章 只是在.xsd文件中,多加入一个表,并且将他们相关联 在.aspx文件中代码如下。 SqlConnectionconn=new...
  • 自从上次给老公写了个《定期更新的Excel数据能自动...于是,就在各位童鞋还沉浸在春节假期综合症时,我居然还在跟家里那位讨论怎么做多表关联报表,而那时候,已经凌晨1点了,这,绝对是爱情。 好了,不扯废话了,
  • 自从上次给老公写了个《定期更新的Excel数据能...于是,就在各位童鞋还沉浸在春节假期综合症时,我居然还在跟家里那位讨论怎么做多表关联报表,而那时候,已经凌晨1点了,这,绝对是爱情。 好了,不扯废话了,趁...
  • 65. 现在要这个分销商没有个数,你也得在报表图上出来,这个怎么写。 66. a.name拿到数据字典里面的name字段 select a.name,count(*) from t_data_dict a join t_client b on a.id=b.client_level_id group ...
  • WEB 套打的基本解决思路是:把套打的格式成一张图片,将要填入的数据按其在图片的坐标来定位,最后把数据填充到对应位置。 但是具体实现时会遇到各种问题: 1、 图片坐标定位不精准,实际打印效果有偏移; 2、 ...
  • oracle-构造结果集

    千次阅读 2016-05-27 19:37:22
    做报表有时数据没有关联关系,需要构造一列来关联关系,这时可以一个临时表或者构造一个结果集。 临时表就说了。下面说下如果数据量大怎么在excel里一个结果集: 构造方式是这个: select ‘50637333’...
  • 比如,现在要查询A库下的user表,与B库下的dept表,怎么做关联查询呢!结果是没法做到的。 所以需要在目标库中做一个远程映射表。 解释: 1. 服务器A库(目标数据库)中有 user表,需要这里做查询user表对应的...
  • 早些天在做报表导出时遇到了一件极为头痛的事情,一直纠结于怎么按照报表的样式把数据取出来,冥思苦想无果之后只能请教同事,结果同事看了我的SQL语句之后稍微了一下修改,最后,画龙点睛的在最末尾加了一个"(+)...
  • 禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理...699 计划关联需求时候的搜索,所属计划怎么把所有的都列出来了? 696 测试-bug 已延期标签搜索条件和列表页面延期提醒条件不一致

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

关联报表怎么做