您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關為什么ksql中定義的本體在dataModel中不存在,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
問題
前幾天還是一切正常。昨天,因為需求方提出了新的需求,所以改動了MySQL中的幾個表格。主要的修改方式是,砍去幾欄,或者刪除幾欄,而保留原來的數據;這一操作借助可視化MySQL工具可以輕松完成。但是,在今天的報表實例運行時出現錯誤“報表執行錯誤:報表數據獲取失敗”。
順著由前往后調試的思路,首先打開前面.w報表文件,發現圖表組件數據源異常,如圖所示:
于是,再往后檢查,跟蹤到BIZ端logic下的Action定義。我使用的是簡單的ksql創建的KSQL類型Action。接下來想仔細分析一下對應的SQL語句,但是點擊ksql編輯器中ksql一行中的...符號想進去時出現如題所示的警告錯誤。請參考下圖:
解答
意思再明確不過了,查看本體定義情況吧。于是,轉到antology子模塊下觀察。乍看是沒有問題的--其實真正存在問題。先到wex5論壇中搜索相關幫助,只找到一條,說是KSQL編輯器正常的錯誤提示,再沒有其他進展與解答。
根據以往操作,肯定是在調整數據表結構后再反向生成本體時出現的問題。于是,再次小心細致地把本體再反向生成一遍,并正常生成對應的數據庫表。
那么,接下來要創建ksql類型的ACTION了。問題正在于這里。此前,我是直接在eclipse中新建概念并填入關系,然后在運行界面中輸入數據的。而現在,我是直接通過MYSQL后面修改的數據表結構,再來反向生成本體。這一步操作中,要特別注意的標準action操作過程的大小寫問題。因為本質上這些ACTION對應于后臺的一些JAVA函數,而JAVA自然是區分大小寫的。
接下來,就是檢查ksql表達式的問題。幸好,以前的ksql還存在。我把它記錄下來,如下:
select Mo_TradeDetail.fTradeNatureClass as fTradeNatureClass,Mo_TradeDetail.fTradeNature as fTradeNature,count(Mo_TradeDetail.fTradeNature) as fTradeNatureCount,sum(Mo_TradeDetail.fTotal) as fTotalCount,sum(Mo_TradeDetail.fFine) as fFineCount from Mo_TradeDetailMo_tradedetail group by Mo_TradeDetail.fTradeNature
現在,點擊【測試】按鈕,運行出現錯誤!但是,沒有更細致的錯誤提示(不像mysql可視化管理工具中那樣提示好定位)!
在浪費了不少時間后,我注意到概念的大小寫與我反向生成本體后概念的大小寫是不一致的(正確的形式是Mo_tradedetail)。于是,我嘗試著把大小寫修改過來,如下:
select Mo_tradedetail.fTradeNatureClass as fTradeNatureClass,Mo_tradedetail.fTradeNature as fTradeNature,count(Mo_tradedetail.fTradeNature) as fTradeNatureCount,sum(Mo_tradedetail.fTotal) as fTotalCount,sum(Mo_tradedetail.fFine) as fFineCount from Mo_tradedetail Mo_tradedetail group by Mo_tradedetail.fTradeNature
現在點擊【測試】按鈕,運行成功了!接下來,再到前面調整報表窗體中的圖表數據源形式便很容易了。
吃虧后的小結
根本原因是對于WeX5中提供的KSQL語法不熟,如下所描述的:這個KSQL語句中,竟然表格(即概念)名字是大小寫敏感的,而后面例如sum函數等根本不敏感!竟然因為小小的語法問題浪費了那么多時間。
以上就是為什么ksql中定義的本體在dataModel中不存在,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。