Apache Calciteを使用して、RDBMSのデータソースである分散OLAPシステムを実装しています。だから、RelNode
ツリーのプロジェクト/フィルタ/集約をMyTableScan extends TableScan
にプッシュしたいと思います。 MyTableScan
では、RelBuilder
がプッシュされます。RelNode
最後にRelBuilder
で、ソースデータベースへのクエリを生成します。同時に、元のRelNode
ツリーのプロジェクト/フィルタ/集約を移動または変更する必要があります。Projectite、Filter、AggregationをCalciteのTableScanにプッシュダウンする方法
わかったように、カルサイトはこの機能をサポートしていません。
現在の制限:JDBCアダプタは現在、テーブルスキャン操作のみをプッシュします。他のすべての処理(フィルタリング、結合、集約など)はCalcite内で行われます。私たちの目標は、可能な限り多くの処理をソースシステムにプッシュし、構文、データ型、組み込み関数を変換することです。 Calciteクエリが単一のJDBCデータベースのテーブルに基づいている場合、原則的にクエリ全体がそのデータベースに移動する必要があります。テーブルが複数のJDBCソース、またはJDBCと非JDBCの混合である場合、Calciteは可能な限り最も効率的な分散クエリアプローチを使用します。
私の意見では、RelOptRule
が良い選択かもしれません。残念ながら、新しいRelOptRule
を作成すると、ノードを削除する親ノードを簡単に見つけることができません。
RelOptRule
はいいですか?誰でもこの機能を実装することをお勧めしますか?
ありがとうございました。
'convert'関数は私が望むものですが、いくつかのルールでそれを見つけました。 – inferno