- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在加入 Birt 中的两个数据集。它是一个左外连接。以下是数据集的屏幕截图。
我需要左表所有行的原因是我正在对左表所有行的时间戳进行一些计算。如果终端 ID 与左表匹配,我需要计算右表中的优先级(发生了多少次)。
当我获取记录时,它会获取重复的记录,这会导致我的时间戳计算加倍。我不能进行内部联接,因为我需要从左表中进行时间戳计算。
两个表的多对多关系。我将举例说明我面临的问题是什么以及我想要实现的目标。例如。这是 DeviceEventObject 数据集的事件数据:
记录 1:
"event" : "EXITED SUPERVISOR MODE",
"timestamp" : ISODate("2017-12-17T06:06:23.181Z"),
"terminal" : {
"terminalId" : "testterminal",
"branchId" : "test"
}
记录2:
"event" : "ENTERED SUPERVISOR MODE",
"timestamp" : ISODate("2017-12-17T06:06:23.181Z"),
"terminal" : {
"terminalId" : "testterminal",
"branchId" : "test"
}
我根据每个事件的时间戳计算进入和退出事件之间的时间。
现在另一个数据集是DeviceStatusErrorCodePrioirtyLevel:例如。这是此数据集中的记录:
"status" : "Online",
"errorCode" : "123",
"priorityLevel" : "test",
"emailTypeCode" : "123",
"terminal" : {
"terminalId" : "testterminal",
"branchId" : "test"
}
现在我想计算 terminalId "testterminal"的优先级 "test"发生的次数。使用上述数据集计数将为 1。我在 terminalId 的基础上加入这两个数据集。
现在有了上面的数据集,我得到了重复的记录,这使我计算的时间翻了一番,而且我还得到了优先级 2 的计数。例如,这是我得到的:
"event" : "EXITED SUPERVISOR MODE", "priorityLevel" : "test"
"event" : "ENTERED SUPERVISOR MODE", "priorityLevel" : "test"
我想要的是:
"event" : "EXITED SUPERVISOR MODE", "priorityLevel" : "test"
"event" : "ENTERED SUPERVISOR MODE",
birt 项目的附加信息:
来自两个数据集的示例数据:
DeviceStatusErrorCodePrioirtyLevel:
{
"_id" : ObjectId("5a36095f1854ad0b7096184b"),
"className" : "com.omnia.pie.cm.models.snapshot.terminal.v2.DeviceStatusErrorCodePrioirtyLevel",
"timestamp" : ISODate("2017-12-17T06:06:23.181Z"),
"deviceName" : "CardReader",
"status" : "Online",
"errorCode" : "123",
"priorityLevel" : "test",
"emailTypeCode" : "123",
"terminal" : {
"terminalId" : "testterminal",
"branchId" : "test"
}
}
DeviceEventObject:
{
"_id" : ObjectId("5a3608c61854ad0b70961846"),
"className" : "com.omnia.pie.cm.models.snapshot.terminal.v2.DeviceEventObject",
"event" : "EXITED SUPERVISOR MODE",
"value" : "True",
"timestamp" : ISODate("2017-12-17T06:03:50.901Z"),
"transactionData" : {
"transactionType" : "",
"transactionNumber" : "",
"sessionId" : ""
},
"terminal" : {
"terminalId" : "testterminal",
"branchId" : "test"
}
}
以下是我报告的链接,以防万一: https://drive.google.com/file/d/1dHOEneG2-fbeP9Mz86LUhuk0tSxnLZxi/view?usp=sharing
最佳答案
为 DeviceEventObject 添加一个新的数据集
在命令表达式构建器中添加以下聚合函数。
下面的函数$lookup
基于terminalId的状态错误代码优先级的数据,然后是$unwind
来展平数据。
$group
terminalId 上的展平数据以累积终端 ID 的不同优先级。
$project
计算不同的优先级
[{$lookup:{
from: "devicestatuserrorcodeprioirtylevel", // name of the collection
localField: "terminal.terminalId",
foreignField: "terminal.terminalId",
as: "dsecpl"
}},
{$unwind:"$dsecpl"},
{$group:{
"_id":"$terminal.terminalId",
"prioritylevels":{"$addToSet":"$dsecpl.priorityLevel"},
"events":{"$push":"$event"}
}},
{"$project":{"prioritylevelcount":{"$size":"$prioritylevels"}, "events": 1} }
]
将所有可用字段移动到所选字段列。
预览结果。
关于eclipse - 在 Birt 报告中获取左侧的重复行加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47808428/
我有一个使用 ReportLibraries 中的组件动态组装 BIRT ReportDesigns 的环境。这些 ReportLibraries 存储在数据库中,在文件系统的任何位置都找不到。 我想
我创建了一个采用单个参数的简单报告。该参数在查询中使用,直接在报表设计器中执行时执行良好。顺便说一句,我没有为这份报告使用 javascript 或任何脚本。我看到有些人试图在这里使用脚本和/或 ja
我需要为我的一份报告添加新的字体类型,Monotype Corsiva。我如何在 BIRT 中做到这一点?我的 BIRT 版本是 3.7.2。我有 ttf 和 otf 文件。 最佳答案 在我的本地主机
我似乎无法找到一种方法在 Eclipse 的 Birt 报告中的表格的一行中插入另一个单元格,有人知道该怎么做吗? 谢谢 最佳答案 不完全确定您遇到了哪个问题,但解决方案应该是; 1 在表格中插入一列
我知道 ActuateOne 为 BIRT 添加了交互性和更轻松的部署,但该网站对于实际提供的功能/改进非常不具体。 所以我想知道,ActuateOne 添加到 BIRT 的具体功能是什么?在什么情况
我这里有问题。 我正在使用 BIRT 制作发票模板。我有一个表格列数量,单价和数量(单价*数量)。在表尾,我想计算总金额,例如 excel 如何计算其列值的总和。我该怎么做呢? 最佳答案 首先,从您想
如何在 BIRT 中制作通用母版页?我希望我的所有报告都使用一个通用母版页,以便我可以在一个地方进行更改,并且所有使用该母版页的报告都会自动获得更改。 最佳答案 在 BIRT 库中创建一个母版页,然后
我有一个带有如下查询的数据集: select s.name, w.week_ending, w.sales from store s, weekly_sales_summary w where s.i
我有一个使用 BIRT 的桌面应用程序。在 jar 文件中,我在资源文件夹中有一个目录,其中包含设计和库文件。即使它们在同一个文件夹中,当我运行应用程序时,我也会收到一个异常,表明它找不到 rptli
我正在使用 Eclipse/BIRT 编写报告查询。目前我创建了一个查询 ?参数的字符,然后我可以在参数选项卡下为参数赋值。 但是,如果我需要多次分配相同的值,则必须多次执行此操作,每个适当的 ? 一
我需要更改 BIRT 报告中表格的方向,以便表格标题是垂直的而不是水平的。 这可能吗?我不想使用交叉表。 最佳答案 似乎这个线程仍然被指向,所以我发布了一个使用交叉表的水平表格布局的示例。我知道这对原
如果查询没有返回数据,我想隐藏一个表并报告存在“无数据”消息。 在计算列中,我添加了计算当前行数的列(即 TableCheck)。 我在表格下方创建了带有“无数据”消息的标签。在脚本 onCreate
我已经在birt中做了报告。包含查询的报表数据集,其中包含许多使用 Startdate 参数的 where 条件。我设置了两个参数Startdate和Enddate。我想将该参数从 Startdate
有没有办法让单词采用盒子格式,其中每个字符都放在一个盒子中进行报告。我用的是3.7版本。 [h][e][l][l][0] 我用方括号显示。但报告中应该是单个字段(方框)。 通常,表单中的帐号是这样报告
我正在使用 BIRT 报告工具版本 2.5.2。我想使用 XML 数据源生成 PDF 格式的 BIRT 报告。我有以下 XML 节点结构, {Name Of Employ
当数据集具有字符串参数时,SpagoBI Studio BIRT 无法检索外部数据集定义。 我想要一个带有字符串参数的外部数据集,在 SpagoBI 中定义。该数据集使用查询的 WHERE 子句中的参
我正在创建一个从 SQL 获取数据的 BIRT 报告。报告中有 4 个不同的查询,它们在报告的 4 个不同表中提供输出。我在每个表中添加了标题(标题)(使用插入文本功能/标签功能)。我的要求是在 pd
我需要在将生成为 PDF 的报告上创建目录。 不幸的是,BIRT 中的 TOC 机制在导出为 PDF 时是添加书签。 但是,我需要放置一个报告 A 部分........................
这就是我想要做的:我有一个 Eclipse 插件,其中包含某些数据(实际上是代表项目文件结构的字符串)。这些字符串可以通过通常的 getter 访问并存储在列表中。我现在想将这些字符串放入 BIRT
我已将 BIRT 报告集成到 Grails 中并设计了一份报告。我的 grails 应用程序中有一个名为 startPeriod (仅限月份和年份)的参数,我想将其传递给 BIRT。然后 BIRT 调
我是一名优秀的程序员,十分优秀!