SQL-网格不支持聚合函数
SQL-Grid not support AggregationFunction
我有以下 sql 句子:
select a.age,floor(a.score) score,count(1) cnt,group_concat(a.id) ids from test_table a group by a.age,floor(a.score) having count(a.id)>10 order by a.age asc,floor(a.score) asc
它可以在 IGNITE_H2_DEBUG_CONSOLE 中执行,但使用 SqlFieldsQuery 时出现以下异常:
Exception in thread "main" javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: null
at org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:1823)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:795)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:765)
at com.xxx.ignite.test2.TestBinaryQuery.query(TestBinaryQuery.java:194)
at com.xxx.ignite.test2.TestBinaryQuery.main(TestBinaryQuery.java:78)
Caused by: class org.apache.ignite.IgniteCheckedException: null
at org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2316)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:1820)
... 4 more
Caused by: java.lang.UnsupportedOperationException
at org.apache.ignite.internal.processors.query.h2.sql.GridSqlAggregateFunction.getSQL(GridSqlAggregateFunction.java:84)
at org.apache.ignite.internal.processors.query.h2.sql.GridSqlAlias.getSQL(GridSqlAlias.java:80)
at org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect.getSQL(GridSqlSelect.java:141)
at org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuerySplitter.split(GridSqlQuerySplitter.java:199)
at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryDistributedSqlFields(IgniteH2Indexing.java:1307)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.applyx(GridQueryProcessor.java:1815)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.applyx(GridQueryProcessor.java:1813)
at org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2293)
... 5 more
我试了一下,发现不支持的操作是group_concat
。 Custom-SQL-Functions 也不支持像 Spark 中的 UDAF 这样的聚合。未来版本支持吗?
当前版本不支持自定义聚合函数,但计划在未来支持它们。
这是一张票:
https://issues.apache.org/jira/browse/IGNITE-2177
我有以下 sql 句子:
select a.age,floor(a.score) score,count(1) cnt,group_concat(a.id) ids from test_table a group by a.age,floor(a.score) having count(a.id)>10 order by a.age asc,floor(a.score) asc
它可以在 IGNITE_H2_DEBUG_CONSOLE 中执行,但使用 SqlFieldsQuery 时出现以下异常:
Exception in thread "main" javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: null
at org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:1823)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:795)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:765)
at com.xxx.ignite.test2.TestBinaryQuery.query(TestBinaryQuery.java:194)
at com.xxx.ignite.test2.TestBinaryQuery.main(TestBinaryQuery.java:78)
Caused by: class org.apache.ignite.IgniteCheckedException: null
at org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2316)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:1820)
... 4 more
Caused by: java.lang.UnsupportedOperationException
at org.apache.ignite.internal.processors.query.h2.sql.GridSqlAggregateFunction.getSQL(GridSqlAggregateFunction.java:84)
at org.apache.ignite.internal.processors.query.h2.sql.GridSqlAlias.getSQL(GridSqlAlias.java:80)
at org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect.getSQL(GridSqlSelect.java:141)
at org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuerySplitter.split(GridSqlQuerySplitter.java:199)
at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryDistributedSqlFields(IgniteH2Indexing.java:1307)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.applyx(GridQueryProcessor.java:1815)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.applyx(GridQueryProcessor.java:1813)
at org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
at org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2293)
... 5 more
我试了一下,发现不支持的操作是group_concat
。 Custom-SQL-Functions 也不支持像 Spark 中的 UDAF 这样的聚合。未来版本支持吗?
当前版本不支持自定义聚合函数,但计划在未来支持它们。 这是一张票: https://issues.apache.org/jira/browse/IGNITE-2177