首页 > 解决方案 > 在 apache calcite 中创建具有动态列的表

问题描述

图数据库中有两个表。用户 { id, name} 组 { id, name}

用户通过边缘连接到组。不,我想通过带有 where 子句的 apache calcite 查询这个 select * from User where User.Group.id="Foo"

由于 apache calcite 接受带有预定义表和预定义列的模式,因此上述查询在验证步骤中失败。实现这种方式的一种方法是将用户定义为 {id, name, Group.id, Group.name} 的四列。现在问题出在我的情况下,一个表可以连接到多个其他表,并且深度可以达到 6 深度。创建一个包含其子类的所有列的表,并导致一个包含许多动态列的表。

有没有办法将表的列定义为它们在查询中出现的方式。

标签: apache-calcite

解决方案


查看已解决的问题https://issues.apache.org/jira/browse/CALCITE-1150

它将 DynamicRecordType 引入 Apache Calcite。这是建议的规范https://docs.google.com/document/d/1vCWlqRyJQCtYbtVAjGOKP-8BD4_hrhoM9-4qbdoJs6k/edit

我认为它被 Apache Drill 项目使用,请参阅https://github.com/apache/drill/search?q=DynamicRecordType


推荐阅读