Skip to content

docs: Add EXIF metadata extraction example to multimodal notebook - #2429

Merged
shuoweil merged 13 commits into
mainfrom
shuowei-blob-deprecate-exif
Feb 9, 2026
Merged

docs: Add EXIF metadata extraction example to multimodal notebook#2429
shuoweil merged 13 commits into
mainfrom
shuowei-blob-deprecate-exif

Conversation

@shuoweil

@shuoweilshuoweil commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This PR updates the notebooks/multimodal/multimodal_dataframe.ipynb notebook to include a comprehensive example of extracting EXIF metadata from images.

Key Changes:

  • Added a new section "7. Extract EXIF metadata from images".
  • Implemented a custom remote function (UDF) using pillow and requests to retrieve and parse EXIF tags from image URLs.
  • Demonstrated how to apply this function efficiently within a BigFrames workflow to analyze image metadata.

This addition provides users with a practical pattern for handling image metadata and using custom libraries within BigQuery DataFrames.

Fixes #<478952827> 🦕

GarrettWuand others added 9 commits February 3, 2026 18:59
Thank you for opening a Pull Request! Before submitting your PR, there
are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/python-bigquery-dataframes/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
Fixes #<issue_number_goes_here> 🦕
…tching the backend compiler (#2417)
This change adds `bigframes.pandas.options.experiments.sql_compiler` to
allow switching the backend compiler. Currently, the default remains set
to 'legacy' (ibis), but users can now optionally switch to the
'experimental' (sqlglot) compiler.
Fixes internal issue 479912001🦕
Thank you for opening a Pull Request! Before submitting your PR, there
are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/python-bigquery-dataframes/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
Fixes #<issue_number_goes_here> 🦕
This should complete the dev on the client side.
Manually verified: https://screenshot.googleplex.com/jv3UfJCm75dCzwn
Related bug 406578908 🦕
This PR refines the visual feedback provided during operation progress.
Specifically, it prevents the display of a standalone "✅ Completed."
message and green checkmark when no query execution information (like
slot time or bytes processed) is available. This often occurs during
metadata-only operations or cached results where the "Completed" status
is redundant.
Fixes #<479944983> 🦕
PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.
Librarian Version: v0.7.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:e7cc6823efb073a8a26e7cefdd869f12ec228abfbd2a44aa9a7eacc284023677
<details><summary>bigframes: 2.34.0</summary>
##
[2.34.0](v2.33.0...v2.34.0)
(2026-02-02)
### Features
* add `bigframes.pandas.options.experiments.sql_compiler` for switching
the backend compiler (#2417)
([7eba6ee](7eba6ee))
* add bigquery.ml.generate_embedding function (#2422)
([35f3f5e](35f3f5e))
* add bigquery.create_external_table method (#2415)
([76db295](76db295))
* add deprecation warnings for .blob accessor and read_gbq_object_table
(#2408)
([7261a4e](7261a4e))
* add bigquery.ml.generate_text function (#2403)
([5ac6810](5ac6810))
### Bug Fixes
* broken job url (#2411)
([fcb5bc1](fcb5bc1))
@shuoweilshuoweil self-assigned this Feb 4, 2026
@shuoweil
shuoweil requested review from a teamFebruary 4, 2026 18:41
@review-notebook-app

Copy link
Copy Markdown

Check out this pull request on ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@product-auto-labelproduct-auto-labelBot added size: l Pull request size is large. api: bigquery Issues related to the googleapis/python-bigquery-dataframes API. samples Issues that are directly related to samples. labels Feb 4, 2026
@shuoweil
shuoweil marked this pull request as draft February 4, 2026 18:51
@shuoweil
shuoweilforce-pushed the shuowei-blob-deprecate-exif branch from 9e8ca0f to ecc270cCompareFebruary 4, 2026 22:57
@shuoweil
shuoweil marked this pull request as ready for review February 4, 2026 23:07
@GarrettWu

Copy link
Copy Markdown
Contributor

Lets finish updating all the public docs and notebooks, then to actually deprecate the functions.

@product-auto-labelproduct-auto-labelBot added size: m Pull request size is medium. and removed size: l Pull request size is large. labels Feb 7, 2026
@shuoweilshuoweil changed the title feat: Deprecate blob.exif and replace with sample notebookdocs: Add EXIF metadata extraction example to multimodal notebookFeb 7, 2026
@shuoweil
shuoweil merged commit 84c6f88 into mainFeb 9, 2026
24 checks passed
@shuoweil
shuoweil deleted the shuowei-blob-deprecate-exif branch February 9, 2026 21:53
tswast pushed a commit that referenced this pull request Feb 18, 2026
PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.
Librarian Version: v0.7.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:1a2a85ab507aea26d787c06cc7979decb117164c81dd78a745982dfda80d4f68
<details><summary>bigframes: 2.36.0</summary>
##
[2.36.0](v2.35.0...v2.36.0)
(2026-02-17)
### Features
* Initial support for biglake iceberg tables (#2409)
([ae35a98](ae35a989))
* add bigquery.ai.generate_table function (#2453)
([b925aa2](b925aa24))
### Documentation
* fix generate_text and generate_table input docs (#2455)
([078bd32](078bd32e))
* update multimodal dataframe notebook to use public APIs (#2456)
([342fa72](342fa723))
* use direct API for pdf chunk and pdf extract (#2452)
([543ce52](543ce52c))
* use direct API for audio transcription (#2447)
([59cbc5d](59cbc5db))
* Add EXIF metadata extraction example to multimodal notebook (#2429)
([84c6f88](84c6f883))
* Update multimodal notebook to use public runtime helpers (#2451)
([e36dd8b](e36dd8b4))
</details>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: bigqueryIssues related to the googleapis/python-bigquery-dataframes API.samplesIssues that are directly related to samples.size: mPull request size is medium.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@shuoweil@GarrettWu@chelsea-lin@sycai