Skip to content

Commit fd61f2c

Browse files
cpcloudjcrist
authored andcommitted
feat(bigquery): support timestamp bucket
1 parent bd8c93f commit fd61f2c

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

ibis/backends/sql/compilers/bigquery.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ class BigQueryCompiler(SQLGlotCompiler):
4545
ops.MultiQuantile,
4646
ops.RegexSplit,
4747
ops.RowID,
48-
ops.TimestampBucket,
4948
ops.TimestampDiff,
5049
)
5150

@@ -760,3 +759,18 @@ def visit_TableUnnest(
760759
.from_(parent)
761760
.join(unnest, join_type="CROSS" if not keep_empty else "LEFT")
762761
)
762+
763+
def visit_TimestampBucket(self, op, *, arg, interval, offset):
764+
arg_dtype = op.arg.dtype
765+
if arg_dtype.timezone is not None:
766+
funcname = "timestamp"
767+
else:
768+
funcname = "datetime"
769+
770+
func = self.f[f"{funcname}_bucket"]
771+
772+
origin = sge.convert("1970-01-01")
773+
if offset is not None:
774+
origin = self.f.anon[f"{funcname}_add"](origin, offset)
775+
776+
return func(arg, interval, origin)

ibis/backends/tests/test_temporal.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2041,17 +2041,7 @@ def test_delta(con, start, end, unit, expected):
20412041

20422042

20432043
@pytest.mark.notimpl(
2044-
[
2045-
"bigquery",
2046-
"dask",
2047-
"impala",
2048-
"mysql",
2049-
"pandas",
2050-
"pyspark",
2051-
"sqlite",
2052-
"trino",
2053-
"druid",
2054-
],
2044+
["dask", "impala", "mysql", "pandas", "pyspark", "sqlite", "trino", "druid"],
20552045
raises=com.OperationNotDefinedError,
20562046
)
20572047
@pytest.mark.parametrize(
@@ -2154,7 +2144,6 @@ def test_timestamp_bucket(backend, kws, pd_freq):
21542144

21552145
@pytest.mark.notimpl(
21562146
[
2157-
"bigquery",
21582147
"dask",
21592148
"datafusion",
21602149
"impala",

0 commit comments

Comments
 (0)