BIRT 中文字與 JSON 關聯怎麼做

xiaohuihui發表於2020-06-19

BIRT對於兩個資料來源的聯合提供了Joint DataSet的解決方案,它具有圖形化的操作介面,可以完成簡單的內外關聯,但功能非常侷限(幾乎沒有二次計算的能力,Join 後再計算只限於簡單查詢和固定查詢,難以實現自由的組合查詢和變數查詢,更不能進行分組彙總再過濾這類多步驟計算)。

BIRT雖然支援CSV/TXT等檔案作為資料來源,但不能構建JSON資料來源,一些開源社群提供瞭解析JSON資料來源外掛,幾乎所有外掛都非常底層,使用起來很不方便。

從能力上講,只有自定義資料來源可以完整的解決這個問題,但BIRT JAVA bean data source這種硬編碼方式比較複雜,工作量巨大。

比如要處理這麼個場景:sales.txt是tab分割的結構化文字,city.json是非結構化的JSON串,sales.txt的第2列和city.json的部分文字存在外來鍵關係,需要將兩個檔案連線為二維表。示意圖如下:

BIRT 中文字與 JSON 關聯怎麼做

建議使用集算器,它是獨立的資料計算引擎,擁有不依賴於資料庫的計算能力,可以從多種多樣的檔案獲取資料並混合關聯運算,事實上,可以把集算器看作是語法更簡單的BIRT JAVA bean data source。比如實現上面的問題,集算器指令碼只需5行:


A

1

=json(file("/workspace/city.json").read())

2

=A1.new(name,#1.(#1):desc,(firstblank=pos(desc," "),left(desc,firstblank-1)):key,right(desc,len(desc)-firstblank):value)

3

=file("/workspace/sales.txt").import@t()

4

=join(A3:sales,#2;A2:city,key)

5

=A4.new(sales.OrderID,sales.Client,sales.Amount,sales.OrderDate,city.name,city.value)

關聯之後還能更方便地實施計算,比如:統計每個城市的銷售額;只需在此基礎上增加1行:=A5.groups(name;sum(Amount):amount)

其實還有很多類似的問題做起來不太方便,比如:計算文字、Excel,甚至關聯計算、入庫等需求,但用集算器SPL卻很簡單,感興趣可以參考: 、

集算器提供了JDBC驅動,可以很方便的與BIRT等報表工具整合, 有使用和獲得它的方法。

關於集算器安裝使用、獲得免費授權和相關技術資料,可以參見 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2699319/,如需轉載,請註明出處,否則將追究法律責任。

相關文章