湖北省建設(shè)廳建筑資料官方網(wǎng)站360點(diǎn)睛實效平臺推廣
關(guān)于doris數(shù)據(jù)庫
Apache Doris 是一個基于 MPP 架構(gòu)的高性能、實時的分析型數(shù)據(jù)庫,以極速易用的特點(diǎn)被人們所熟知,僅需亞秒級響應(yīng)時間即可返回海量數(shù)據(jù)下的查詢結(jié)果,不僅可以支持高并發(fā)的點(diǎn)查詢場景,也能支持高吞吐的復(fù)雜分析場景?;诖?#xff0c;Apache Doris 能夠較好的滿足報表分析、即時查詢、統(tǒng)一數(shù)倉構(gòu)建、數(shù)據(jù)湖聯(lián)邦查詢加速等使用場景,用戶可以在此之上構(gòu)建用戶行為分析、AB 實驗平臺、日志檢索分析、用戶畫像分析、訂單分析等應(yīng)用。其他相關(guān)信息請自行某度。
問題描述
項目上遇到了一個奇怪的問題,SQL查詢出來明明沒問題,到頁面顯示出現(xiàn)了0E-9。之前也出現(xiàn)過類型的,小數(shù)點(diǎn)后顯示了很多多余的0。各種跟代碼(以為是程序進(jìn)行了相關(guān)的處理,但并無)、百度無果,而且doris相關(guān)的文章都是介紹如何安裝、使用之類的,對于出現(xiàn)的問題,以及解決方案幾乎沒有。項目實際情況截圖如下

問題排查
3.1. 跟蹤代碼
斷點(diǎn)到執(zhí)行SQL前跟蹤了一下SQL和執(zhí)行后的結(jié)果,發(fā)現(xiàn)java.sql.Connection.prepareStatement執(zhí)行返回的結(jié)果與界面顯示一致。雖然有過懷疑是否可能是工具類的bug,但暫時不深究,所以繼續(xù)往下排查
3.2. 數(shù)據(jù)庫工具執(zhí)行SQL
原始SQL是處理通用的統(tǒng)計查詢:交叉報表,為了兼容多種數(shù)據(jù)庫類型

執(zhí)行SQL原始情況截圖

莫名其妙,但又覺得神奇。按照業(yè)務(wù)SQL,編寫了模擬的SQL查詢,貌似也沒問題

然后就反復(fù)測試原始SQL,測試各種可能會出現(xiàn)問題的點(diǎn),均無果。
發(fā)現(xiàn)問題的契機(jī),就是在雙擊查詢結(jié)果的單元格后被發(fā)現(xiàn)了:doris會把浮點(diǎn)型數(shù)字后追加若干個0。但是為什么有這種機(jī)制,是否可以通過數(shù)據(jù)庫設(shè)置避免,等以后有時間再去深究吧
整數(shù)查詢

小數(shù)查詢

解決方案
方案有多種,比如直接代碼處理;或者業(yè)務(wù)設(shè)置保留小數(shù)位數(shù)后,修改SQL保留等,比如

或者熟悉doris的大佬可以提供更好的方案吧
doris使用心得
就目前開發(fā)上使用doris數(shù)據(jù)庫的體驗來說,并不友好。雖然他有各種優(yōu)點(diǎn),但在開發(fā)階段,基本都沒用到過,不過其他基本的功能卻有很多不支持
不支持WITH語句:需要改成子查詢的方式;
left join語句查詢時,右表數(shù)據(jù)量不能比左表大,否則會查詢異常;