方解石将 sql 解析为多个数据源的部分
Calcite parse sql into parts for mult data source
在我的例子中,我通过单个 sql 从多个数据源(如 csv+mysql
)查询数据。如何区分表的数据源并使用方解石检测表上查询了哪些列? (可用数据源的元数据)
我要求的结果是这样的:
- TableA(col1, col2, col3) -> 数据源 CSV
- TableB(col1, colx, coly) -> 数据源 Mysql
我的情况类似于 Apache Drill(使用方解石)所做的事情,我尝试阅读 Drill 源代码,但我找不到 Drill 决定关系的方式。
String sql = "select c.c1, m.c2 from csv.tbl as c, mysql.schema.tbl as m where c.id = m.id”;
Frameworks.ConfigBuilder configBuilder = Frameworks.newConfigBuilder();
configBuilder.defaultSchema(`my SchemaPlus here`);
FrameworkConfig frameworkConfig = configBuilder.build();
Planner planner = Frameworks.getPlanner(frameworkConfig);
SqlNode sqlNode = planner.parse(sql);
planner.validate(sqlNode);
RelRoot relRoot = planner.rel(sqlNode);
这就是我现在拥有的,但似乎没有我想要的东西~_~|||
非常感谢。
在我的例子中,我通过单个 sql 从多个数据源(如 csv+mysql
)查询数据。如何区分表的数据源并使用方解石检测表上查询了哪些列? (可用数据源的元数据)
我要求的结果是这样的:
- TableA(col1, col2, col3) -> 数据源 CSV
- TableB(col1, colx, coly) -> 数据源 Mysql
我的情况类似于 Apache Drill(使用方解石)所做的事情,我尝试阅读 Drill 源代码,但我找不到 Drill 决定关系的方式。
String sql = "select c.c1, m.c2 from csv.tbl as c, mysql.schema.tbl as m where c.id = m.id”;
Frameworks.ConfigBuilder configBuilder = Frameworks.newConfigBuilder();
configBuilder.defaultSchema(`my SchemaPlus here`);
FrameworkConfig frameworkConfig = configBuilder.build();
Planner planner = Frameworks.getPlanner(frameworkConfig);
SqlNode sqlNode = planner.parse(sql);
planner.validate(sqlNode);
RelRoot relRoot = planner.rel(sqlNode);
这就是我现在拥有的,但似乎没有我想要的东西~_~|||
非常感谢。