gpt4 book ai didi

mysql - 如何重复使用不同数据集的报告?

转载 作者:行者123 更新时间:2023-11-29 07:12:16 25 4
gpt4 key购买 nike

在不同的表/数据集上重复使用报告的最佳方式是什么?

我有许多在 BIRT 中构建的报告,它们从平面(非规范化)MySQL 表中获取数据,而这些数据又是从 Excel 工作表中导入的。

在 BIRT 中,我构建了这样的查询,这样我就可以更改字段名称并重新使用报告:

SELECT * FROM
(SELECT index as "Index", name as "Name", param1 as "First Parameter" FROM mytable) t

但是,当我切换到新客户的数据时,我需要将查询更改为新数据源,这似乎不可持续或接近于良好做法。

那么...什么是好的做法?

  • 这是报告问题还是数据库设计问题?
  • 我是否创建了报告连接到的标准 View ?
  • 如果我有一个标准 View ,我是为每个数据表创建一个具有相同结构的不同 View ,还是在每次运行报告时继续使用对正确数据表的引用替换 View ?

令人恼火的是 Excel 工作表不断变化 - 添加了新列,并且不同的客户对其数据的命名也不同。即使我可以对此进行标准化,我也​​会将不同的客户数据存储在不同的表中……那么我是否需要为每个客户创建不同的报告,或者将表名传递给报告?

最佳答案

有两种方法,您选择的路径实际上取决于您在架构上的灵 active 。

首先,将所选列重命名为通用名称是正确的做法,因为该名称用于将数据绑定(bind)到报表上的控件。您是否考虑过使用存储过程来访问数据?这将从报告中删除查询,并允许您在任何数据库上设置存储过程以返回必要的列。如果您无法卸载到存储过程,则始终可以依靠在运行时更改查询文本。由于 BIRT 报告未编译(它们是 XML),您可以根据参数更改查询并在设计的每次运行中执行它。查看数据集的 onCreate 事件,您可以访问 this.queryText 并通过 JavaScript 执行您需要的任何动态字符串替换。隐藏参数是帮助更改/调整查询的好方法。如果正确构建数据集,更改基础数据就像更改数据源一样简单,然后将数据集重新关联到新数据源(在编辑数据集窗口中)。我已经这样做了很多次并且效果很好。如果你沿着这条路走下去,我会添加数据源、数据集和它们向报表库提供数据的任何控件。通过该库,您可以在许多报表中使用控件并将它们集中在一处进行维护。如果您更新库,所有使用该库的报告也会更新。

或者,如果您想真正致力于一个完全可重用的策略,允许您构建一个可重用组件库,您可以在 BIRT Exchange (Reusable Component Library) 上查看免费的可重用组件库。在我看来,这种策略会给你带来你正在寻找的重用,但代价是可维护性。它是抽象到混淆的程度。它需要完全通用的列和控件名称,这使得调试非常困难。虽然它不是我的第一选择(上面的选项是),但其他人已经成功地使用了它,所以我想我会把它包括在这里,因为它直接回答了你的问题。

关于mysql - 如何重复使用不同数据集的报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3725931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com