在 Apache Superset 中,如果使用 OpenLink Virtuoso 数据库(ODBC 驱动程序 + Alchemy 方言),则any SQL 查询将显示以下错误:
这是因为 Apache Superset 会自动向 SQL Lab 中的任何 SQL 语句添加
LIMIT
子句,但 Virtuoso SQL 不支持 SQL 语句中的 LIMIT
子句。 (Virtuoso 使用 TOP
。)
例如SQL Lab中这样的初始SQL语句
SELECT TOP 3 count(*) FROM DBA.VALUE_FACT
由 Virtuoso ODBC 驱动程序接收,如下所示:
SQL = [SELECT TOP 3 count(*) FROM DBA.VALUE_FACT
LIMIT 101][length = 51]
有没有办法通过 Superset 中的配置更改来解决该问题?
您可能会好奇 SPARQL 查询(以关键字
SPARQL
开头)在 SQL Lab 中运行得相当好。
还有其他人想要禁用 Superset
中的
LIMIT
子句。目前看来还不可能(但请将您的名字添加到列表中!)。
我建议您还请求 Virtuoso 在其 SQL 方言中添加对
LIMIT
/OFFSET
的支持,因为它已经在 SPARQL 中支持 LIMIT
/OFFSET
...这可以解释为什么 SPASQL (SPARQL -in-SQL)查询在 Superset 中工作。