(我在答案的底部添加了基本问题解决方案和基本理解(标记为:1),在两个示例报告图形下面!)
我实际上喜欢的只是字符串
列字段上的 DISTINCT COUNT
,但在我看来,所有聚合函数的行为都像是在模拟 FIRST(...)
功能一样。
我不敢相信这个坏了,看起来我更有可能错过了一些非常奇怪的东西。
(我对JasperReports已经很有经验,以前也使用过BIRT和其他报告框架。)
查看文档,我看不出问题应该在哪里:http://www.jasperassistant.com/docs/guide/ch06s08.html
最后,我创建了附加的简单示例报告(现在是另一个test-report-ext.jrxml,它通过更好的结构、标记和sql生成的比较数据来增强这个报告),并基于示例db更新到最新的5.5.1.final版本,没有任何进展。
请任何人告诉我我错过的秘密,或者让我大吃一惊的是,确保它确实是一个错误。:-(
谢谢
安德烈亚斯:-)
正如您在报告中看到的,只有一些页眉
和摘要区间
,包含产品ID/名称/成本
标签,名称计数
,成本计数
,成本总
和以及名称计数增量类型
的所有变体(报告/列/页/无
)。汇总带
包含成本总和
。详细区间
仅包含详图字段
。
但是没有一个聚合函数显示聚合数据,而只有第一个(xxx)
结果。(无论如何,计数(name)
显示第一行名称
列值而不是数字
:-( )。
(我也在Jasper论坛上发布了这个问题,并将在重要的帖子上保持更新:http://community . Jasper soft . com/questions/824152/aggregate-functions-count-sum-broken-Jasper soft-studio-550 final-and-551 final)
用户汇总和标题区的解决方案12...解决了问题,同时显示了设置有多混乱(显示了test-report-ext-fixed.jrxml的结果):
我想为像我这样的其他人添加一些信息(或者为我自己添加一些信息,以防我不得不在一段时间后再次添加,而忘记了这些特性;-),这些信息可能会被提供的设置选项、底层逻辑、(Eclipse)Jasper Studio工具提示和我的答案第一部分中引用的文档所混淆和误导。。。
正确的理解/设置(据我所知):
>
变量
,可以在特定的生成步骤和可以有文本字段
(可以基于这些变量),可以在某些生成步骤中更新
使用聚合函数...
,计算 = 计数
=浮点值
整数
Variables
自动发生,那么很容易忘记2实现此功能
标题栏中使用一些Count
在可以设置而不产生任何影响的情况下,可能会使2混淆,尽管没有给出工厂,因此可能会将其与重置类型
语义混淆:-(
2:这应该通过更严格的贾斯珀工作室输入验证,提到的文档和贾斯珀工作室工具提示来解决!
匿名用户
我忘了提到一些简单的解决方案,以防有人遇到类似的“损坏”问题,奇怪或不足的聚合功能,至少如果你有一些Oracle数据库或类似的聚合功能:
人们可以在查询级别上聚合数据(当然与报告页面等无关),这可能具有优点或缺点(内存占用,网络/ io流量,专业知识等),例如:
select
x.*,
sum(distinct name) over () as name_cnt_distinct, -- of all results
count(distinct cost) over () as cost_cnt_distinct, -- of all results
count(*) over () as row_cnt, -- of all results
sum(cost) over (partition by trunc(cost/10)) as cost_sum_per_cost_range_10 -- per cost range 0..10, 10..20, 20...
from product
where id < 20
(对我来说也可以)
此外,如果您在报告中使用一些过滤功能,并根据过滤的数据进行计算(像我一样),像上面这样的数据库视图可能没有帮助(因为它事先不知道过滤器设置)。
Oracle为这种称为< code >表函数的功能提供了一些< code >参数化视图(此处称为“可过滤视图”)功能,在这种情况下非常方便,可以帮助将信息生成逻辑(数据库引擎擅长于此)与显示/布局/图形/国际化逻辑(报表引擎擅长于此)分开
将resetType设置为“None”可能是您的问题(至少对于IdSum)。但不知道为什么最终会是38岁。将resetType设置为“Report”或无(默认为Report),使其工作:
<variable name="IdSum" class="java.lang.Integer" calculation="Sum">
<variableExpression>$F{ID}</variableExpression>
</variable>
变量CostCnt也是如此,尽管它将是一个正常的和,而不是一个不同的和。
如果这最终解决了你的问题,请将解决方案发布到论坛中。
您可以修改标题中的计算字段,只需从现在开始更改您的文本字段评估时间以报告更改
<textField>
<reportElement uuid="d30afc9a-40bc-4d5a-a4eb-15bf4f881acd" x="100" y="18" width="50" height="20" forecolor="#FF0000"/>
<textElement/>
<textFieldExpression><![CDATA[$V{NameCntNone}]]></textFieldExpression>
</textField>
到
<textField evaluationTime="Report">
<reportElement uuid="d30afc9a-40bc-4d5a-a4eb-15bf4f881acd" x="100" y="18" width="50" height="20" forecolor="#FF0000"/>
<textElement/>
<textFieldExpression><![CDATA[$V{NameCntNone}]]></textFieldExpression>
</textField>
对每个TextField执行此操作,您应该会看到计算值。
我是JasperReports/Jaspersoft Studio的新手,对图表有点纠结。专家们可能会发现它非常原始,可能我在这里遗漏了一些非常基本的东西。下面是我尝试做的事情的简要说明 1)数据源是csv,具有以下字段 Sr_No、URI、total_time_taken、No_of_requests、avg_time_per_req、most_expensive_req,timestamp_o
恐怕我想多了,但我在饼图中使用变量“增量表达式”时遇到了问题。 我想要的是:$F{dataAsOfDate}==$V{maxDate},但它不起作用。相反,它仍然会拉入所有记录,就好像这个过滤器没有到位一样。我唯一能想到的是,它对每一行的变量求值。数据源中总共有12个日期,我只希望饼图使用最近日期的数据。 我只使用带有饼图和另一个列/线组合图的摘要带。饼图的重置类型为“报告”,增量类型为“无”。
我需要打印一些大数值。一个值看起来像这样 2564894621 现在我想将浮点值格式化为: 2.564.894.621 我正在使用贾斯珀软件工作室来开发我的碧玉报告。
我有一些文件存储在Elasticsearch中,如下所示: 我想得到的是字段1、字段2或字段3对每个文档的最大次数的计数,按日期分组,即。期望结果如下: 我在date上使用了一个术语聚合,但不知道如何比较不同的字段,以便使用Elasticsearch聚合来执行此max and count类型的操作。有什么建议吗?
我正在与Jaspersoft Studio开发一些报告 我有一个web应用程序,它应该接受REST查询,并将它们转换为编译的报告 所以我包含了一些JasperReports jar: < li>groovy-all-2.0.1.jar < li>iText-2.1.7.js2.jar < li>jasperreports-5.2.0.jar 问题是当我编译我的报告并从Jaspersoft Stud
问题内容: 为什么将只有私有构造函数的类标记为final是一个好习惯?我的猜测是,要让其他程序员知道它不能被子类化。 问题答案: 将类定为final具有一些(小的)性能提升,因为JIT编译器可以内联该类的功能。我不知道这是否符合“良好做法”的要求,但是我看到了好处。