【问题标题】:creating group and analyzing data from array list in birt从 birt 中的数组列表创建组并分析数据
【发布时间】:2017-12-11 11:50:25
【问题描述】:

我在 birt 报告中使用 mongo db。我有一个数据集,其中包含图片中的对象数组。

deviceStatus 是一个包含状态、错误代码、设备名称等子对象的数组。

我想在创建组时在报告中为 deviceName 创建组,它是以这种形式创建的:

[ "CardReader" , "CashAcceptor" , "CashDispenser" , "ChequeAcceptor" , "EmiratesIdScanner" , "PinPad" , "JournalPrinter" , "ReceiptPrinter" , "StatementPrinter" , "SignpadScanner"]

我希望它以破碎的形式分组,例如:

CardReader
CashAcceptor
CashDispenser ..

errorCode 也以这种形式来自数据集:

[ "97080301" , "97080302,97080303" , "" , "" , "" , "" , "" , "" , "" , ""]

以同样的方式,我想将错误代码和状态代码从数组形式分解到每个 deviceName 的每一行中。

CardReader  97080301
CashAcceptor 97080302,97080303
CashDispenser 

我是 birt 新手,请有人帮忙。提前致谢。

应用 Veeram 的答案后,errorCode 不会显示在报告中,但会显示在预览结果中:

1:

2:

【问题讨论】:

    标签: java eclipse mongodb birt


    【解决方案1】:

    请按照以下步骤获得所需的响应。

    数据:

    db.devicestatus.insert([
      {
        "_id": "0001",
        "className":"store",
        "deviceStatus": [ {
        "deviceName": "CardReader",
        "errorCode": "97080301",
        "status": "Bad"
      },
      {
        "deviceName": "CashAcceptor",
        "errorCode": "97080302,97080303",
        "status": "Bad"
      },
      {
        "deviceName": "CashDispenser",
        "errorCode": "",
        "status": "Good"
      }]
      }
    ])
    

    1.数据资源管理器-进入数据集-新建数据集-选择数据源-输入数据集名称-点击下一步

    2.输入集合名称 - devicestatus - 列出所有字段 - 从命令类型下拉列表中选择聚合选项 - 点击表达式

    3.在表达式生成器提示中添加以下表达式 - 单击确定

    下面的表达式$unwind 将数组展平以将devicestatus 数组分解为文档,然后$project 以保留必填字段。

    [
      {"$unwind":"$deviceStatus"},
      {"$project":{
        "_id":0,
        "className":1,
       "deviceStatus.deviceName":1,
       "deviceStatus.errorCode":1
       }
      }
    ]
    

    以下表达式遍历 devicestatus 数组和 $map$project 必填字段,后跟 $unwind 以展平以将数组分解为文档。

    [{
      "$project":{
        "_id":0,
        "className":1, 
        "deviceStatus":{
          "$map":{
            "input":"$deviceStatus",
            "as":"result",
            "in":{
              "deviceName":"$$result.deviceName",
              "errorCode":"$$result.errorCode"
            }
          }
        }
       }
     },
     {"$unwind":"$deviceStatus"}
    ]
    

    4.确认刷新-点击是

    5.将所有可用字段移动到选定的多选下拉框 - 单击完成

    6.预览结果

    {"className":"store", "deviceStatus":{"deviceName":"CardReader","errorCode":"97080301"}}
    {"className":"store", "deviceStatus":{ "deviceName":"CashAcceptor","errorCode":"97080302,97080303"}}
    {"className":"store","deviceStatus":{"deviceName":"CashDispenser","errorCode":""}}
    

    【讨论】:

    • 非常感谢您的回答!!!!我会在一段时间内检查并验证!再次感谢。
    • 非常感谢您花时间回答这个问题。它奏效了。我对 birt 和 mongo DB 也很陌生。你能解释一下我们在数据集上写的表达式的目的是什么吗??
    • 很高兴为您提供帮助。不客气。添加了一些解释和链接。
    • 再次感谢,您现在是我的老师...现在一切都很好,只有一件事,errorCode 没有出现在报告中,而它出现在预览结果中,我已经更新了答案以包括两张图片,有什么想法吗?
    • 不客气。从未使用过 birt 报告。我建议您为 birt 用户创建一个单独的问题,以便他们查看所有详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多