apache / apache/datafusion-sqlparser-rs
Time travel support
- 主要言語
- Rust
- スター
- 3.5k
- フォーク
- 772
- 平均マージ
- 4日 9時間
- マージ済み PR(30日)
- 17
説明
Several databases and data lakes support time travel which allows historical versions of a table to be queried. Regrettably, syntax and capabilities do not seem to be terribly consistent across the various implementations.
## Querying Historical Times
This option lets a database be queried as it existed at a certain point in time. (*Question:* Is this "last version prior to the given time"? or is it an error if no snapshot exists with that exact time?)
### [Databricks](https://docs.databricks.com/gcp/en/delta/history#delta-time-travel-syntax)
```
SELECT * FROM people10m TIMESTAMP AS OF '2018-10-18T22:15:12.013Z';
```
### [Snowflake](https://docs.snowflake.com/en/sql-reference/constructs/at-before)
```
SELECT * FROM my_table AT(TIMESTAMP => 'Wed, 26 Jun 2024 09:20:00 -0700'::TIMESTAMP_LTZ);
```
### [Cockroach](https://www.cockroachlabs.com/blog/time-travel-queries-select-witty_subtitle-the_future/)
```
SELECT * FROM t AS OF SYSTEM TIME '2016-06-15 12:45:00'
```
### [DuckLake](https://ducklake.select/docs/stable/duckdb/usage/time_travel.html)
```
SELECT * FROM tbl AT (TIMESTAMP => now() - INTERVAL '1 week');
```
## Querying Specific versions
This options lets a specific "version" of a database to be queried. What exactly this means seems to depend on the database implementation in question.
### Databricks
```
SELECT * FROM people10m VERSION AS OF 123;
```
### Snowflake
Note: unclear if this is the same thing (specific versions) or different
```
SELECT * FROM my_table BEFORE(STATEMENT => '8e5d0ca9-005e-44e6-b858-a8f5b37c5726');
```
### Cockroach
Unsupported
### DuckLake
```
SELECT * FROM tbl AT (VERSION => 3);
```
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
issue では、リポジトリのファイル、テスト、エントリポイントが特定されていません。まず Databricks、Snowflake、Cockroach、DuckLake の構文を比較し、履歴時刻クエリとバージョンクエリでセマンティクスを共有すべきか、それともダイアレクト固有のままにすべきかを判断してください。完了条件には、サポートする構文と動作について合意したスコープを含める必要があります。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- rust, sql
- 領域
- compilers
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100