datafusion icon indicating copy to clipboard operation
datafusion copied to clipboard

Epic: Statistics improvements

Open alamb opened this issue 2 years ago • 0 comments

Is your feature request related to a problem or challenge?

We would like to use "statistics" in our project for transformations that rely on the statisics being "correct" (e.g. that the there are no values outside the min and max range).

DataFusion has several optimizations like this too that rely on statistics being correct such as skipping file scans with limits such as in https://github.com/apache/arrow-datafusion/blob/e54894c39202815b14d9e7eae58f64d3a269c165/datafusion/core/src/datasource/statistics.rs#L34-L33. There are also suggestions of additional such optimizations like https://github.com/apache/arrow-datafusion/issues/6672

However the current Statistics code seems to make it hard to manage the 'are the statistics exact and can they be guaranteed for transformations' (@crepererum noted this quite some time ago on https://github.com/apache/arrow-datafusion/issues/5613). This has recently lead to several bugs such as

  • https://github.com/apache/arrow-datafusion/pull/8049
  • https://github.com/apache/arrow-datafusion/pull/8094

We would like to make it clearer what is known and what is an estimate is know (e.g. the min/max of row counts may be known, but the actual value may be an estimate after a filter). This is described in more detail on https://github.com/apache/arrow-datafusion/issues/8078

As we began exploring this concept we ran into several issues with Statistics and I think it is getting big enough to warrant its own tracking epic

Related items

  • [x] https://github.com/apache/arrow-datafusion/issues/8110
  • [x] https://github.com/apache/arrow-datafusion/issues/8111
  • [ ] https://github.com/apache/arrow-datafusion/issues/8295
  • [ ] https://github.com/apache/arrow-datafusion/issues/8229
  • [ ] https://github.com/apache/arrow-datafusion/issues/8228
  • [ ] https://github.com/apache/arrow-datafusion/issues/8078
  • [x] https://github.com/apache/arrow-datafusion/issues/8133
  • [ ] https://github.com/apache/arrow-datafusion/issues/8099
  • [x] https://github.com/apache/arrow-datafusion/issues/7490
  • [ ] https://github.com/apache/arrow-datafusion/issues/5614
  • [ ] https://github.com/apache/arrow-datafusion/issues/5613
  • [x] https://github.com/apache/arrow-datafusion/issues/8309
  • [ ] https://github.com/apache/arrow-datafusion/issues/2976
  • [ ] https://github.com/apache/arrow-datafusion/issues/8334
  • [x] https://github.com/apache/arrow-datafusion/issues/8335
  • [ ] https://github.com/apache/arrow-datafusion/issues/7925
  • [ ] https://github.com/apache/arrow-datafusion/issues/8342

Pruning Improvements (maybe should be its own epic)

  • [ ] https://github.com/apache/arrow-datafusion/issues/7869
  • [x] https://github.com/apache/arrow-datafusion/issues/8376

Describe the solution you'd like

No response

Describe alternatives you've considered

No response

Additional context

This is somewhat related

alamb avatar Nov 15 '23 22:11 alamb