2017-12-11 22 views
1

버트 보고서에 mongo db를 사용하고 있습니다. 그림과 같이 객체의 배열을 포함하는 데이터 세트가 있습니다.그룹 생성 및 birt의 배열 목록에서 데이터 분석

enter image description here

deviceStatus는 장치 이름 등

내가 그룹을 만들 때 보고서에 장치 이름의 그룹을 만들려면,이 만들어집니다 상태, erroCode, 같은 자식 객체를 포함하는 배열입니다 이 양식 :

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

내가 좋아하는 깨진 형태로 그룹화 할 :

CardReader 
CashAcceptor 
CashDispenser .. 

은 또한 errorCode를 설정 데이터에서이 형태로오고있다 :

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

을 나는 각각의 장치 이름이 좋아하는 각 행에 배열 형식에서 오류 코드와 상태 코드를 중단 할 같은 방식으로.

CardReader 97080301 
CashAcceptor 97080302,97080303 
CashDispenser 

안녕하세요, 제발 누군가 도움이됩니다. 미리 감사드립니다.

Veeram의 답변을 적용한 후, errorCode를 보고서에 표시하지만 거기에 미리보기 결과에되지 않습니다

1 : enter image description here

2 :

enter image description here

답변

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.Data 탐색기 - 데이터 이동이 설정 - 새 데이터 세트 - 데이터 원본 선택이 - 입력 데이터 세트 이름 - 다음을 클릭

enter image description here

2.Input 컬렉션 이름 - devicestatus - 모든 필드 목록 - 명령 유형 드롭 다운에서 집계 옵션 선택 - 클릭 식

enter image description here

3.Add 식 작성기 프롬프트에서 아래 표현 - 필수 필드를 유지하기 위해 $project 다음 문서에 devicestatus 배열을 분해 배열을 평평하게 표현 $unwind 아래 OK

enter image description here

을 클릭 .

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

OR

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.Confirm가 새로 고침 -

5.Move 선택한 다중 선택 드롭 상자에 사용 가능한 모든 필드

enter image description here 예를 클릭 - 마침

enter image description here

6.Pre 결과보기

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

답장을 보내 주셔서 감사합니다 !!!! 나는 잠시 후에 확인하고 확인할 것입니다 !! 다시 한번 감사드립니다. – Talib

+0

나는 이것에 대답하는 데 시간을 보내기 위해 당신에게 매우 감사한다. 그것은 효과가 있었다. 나는 DB와 mongo DB에 대해서도 매우 익숙합니다. 우리가 데이터 세트에 쓴 표현의 목적이 무엇인지 설명해 주시겠습니까 ?? – Talib

+0

도와 드리겠습니다. 천만에요. 설명과 링크를 추가했습니다. – Veeram