apache / apache/iceberg-python

Add support for bucket expression to table scans

Offen
#3,839 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
1.1k
Forks
581
Ø Merge
1 T. 17 Std.
Gemergte PRs (30 T.)
78

Beschreibung

### Feature Request / Improvement

For time partitioning, we can express time range expressions and they lead to partition pruning when planning an Arrow scan:

```py
scan = table.scan(
row_filter=And(
GreaterThanOrEqual("event_ts", start),
LessThan("event_ts", end),
)
)

arrow_table = scan.to_arrow()
```

It would be useful to be able to filter by other hidden partitioning transforms, such as buckets -- e.g. filtering on `bucket[16](user_id) in {0, 1, 2, 3}`, and getting partition pruning whenever possible based on the underlying table partitioning specs (falling back to filtering rows when files cannot be pruned).

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne bei den im Issue beschriebenen Einstiegspunkten table.scan und scan.to_arrow und verfolge dann die bestehende Verarbeitung von Zeitbereichsausdrücken, die für das Arrow-Partition-Pruning verwendet wird. Prüfe, wie Partitionsspezifikationen und Zeilenfilter angewendet werden; die Arbeit ist abgeschlossen, wenn Bucket-Ausdrücke wie bucket[16](user_id) Dateien, wann immer möglich, ausfiltern können und andernfalls auf Zeilenfilterung zurückfallen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
databases
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
55/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.