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

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

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

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

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

小數(shù)查詢

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

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