Skip to content

Commit 31b17b0

Browse files
feat: _read_gbq_colab creates hybrid session (#1901)
1 parent 5b232d7 commit 31b17b0

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

‎bigframes/pandas/io/api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,8 @@ def _read_gbq_colab(
345345
dry_run=True,
346346
)
347347
_set_default_session_location_if_possible_deferred_query(create_query)
348+
if not config.options.bigquery._session_started:
349+
config.options.bigquery.enable_polars_execution = True
348350

349351
return global_session.with_default_session(
350352
bigframes.session.Session._read_gbq_colab,

‎tests/system/small/session/test_read_gbq_colab.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
import pandas.testing
2020
import pytest
2121

22+
import bigframes
23+
import bigframes.pandas
24+
25+
pytest.importorskip("polars")
26+
2227

2328
def test_read_gbq_colab_to_pandas_batches_preserves_order_by(maybe_ordered_session):
2429
# This query should return enough results to be too big to fit in a single
@@ -59,6 +64,31 @@ def test_read_gbq_colab_to_pandas_batches_preserves_order_by(maybe_ordered_sessi
5964
assert executions_after == executions_before_python == executions_before_sql + 1
6065

6166

67+
def test_read_gbq_colab_fresh_session_is_hybrid():
68+
bigframes.close_session()
69+
df = bigframes.pandas._read_gbq_colab(
70+
"""
71+
SELECT
72+
name,
73+
SUM(number) AS total
74+
FROM
75+
`bigquery-public-data.usa_names.usa_1910_2013`
76+
WHERE state LIKE 'W%'
77+
GROUP BY name
78+
ORDER BY total DESC
79+
LIMIT 300
80+
"""
81+
)
82+
session = df._session
83+
executions_before_python = session._metrics.execution_count
84+
result = df.sort_values("name").peek(100)
85+
executions_after = session._metrics.execution_count
86+
87+
assert len(result) == 100
88+
assert session._executor._enable_polars_execution is True # type: ignore
89+
assert executions_after == executions_before_python == 1
90+
91+
6292
def test_read_gbq_colab_peek_avoids_requery(maybe_ordered_session):
6393
executions_before_sql = maybe_ordered_session._metrics.execution_count
6494
df = maybe_ordered_session._read_gbq_colab(

0 commit comments

Comments
 (0)