В моем случае я запрашиваю данные из нескольких источников данных (например, csv+mysql
) через один sql. Как отличить источник данных для таблиц и определить, какие столбцы запрашиваются в таблицах с помощью Calcite? (Доступны метаданные источника данных)
Результат, который мне потребовался, примерно такой:
- Таблица A (col1, col2, col3) -> Источник данных CSV
- ТаблицаB (col1, colx, coly) -> Источник данных Mysql
Мой случай похож на то, что делает Apache Drill (использует Calcite), я пытался прочитать исходный код 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);
Это то, что у меня сейчас есть, но, похоже, я ничего не хотел там ~ _ ~ |||
Большое спасибо.