Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions bigframes/pandas/io/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,8 @@ def _read_gbq_colab(
dry_run=True,
)
_set_default_session_location_if_possible_deferred_query(create_query)
if not config.options.bigquery._session_started:
config.options.bigquery.enable_polars_execution = True

return global_session.with_default_session(
bigframes.session.Session._read_gbq_colab,
Expand Down
30 changes: 30 additions & 0 deletions tests/system/small/session/test_read_gbq_colab.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@
import pandas.testing
import pytest

import bigframes
import bigframes.pandas

pytest.importorskip("polars")


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


def test_read_gbq_colab_fresh_session_is_hybrid():
bigframes.close_session()
df = bigframes.pandas._read_gbq_colab(
"""
SELECT
name,
SUM(number) AS total
FROM
`bigquery-public-data.usa_names.usa_1910_2013`
WHERE state LIKE 'W%'
GROUP BY name
ORDER BY total DESC
LIMIT 300
"""
)
session = df._session
executions_before_python = session._metrics.execution_count
result = df.sort_values("name").peek(100)
executions_after = session._metrics.execution_count

assert len(result) == 100
assert session._executor._enable_polars_execution is True # type: ignore
assert executions_after == executions_before_python == 1


def test_read_gbq_colab_peek_avoids_requery(maybe_ordered_session):
executions_before_sql = maybe_ordered_session._metrics.execution_count
df = maybe_ordered_session._read_gbq_colab(
Expand Down