-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Labels
Description
What happened?
I have a simple example in this notebook showing that the window semantics are not supported by the compiler yet. Is this something we can add relatively easily?
import ibis
person_schema = ibis.schema({
"id": "int64",
"name": "string",
"emailaddress": "string",
"creditcard": "string",
"city": "string",
"state": "string"
}
)
auction_schema = ibis.schema({
"id": "int64",
"itemname": "string",
"description": "string",
"initialbid": "float64",
"reserve": "float64",
"expires": "timestamp(3)",
"seller": "int64",
}
)
bid_schema = ibis.schema({
"auction": "int64",
"bidder": "int64",
"price": "float64",
"datetime": "timestamp(3)"
}
)
import ibis
from ibis import _
# Create source tables
person_table = ibis.table(name="Person", schema=person_schema)
auction_table = ibis.table(name="Auction", schema=auction_schema)
bid_table = ibis.table(name="Bid", schema=bid_schema)
# Create SubstraitCompiler object
from ibis_substrait.compiler.core import SubstraitCompiler
compiler = SubstraitCompiler()
# over window
over_window = bid_table.filter(_ is not None)[_.price.mean().over(range=(-ibis.interval(seconds=10), 0), order_by=_.datetime).name("avg_price")]
compiler.compile(over_window)
# hop window
hop_window = bid_table.filter(_ is not None).window_by(time_col=_.datetime).hop(size=ibis.interval(seconds=10), slide=ibis.interval(seconds=2)).agg(_.price.mean().name("avg_price"))
compiler.compile(hop_window)
What version of ibis-substrait are you using?
v.4.0.1
What substrait consumer(s) are you using, if any?
N/A
Relevant log output
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
Cell In[47], line 14
10 # hop window
11 hop_window = bid_table.filter(_ is not None).window_by(time_col=_.datetime).hop(size=ibis.interval(seconds=10), slide=ibis.interval(seconds=2)).agg(_.price.mean().name("avg_price"))
---> 14 compiler.compile(hop_window)
File ~/miniconda3/envs/ibis-dev-arm64/lib/python3.12/site-packages/ibis_substrait/compiler/core.py:222, in SubstraitCompiler.compile(self, expr, **kwargs)
217 from .translate import translate
219 expr_schema = expr.schema()
220 rel = stp.PlanRel(
221 root=stalg.RelRoot(
--> 222 input=translate(expr.op(), compiler=self, **kwargs),
223 names=translate(expr_schema).names,
224 )
225 )
226 ver = vparse(__substrait_version__)
227 return stp.Plan(
228 version=stp.Version(
229 major_number=ver.major,
(...)
256 relations=[rel],
257 )
File ~/miniconda3/envs/ibis-dev-arm64/lib/python3.12/functools.py:907, in singledispatch.<locals>.wrapper(*args, **kw)
903 if not args:
904 raise TypeError(f'{funcname} requires at least '
905 '1 positional argument')
--> 907 return dispatch(args[0].__class__)(*args, **kw)
File ~/miniconda3/envs/ibis-dev-arm64/lib/python3.12/site-packages/ibis_substrait/compiler/translate.py:55, in translate(*args, **kwargs)
53 @functools.singledispatch
54 def translate(*args: Any, **kwargs: Any) -> Any:
---> 55 raise NotImplementedError(*args)
NotImplementedError: <ibis.expr.operations.temporal_windows.WindowAggregate object at 0x16d904dd0>
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
backlog