版本: dataease:v2.10.3
安装方式: 本地离线安装, docker 启动.
使用 Calcite 进行语法分析发生了异常:org.apache.calcite.sql.parser.SqlParseException: Expecting alias, found character literal
都是正常可执行的sql 语句, 前面已经报了很多错误了, 大部分是关键词规范 的问题。 但是这个真不知道怎么解决了, 我看了关联的两个 自定义sql 对应额列 的数据格式 是一致的。
Expecting alias, found character literal
sql1:
SELECT
tt.date_column AS ‘日期’, – 使用单引号来标识字符串别名
tt.marketer as ‘市场’,
SUM(CASE WHEN tt.cnt > 0 THEN 1 ELSE 0 END) AS ‘开发数’,
SUM(CASE WHEN tt.accept > 0 THEN 1 ELSE 0 END) AS ‘认领数’
FROM (
SELECT
p.spu,
CAST(p.created_at AS DATE) AS date_column,
p.marketer,
COUNT(*) AS cnt,
SUM(CASE
WHEN pci.status = ‘ACCEPT’ AND p.process_node <> ‘ABORTED’ THEN 1
ELSE 0
END) AS accept
FROM
products p
LEFT JOIN product_claim_items pci ON pci.product_id = p.id
WHERE
p.created_at >= CAST(DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AS DATE)
AND p.created_at < CURDATE()
GROUP BY
p.spu, CAST(p.created_at AS DATE), p.marketer
) AS tt
GROUP BY
tt.date_column, tt.marketer;
sql2:
SELECT
u.name
AS 市场
,
1 as num
FROM
users
u
WHERE
u.department_id = 5
AND u.status
= 1;
都是取了别名的.
我今天再次试了很多试了很多场景, 如果是同数据源, 级联是没有任何问题的, 但是只要跨数据源 就出现问题了, 通过测试我发现大概率是这个原因导致的。 一个数据源是mysql 6.0, 一个数据源是 mysql 8.0 . 两个数据源关联就会报上面的错误, 麻烦看下这个BUG 是否能够解决。
跨数据源的关联,sql数据集需要遵循calcite的语法,不然关联的时候会报错
已解决。tt.date_column AS ‘日期’ 这种需要全部改为 tt.date_column AS 日期