QuickBI报错“调用对象查询时异常:... Parse exception - invalid token...”

产品名称

QuickBI

产品模块

仪表板

概述

需要仔细检查SQL语法,计算字段要按照标准格式书写

问题描述

数据集预览数据都正常,但是仪表板制作图表时报错,报错内容:调用对象查询时异常 : INTERNAL: java.sql.SQLException: [400] com.aliyun.odps.OdpsException: ODPS-0130161:[1,39] Parse exception - invalid token ',', expect one of 'MINUS','UNION','INTERSECT','EXCEPT','SEMICOLON'#ODPS-0130161:[1,46] Parse exception - invalid token '('#ODPS-0130161:[1,201] Parse exception - invalid token 'LIMIT'

问题原因

SQL语法有误,需要仔细排查带有聚合函数的计算字段。数据集预览正常,仪表板报错,是因为数据集预览时,不会预览带有聚合函数的字段。

解决方案

需要逐个排查计算字段的语法是否有误,语法与数据集使用的数据库类型有关,QuickBI没有内置的函数。新手遇到比较常见的错误:

  • 聚合函数后面不写括号
错误写法:count [字段a]
正确写法:count([字段a])
  • 计算字段引用的字段名不是通过单击右侧字段列表或者键盘点击“[”唤出的,而是手动打上的。
错误写法:count(字段名)
正确写法:count([字段a])
  • 除法没有考虑分母为0的情况
错误写法:sum([字段a])/sum([字段b])
正确写法:case when sum([字段b])=0 then 0 else sum([字段a])/sum([字段b]) end
  • 写计算字段时,函数前写“=”
错误写法:=count([字段a])
正确写法:count([字段a])

由于这块报错的原因很多,无法逐一枚举,只要在遇到带有"Parse exception - invalid token"字样的报错内容,就需要特别注意计算字段的语法问题。

更多信息

相关文档

添加计算字段:https://help.aliyun.com/knowledge_detail/30345.html