apache / apache/datafusion-sqlparser-rs

Time travel support

Aberta
#2,006 1 comentário 2 reações 0 responsáveis Ver no GitHub
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

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.