将查询映射为虚拟表

时间:2018-07-03 19:35:28

标签: apache-calcite

是否可以在Apache Calcite中将基于JDBC的查询映射为虚拟表?我想向用户展示一个表,但是在后台已经将它实现为通过jdbc到数据源的查询。我知道我可以对Table进行子类化,并在必要时实现自己,但我想看看是否有支持的方法来实现这一点。

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

听起来您想要做的就是创建一个视图。您可以在the tutorial中看到一个示例。可以将视图定义添加到您用来定义架构的model.json中,如下例所示。

{
  version: '1.0',
  defaultSchema: 'SALES',
  schemas: [
    {
      name: 'SALES',
      type: 'custom',
      factory: 'org.apache.calcite.adapter.csv.CsvSchemaFactory',
      operand: {
        directory: 'target/test-classes/sales'
      },
      tables: [
        {
          name: 'FEMALE_EMPS',
          type: 'view',
          sql: 'SELECT * FROM emps WHERE gender = \'F\''
        }
      ]
    }
  ]
}