apache-calcite - 在 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 深度。创建一个包含其子类的所有列的表,并导致一个包含许多动态列的表。
有没有办法将表的列定义为它们在查询中出现的方式。
解决方案
查看已解决的问题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。
推荐阅读
- r - 在 R 中拆分字符串以获得多个符号
- assembly - 虚拟工作室空间分配过度
- sql - SQL - 使用 LAG 并基于另一列更新表
- javascript - React - 如何在浏览器中处理昂贵的任务(画布操作)?
- acumatica - 如何在 2020R2 的客户屏幕上将事件附加到住宅交付复选框?
- cloudkit - 云套件:如何仅从您的联系人组获取公共数据库订阅通知
- python - 使用 Python 进行缓慢的 SQLite 更新
- c# - c# group by first word
- visual-studio - 用于 Javascript/AJAX 的 Visual Studio Code 镜头
- javascript - Discord Bot 多次响应事件