Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

feat: support interactive execution of deferred DataFrames in TableWidget#17486

Merged
shuoweil merged 77 commits into
maingoogleapis/google-cloud-python:mainfrom
shuowei-angular-deferred-modegoogleapis/google-cloud-python:shuowei-angular-deferred-modeCopy head branch name to clipboard
Jun 25, 2026
Merged

feat: support interactive execution of deferred DataFrames in TableWidget#17486
shuoweil merged 77 commits into
maingoogleapis/google-cloud-python:mainfrom
shuowei-angular-deferred-modegoogleapis/google-cloud-python:shuowei-angular-deferred-modeCopy head branch name to clipboard

Conversation

@shuoweil

@shuoweil shuoweil commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

This PR introduces support for deferred execution rendering in TableWidget (the anywidget-based interactive table viewer for Jupyter notebooks). Users can now view dry-run estimations (e.g., query size/cost) and trigger execution directly from the notebook output.

Verified at:
vs code: go/scrcast/NjcyODQxMDY2MjQzNjg2NHxlNjJhY2Y0NS1hMg
colab notebook: go/scrcast/NTk1NzEyMTg0NDcwNzMyOHxjZGQ1ZjQ0NS05NQ

Fixes #<460865443> 🦕

shuoweil added 30 commits May 4, 2026 23:18
# Conflicts:
#	packages/bigframes/bigframes/display/table_widget_angular.js
#	packages/bigframes/bigframes/display/table_widget_angular/README.md
#	packages/bigframes/bigframes/display/table_widget_angular/src/app/app.spec.ts
#	packages/bigframes/bigframes/display/table_widget_angular/src/app/app.ts
@shuoweil shuoweil requested a review from GarrettWu June 23, 2026 19:50
)
df = df.assign(**{col: df[col]._apply_unary_op(op) for col in json_cols})
return df
return df, []

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why return empty list?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reverted

{
"cells": [
{
"cell_type": "markdown",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why modify this notebook?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reverted


def to_sql(expr: sge.Expression) -> str:
"""Generate SQL string from the given expression."""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part is cherry-picked from another branch, I has asked Trevor to review that PR. Revert this one here

@shuoweil shuoweil requested a review from GarrettWu June 23, 2026 22:01
import bigframes.series


class DeferredBigQueryDataFrame:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why need this and when is it used? Don't see where any instances are constructed in the PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is a wrapper class for a public integration API. It is required for external notebook environments, such as colab notebook and BigQuery Studio. This wrapper class allow external integrations to wrap their query executions and display a deferred widget, such as showing dry-run info and "Run Query" Button, instead of executing the query immediately when a cell runs. When the user clicks the "Run Query" button in the UI, the widget triggers .execute() on this wrapper to compute the query and display the actual DataFrame. Since it is intended to be instantiated by external platforms calling into BF, we don't construct any instances of it within the BF library itself.

@shuoweil shuoweil requested a review from GarrettWu June 24, 2026 17:56
@shuoweil shuoweil merged commit 421eebd into main Jun 25, 2026
32 checks passed
@shuoweil shuoweil deleted the shuowei-angular-deferred-mode branch June 25, 2026 18:35
shuoweil pushed a commit that referenced this pull request Jun 25, 2026
🤖 I have created a release *beep* *boop*
---


##
[2.44.0](bigframes-v2.43.0...bigframes-v2.44.0)
(2026-06-25)


### Features

* add date functions to `bigframes.bigquery` module
([#17514](#17514))
([e5d2e35](e5d2e35))
* **bigframes:** add AI TVFs to the pandas bq accessor
([#17402](#17402))
([ee74e31](ee74e31))
* Experimental transpilation of unannotated python callables
([#17419](#17419))
([ea9aad9](ea9aad9))
* support gemini-3.x models in loader and update default model to
gemini-3.5-flash
([#17557](#17557))
([3619b29](3619b29))
* support interactive execution of deferred DataFrames in TableWidget
([#17486](#17486))
([421eebd](421eebd))


### Bug Fixes

* avoid invalid CAST(NULL AS NULL) in SQLGlot compiler
([#17487](#17487))
([3b79caa](3b79caa))
* **bigframes:** world-readable temp zip in create_cloud_function
([#17522](#17522))
([e726878](e726878))
* bump @angular/common, @angular/forms, @angular/platform-browser and
@angular/router in
/packages/bigframes/bigframes/display/table_widget_angular
([#17525](#17525))
([2f893b1](2f893b1))
* bump langsmith from 0.8.0 to 0.8.18 in /packages/bigframes
([#17518](#17518))
([f23063f](f23063f))
* bump msgpack from 1.1.1 to 1.2.1 in /packages/bigframes
([#17520](#17520))
([36b5b7e](36b5b7e))
* bump undici and @angular/build in
/packages/bigframes/bigframes/display/table_widget_angular
([#17519](#17519))
([6fc45e3](6fc45e3))
* handle empty endpoints during cloud function reuse
([#17501](#17501))
([4f5593a](4f5593a))


### Documentation

* ensure that PlotAccessor is included in the API reference
([#17513](#17513))
([6febabf](6febabf))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.