From 265ab0de6c442099d916f31c42d2d8337b2baa19 Mon Sep 17 00:00:00 2001 From: Shenyang Cai Date: Tue, 28 Apr 2026 22:45:48 +0000 Subject: [PATCH] chore(bigframes): add sql property to BF series --- .../bigframes/bigframes/bigquery/_operations/ml.py | 2 +- packages/bigframes/bigframes/series.py | 10 ++++++++++ packages/bigframes/tests/system/small/test_series.py | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/bigframes/bigframes/bigquery/_operations/ml.py b/packages/bigframes/bigframes/bigquery/_operations/ml.py index 412b49b888f5..c6ef1f8bb7a7 100644 --- a/packages/bigframes/bigframes/bigquery/_operations/ml.py +++ b/packages/bigframes/bigframes/bigquery/_operations/ml.py @@ -20,12 +20,12 @@ import google.cloud.bigquery import pandas as pd +import bigframes.core.col as col import bigframes.core.logging.log_adapter as log_adapter import bigframes.core.sql.ml import bigframes.dataframe as dataframe import bigframes.ml.base import bigframes.session -import bigframes.core.col as col from bigframes.bigquery._operations import utils diff --git a/packages/bigframes/bigframes/series.py b/packages/bigframes/bigframes/series.py index f0648117144a..46158dbe6e4a 100644 --- a/packages/bigframes/bigframes/series.py +++ b/packages/bigframes/bigframes/series.py @@ -353,6 +353,16 @@ def _struct_fields(self) -> List[str]: struct_type = typing.cast(pa.StructType, self._dtype.pyarrow_dtype) return [struct_type.field(i).name for i in range(struct_type.num_fields)] + @property + def sql(self) -> str: + """Compiles this Series's expression tree to SQL. + + Returns: + A string representing the compiled SQL. + """ + + return self.to_frame().sql + @validations.requires_ordering() def transpose(self) -> Series: return self diff --git a/packages/bigframes/tests/system/small/test_series.py b/packages/bigframes/tests/system/small/test_series.py index 7934862b3e17..c1ca6ebba55f 100644 --- a/packages/bigframes/tests/system/small/test_series.py +++ b/packages/bigframes/tests/system/small/test_series.py @@ -4999,3 +4999,9 @@ def test_series_item_with_empty(session): with pytest.raises(ValueError, match=re.escape(expected_message)): bf_s_empty.item() + + +def test_series_sql(session): + s = bigframes.pandas.Series([], session=session) + + assert len(s.sql) > 0