本篇文章给大家分享的是有关为什么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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。