我是方解石的新手。它提供的功能看起来很棒!
在进行研究时,我试图弄清楚如何使用示例ElasticSearch adapter进行一些基本的 SQL 查询。
在 中AbstractElasticsearchTable.getRowType
,它将行映射到 MAP。
问题是:
询问:
select * from zips where \"city\" = 'BROOKLYN'
返回:
city=BROOKLYN; longitude=-73.956985; latitude=40.646694; pop=111396; state=NY; id=11226
询问:
select \"pop\" from zips where \"city\" = 'BROOKLYN'
返回:
pop={pop=111396}
我的目标是总结所有“流行”值。
所以当我构造这样的查询时:
select sum(\"pop\") from zips where \"city\" = 'BROOKLYN'
错误是:
Caused by: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.Integer at Baz$2.apply(Unknown Source) at Baz$2.apply(Unknown Source) at org.apache.calcite.linq4j.EnumerableDefaults.aggregate(EnumerableDefaults.java:117) at org.apache.calcite.linq4j.DefaultEnumerable.aggregate(DefaultEnumerable.java:107) at Baz.bind(Unknown Source) at org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:356)
有人可以指出正确的方向来弄清楚如何使用示例中的这种映射进行聚合吗?
为了执行这个查询,我在ElasticSearchAdapterTest.java
.
@Test
public void select() {
CalciteAssert.that().with(newConnectionFactory())
.query("select sum(\"pop\") from zips where \"city\" = 'BROOKLYN'").returns("");
}