#odata #datafusion #rest #sql #arrow #api-integration

datafusion-odata

OData protocol adapter for Apache Datafusion

18 releases (9 major breaking)

new 44.0.0 Jan 9, 2025
43.0.0 Nov 8, 2024
42.1.0 Sep 23, 2024
41.1.0 Sep 11, 2024
0.4.0 Mar 15, 2024

#179 in HTTP server

Download history 521/week @ 2024-09-22 226/week @ 2024-09-29 180/week @ 2024-10-06 200/week @ 2024-10-13 201/week @ 2024-10-20 247/week @ 2024-10-27 187/week @ 2024-11-03 241/week @ 2024-11-10 280/week @ 2024-11-17 170/week @ 2024-11-24 108/week @ 2024-12-01 140/week @ 2024-12-08 254/week @ 2024-12-15 307/week @ 2024-12-22 102/week @ 2024-12-29 281/week @ 2025-01-05

949 downloads per month

Apache-2.0

255KB
1.5K SLoC

OData Adapter For Apache Datafusion

About

This is an OData API adapter for Apache Datafusion SQL engine.

OData protocol is positioned as "The SQL of REST", but is a somewhat legacy protocol used by some older systems. We wouldn't recommend using it as an integration protocol for some new project, but this adapter is useful if you have to integrate your Datafusion app with some existing OData-focused system.

Quick Start

Start example:

RUST_LOG=debug cargo run --example simple_service

Query using xh:

Service root:

xh GET 'http://localhost:50051/'

Metadata:

xh GET 'http://localhost:50051/$metadata'

Query collection:

xh GET 'http://localhost:50051/tickers.spy?$select=offset,from_symbol,to_symbol,close&$top=5'

Status

This code is super raw and experimental. Very far from prod-ready. Use at your own risk.

  • Only support small subset of OData 3.0
  • Only supports atom format in responses
  • Service root resource
  • $metadata resource
  • Collection resource
    • $select
    • $orderby
    • $skip
    • $top
    • $filter
    • pagination
    • real object IDs
  • Collection entry by ID (service/collection(id))
    • Numeric IDs
    • Other ID types
  • Parameters
  • Nested collections
  • Functions
  • ...

Dependencies

~57MB
~1M SLoC