apache / apache/datafusion-sqlparser-rs
Time travel support
- Linguagem predominante
- Rust
- Estrelas
- 3.5k
- Forks
- 772
- Merge médio
- 4d 9h
- PRs com merge (30d)
- 17
Descrição
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);
```
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Direção de pesquisa
Nenhum arquivo do repositório, teste ou ponto de entrada é identificado na issue. Comece comparando a sintaxe de Databricks, Snowflake, Cockroach e DuckLake e determine se as consultas de tempo histórico e de versão devem compartilhar a semântica ou permanecer específicas do dialeto. A conclusão deve incluir um escopo acordado para a sintaxe e o comportamento compatíveis.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- rust, sql
- Domínio
- compilers
- Tipo de issue
- Funcionalidade
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Status de atividade
- Estagnada
- Clareza
- Precisa de esclarecimento
- Facilidade para iniciantes
- 25/100