问题标签 [apache-calcite]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1949 浏览

java - 如何在 Calcite 中将项目、过滤器、聚合下推到 TableScan

我正在使用 Apache Calcite 来实现一个分布式 OLAP 系统,它的数据源是 RDBMS。RelNode所以我想将树中的项目/过滤器/聚合下推到MyTableScan extends TableScan. 在MyTableScan,一个RelBuilder得到推RelNode。最后,RelBuilder生成对源数据库的查询。同时,RelNode应移动或修改原始树中的项目/过滤器/聚合。

据我所知,方解石不支持此功能。

当前限制:JDBC适配器目前只下推表扫描操作;所有其他处理(过滤、连接、聚合等)都在 Calcite 中进行。我们的目标是将尽可能多的处理下推到源系统,同时翻译语法、数据类型和内置函数。如果 Calcite 查询基于单个 JDBC 数据库中的表,则原则上整个查询都应该转到该数据库。如果表来自多个 JDBC 源,或者 JDBC 和非 JDBC 的混合,Calcite 将使用它可以使用的最有效的分布式查询方法。

在我看来,RelOptRule可能是一个不错的选择。不幸的是,当我创建 new 时RelOptRule,我无法轻松找到要删除节点的父节点。

RelOptRule是一个不错的选择吗?任何人都有实现此功能的好主意?

谢谢。

0 投票
1 回答
377 浏览

java - 如何构建 Apache calcite Excel 适配器

我可以在哪里获得适用于 Apache calcite 的 Excel 适配器。

我正在尝试创建 ExcelEmumarator 类。

0 投票
1 回答
225 浏览

java - Apache Calcite 在 Web 应用程序中不起作用

我在我的项目中使用 Apache Calcite 来进行 CSV、Excel 和其他数据库管理。它在我通过 main 方法执行时工作,但在通过 Web 服务执行时出错

0 投票
1 回答
523 浏览

apache-calcite - 具有默认参数值的方解石函数

我正在使用 Apache Calcite 添加一些内置函数。现在,我想实现GROUP_CONCAT类似 MySQL 的功能,将一列与一个分隔符连接起来。

函数类如下:

现在,我希望这个函数可以接受一个参数(不带分隔符)或两个参数。当只接受一个参数时,将第二个参数设置为默认值。

我没有找到在 Calcite 中设置默认参数值的任何方法。有实现此功能的方法吗?

0 投票
1 回答
1305 浏览

java - Apache Calcite:将 SQL 解析树转换为关系表达式树,无需验证

我目前正在做一个项目,我想在其中解析一个 SQL 查询并为其创建关系表达式树。主要目标是识别查询中的加入伙伴。所以我想将连接表达式向下推到树的叶子上。为此,我决定使用 Apache Calcite。我的代码目前大致是这样的:

如果我尝试直接执行Planner的 rel-Method ,我会收到必须先验证查询的错误。这就是我面临麻烦的地方。我没有有效的架构。我只想将查询转换为关系查询计划。有没有办法跳过验证过程?

0 投票
1 回答
429 浏览

mongodb - Apache Calcite:处理 MongoDB 集合名称中的特殊字符

如果集合的名称包含特殊字符(例如?),是否有办法在 MongoDB 上执行 SQL 查询1a84375b-9bd0-4ec3-9f93-536ce380f813org.apache.calcite.sql.parser.impl.ParseException我在执行我的语句时遇到。有转义字符吗?

0 投票
1 回答
660 浏览

java - 将 Kafka 与 Apache Calcite 集成

我正在尝试将方解石与 Kafka 集成,我引用了 CsvStreamableTable。

每个 ConsumerRecord 都使用以下代码转换为 Object[]:

枚举器实现如下,一个线程不断从kafka轮询记录并将它们放入队列,getRecord()方法从该队列轮询:

我测试SELECT STREAM * FROM Kafka.clicks了,效果很好。rowtime 是显式添加的第一列,其值为 Kafka 的记录 Timestamp。

但是当我尝试

它抛出异常

0 投票
1 回答
364 浏览

druid - Calcite-Druid 适配器中的超唯一聚合

在我的 Druid 数据源中,我在其中一个字段上有一个 hyperUnique 聚合(摄取时间)。

我正在尝试COUNT(DISTINCT(<hyperunique_field>))在这个聚合字段上做相当于。

Calcite Druid Adapter 是否支持它?如果是这样,正确的方法是什么?

在胶合板中,我可以做到COUNT_DISTINCT。运行此返回 0 个计数。

SQL:

选择 floor("__time" to HOUR) time_bucket,"field_1", count(distinct("ingestion_time_aggregated_field")) as uniq from "datasource" where "__time" between '2017-01-01 00:00:00' 和 '2017 -01-02 00:00:00' and “field_1” in ('value_1') and “field_2”='value_2' and “field_3”='value_3' and “field_4”='value_4' group by floor("__time " to HOUR),”field_1" order by floor("__time" to HOUR);

摄取时间聚合字段:

0 投票
1 回答
300 浏览

groovy - Apache Calcite - ReflectiveSchema StackoverflowError

我正在尝试使用 ReflectiveSchema 创建一个简单的模式,然后尝试使用 Groovy 作为我的编程语言来投影一个员工“表”。代码如下。

我似乎正确地将“模式”对象传递给 ReflectiveSchema 类的构造函数,但我认为它在尝试获取 Employee 类的字段时失败了。

这是错误

这个例子有什么问题?

0 投票
1 回答
845 浏览

sql - Apache Calcite - 使用 SQL 访问 RESTFul 服务

我已经阅读了文档,我有点难以掌握应该如何为任何东西编写适配器。我想通过类似 SQL 的接口为业务人员简化 RESTful Web 服务的访问。

粗略的要求看起来像:

  1. 注册数据源,在本例中为端点
  2. 添加端点到表的映射
  3. 执行简单的选择查询
  4. 允许基于某些连接键但在客户端应用程序内存中执行连接
  5. 以表格格式表示输出