Hi, I am preparing for the Lumen + xarray Integration GSoC idea and wanted to get feedback on the technical direction and MVP scope.
After reviewing Lumen's source architecture, my current view is that xarray support should be introduced as a native XarraySource built on Source, rather than on BaseSQLSource.
The main reason is that xarray is fundamentally coordinate-aware and multidimensional, while BaseSQLSource is centered around SQL expressions and SQL execution. Starting from a SQL-first abstraction seems likely to force premature flattening and lose important xarray semantics too early. My current thinking is that SQL interoperability, if needed, would fit better as a later interoperability layer rather than as the MVP foundation.
Current design:
xarray.Dataset as the backend object
data_vars exposed as logical tables
- 1D coordinates exposed as queryable/filterable fields
- dims and attrs preserved through metadata
- filtering handled natively in xarray
- results converted to pandas DataFrames at the compatibility boundary
Current MVP scope:
get_tables()
get_schema()
get_metadata()
get()
- in-memory and URI-based dataset loading
- coordinate-aware filtering with datetime/date coercion
I am currently treating aggregation as out of scope for get() and more appropriate for a later transform layer.
I have prototyped this locally with tests for schema, metadata, filtering, URI loading, and edge cases, and also validated it against xarray's real air_temperature tutorial dataset.
The main questions I would appreciate feedback on are:
- Does exposing
Dataset.data_vars as logical tables seem like the right MVP model?
- Does it make sense to keep aggregation in a transform layer rather than in the source API?
- Is native source-level support the right first milestone, with SQL/AI interoperability deferred to later work?
- Should multi-file dataset support be part of the MVP, or a later extension?
Any feedback on whether this seems like the right direction would be very helpful.
Hi, I am preparing for the Lumen + xarray Integration GSoC idea and wanted to get feedback on the technical direction and MVP scope.
After reviewing Lumen's source architecture, my current view is that xarray support should be introduced as a native
XarraySourcebuilt onSource, rather than onBaseSQLSource.The main reason is that xarray is fundamentally coordinate-aware and multidimensional, while
BaseSQLSourceis centered around SQL expressions and SQL execution. Starting from a SQL-first abstraction seems likely to force premature flattening and lose important xarray semantics too early. My current thinking is that SQL interoperability, if needed, would fit better as a later interoperability layer rather than as the MVP foundation.Current design:
xarray.Datasetas the backend objectdata_varsexposed as logical tablesCurrent MVP scope:
get_tables()get_schema()get_metadata()get()I am currently treating aggregation as out of scope for
get()and more appropriate for a later transform layer.I have prototyped this locally with tests for schema, metadata, filtering, URI loading, and edge cases, and also validated it against xarray's real
air_temperaturetutorial dataset.The main questions I would appreciate feedback on are:
Dataset.data_varsas logical tables seem like the right MVP model?Any feedback on whether this seems like the right direction would be very helpful.