Release History
1.50.0 (2024-06-27)
Features
- add method in load_job to set column name character map (#26135)
1.49.1 (2024-06-05)
Bug Fixes
- Added bigdecimal to the gem dependencies (#26012)
1.49.0 (2024-03-10)
Features
- Update minimum supported Ruby version to 2.7 (#25298)
1.48.1 (2024-02-10)
Documentation
- Correct an example snippet related to storage_billing_model (#24796)
1.48.0 (2024-02-08)
Features
- Support accessing storage_ billing_model field in a dataset (#24755)
1.47.0 (2024-02-05)
Features
- add json type support (#24491)
1.46.1 (2024-01-26)
Bug Fixes
- Raise an error on mismatching universe domain (#24485)
1.46.0 (2024-01-25)
Features
- Support for universe_domain (#24448)
1.45.0 (2023-09-25)
Features
- support load job with session (#23320)
1.44.2 (2023-09-12)
Bug Fixes
- Avoid dataset reload when accessing location (#22905)
1.44.1 (2023-09-08)
Bug Fixes
- remove unnecessary warning (#22904)
1.44.0 (2023-09-04)
Features
- support BIGQUERY_EMULATOR_HOST env variable for endpoint
1.43.1 (2023-05-19)
Bug Fixes
- ensure schema for data parsing (#21616)
1.43.0 (2023-05-10)
Features
- Added support for default value expression (#21540)
1.42.0 (2023-01-15)
Features
1.41.0 (2023-01-05)
Features
Add support for partial projection of table metadata
Bug Fixes
Fix querying of array of structs in named parameters (#19466)
1.40.0 (2022-12-14)
Features
- support table snapshot and clone (#19354)
1.39.0 (2022-07-27)
Features
- Update minimum Ruby version to 2.6 (#18871)
1.38.1 / 2022-01-13
Bug Fixes
- Update Bigquery::Data#ddl? to support ALTER TABLE
- Update Bigquery::QueryJob#ddl? to support ALTER TABLE
- Remove newline character ('\n') from #ddl? statement types
Documentation
- Update Contributing docs
1.38.0 / 2021-11-16
Features
- Add session support
- Add create_session and session_id params to Project#query_job
- Add create_session and session_id params to Dataset#query_job
- Add session_id param to Project#query
- Add session_id param to Dataset#query
- Add Job#session_id
- Add QueryJob::Updater#create_session=
- Add QueryJob::Updater#session_id=
1.37.0 / 2021-10-21
Features
- Add support for Avro options to external data sources
- Add External::AvroSource
1.36.0 / 2021-09-22
Features
- Add Job#delete
Bug Fixes
- Add precision and scale to Field#add_field
1.35.1 / 2021-09-14
Documentation
- Wrap character class regex in backticks
1.35.0 / 2021-08-12
Features
- Add GEOGRAPHY schema helpers
- Add LoadJob#geography
- Add Schema::Field#geography
- Add Table::Updater#geography
- Add support for GEOGRAPHY type
- Add Schema#geography
- Add support for multistatement transaction statistics in jobs
- Add Job#transaction_id
1.34.0 / 2021-07-20
Features
- Add DmlStatistics
- Add QueryJob#deleted_row_count
- Add QueryJob#inserted_row_count
- Add QueryJob#updated_row_count
- Add Data#deleted_row_count
- Add Data#inserted_row_count
- Add Data#updated_row_count
1.33.0 / 2021-07-14
Features
- Add policy tag support (Column ACLs)
- Add policy_tags to LoadJob field helper methods
- Add policy_tags to Schema field helper methods
- Add policy_tags to Schema::Field field helper methods
- Add policy_tags to Table field helper methods
- Add Schema::Field#policy_tags
- Add Schema::Field#policy_tags=
- Add support for parameterized types
- Add max_length to LoadJob::Updater#bytes
- Add max_length to LoadJob::Updater#string
- Add max_length to Schema#bytes
- Add max_length to Schema#string
- Add max_length to Schema::Field#bytes
- Add max_length to Schema::Field#string
- Add max_length to Table::Updater#bytes
- Add max_length to Table::Updater#string
- Add precision and scale to LoadJob::Updater#bignumeric
- Add precision and scale to LoadJob::Updater#numeric
- Add precision and scale to Schema#bignumeric
- Add precision and scale to Schema#numeric
- Add precision and scale to Schema::Field#bignumeric
- Add precision and scale to Schema::Field#numeric
- Add precision and scale to Table::Updater#bignumeric
- Add precision and scale to Table::Updater#numeric
- Add Schema::Field#max_length
- Add Schema::Field#precision
- Add Schema::Field#scale
1.32.1 / 2021-07-08
Documentation
- Update AUTHENTICATION.md in handwritten packages
1.32.0 / 2021-06-21
Features
- Add support for Parquet options
- feat(bigquery): Add Bigquery::External::ParquetSource
- Add Parquet options to LoadJob
- Add LoadJob#parquet_options?
- Add LoadJob#parquet_enable_list_inference?
- Add LoadJob#parquet_enum_as_string?
- Add LoadJob::Updater#parquet_enable_list_inference=
- Add LoadJob::Updater#parquet_enum_as_string=
Bug Fixes
- Expand googleauth dependency to support future 1.x versions
1.31.0 / 2021-04-28
Features
- Add support for mutable clustering configuration
- Add Table#clustering_fields=
1.30.0 / 2021-04-20
Features
- Add support for BIGNUMERIC data type
- Add support for BIGNUMERIC data insert.
- Add support for BIGNUMERIC query params.
- Add #bignumeric to Schema, Table, LoadJob::Updater and Field.
- Update types tables in docs.
Bug Fixes
- Fix Table#time_partitioning_expiration=
- Accept nil argument.
1.29.0 / 2021-03-10
Features
- Drop support for Ruby 2.4 and add support for Ruby 3.0
1.28.0 / 2021-03-09
Features
- Add Materialized View support
- Add Dataset#create_materialized_view
- Add Table#materialized_view?
- Add Table#enable_refresh?
- Add Table#enable_refresh=
- Add Table#last_refresh_time
- Add Table#refresh_interval_ms
- Add Table#refresh_interval_ms=
1.27.0 / 2021-02-10
Features
- Add Job#reservation_usage
- Add Routine#determinism_level
- Add Routine#determinism_level
- Add Routine#determinism_level=
- Add Routine#determinism_level_deterministic?
- Add Routine#determinism_level_not_deterministic?
- Add Routine::Updater#determinism_level=
1.26.0 / 2021-01-13
Features
- Add support for Hive Partitioning
- Add hive partitioning options to External::DataSource
- Add hive partitioning options to LoadJob and LoadJob::Updater
- Replace google-api-client with google-apis-bigquery_v2
1.25.0 / 2020-11-16
Features
- Add routine (UDF) to Dataset::Access
- Add support for Table ACLS (IAM Policy)
- feat(bigquery): Add support for Table ACLS
- Add Bigquery::Policy
- Add Table#policy
- Add Table#test_iam_permissions
- Add Table#update_policy
1.24.0 / 2020-10-29
Features
- Add iamMember to Dataset::Access
Bug Fixes
- Ensure dense encoding of JSON responses
- Set query param prettyPrint=false for all requests.
- Upgrade google-api-client to ~> 0.47
Documentation
- Update supported types for time partition type
1.23.0 / 2020-09-17
Features
- quota_project can be set via library configuration (#7627)
1.22.0 / 2020-09-10
Features
- Add support for ML model export
- Add model support to Project#extract and #extract_job
- Add ExtractJob#model?
- Add ExtractJob#ml_tf_saved_model?
- Add ExtractJob#ml_xgboost_booster?
- Add Model#extract and #extract_job
1.21.2 / 2020-07-21
Documentation
- Update Data#each samples
1.21.1 / 2020-05-28
Documentation
- Fix a few broken links
1.21.0 / 2020-03-31
Features
- Add Job#parent_job_id and Job#script_statistics
- Add parent_job to Project#jobs
- Add Job#num_child_jobs
- Add Job#parent_job_id
- Add Job#script_statistics
1.20.0 / 2020-03-11
Features
- Add Range Partitioning
- Add range partitioning methods to Table and Table::Updater
- Add range partitioning methods to LoadJob
- Add range partitioning methods to QueryJob
1.19.0 / 2020-02-11
Features
- Add Routine
- Add Dataset#create_routine
- Add Argument
- Update StandardSql classes to expose public initializer
- Add Data#ddl_target_routine and QueryJob#ddl_target_routine
- Allow row inserts to skip insert_id generation
- Streaming inserts using an insert_id are not able to be inserted as fast as inserts without an insert_id
- Add the ability for users to skip insert_id generation in order to speed up the inserts
- The default behavior continues to generate insert_id values for each row inserted
- Add yield documentation for Dataset#insert
1.18.1 / 2019-12-18
Bug Fixes
- Fix MonitorMixin usage on Ruby 2.7
- Ruby 2.7 will error if new_cond is called before super().
- Make the call to super() be the first call in initialize
1.18.0 / 2019-11-06
Features
- Add optional query parameter types
- Allow query parameters to be nil/NULL when providing an optional
- Add types argument to the following methods:
- Project#query
- Project#query_job
- Dataset#query
- Dataset#query_job
- Add param types helper methods
- Return the BigQuery field type code, using the same format as the
- Add Schema::Field#param_type
- Add Schema#param_types
- Add Data#param_types
- Add Table#param_types
- Add External::CvsSource#param_types
- Add External::JsonSource#param_types
- Add support for all_users special role in Dataset access
1.17.0 / 2019-10-29
This release requires Ruby 2.4 or later.
Documentation
- Clarify which Google Cloud Platform environments support automatic authentication
1.16.0 / 2019-10-03
Features
- Add Dataset default_encryption
- Add Dataset#default_encryption
- Add Dataset#default_encryption=
1.15.0 / 2019-09-30
Features
- Add Model encryption
- Add Model#encryption
- Add Model#encryption=
- Add range support for Google Sheets
- Add External::SheetsSource#range
- Add External::SheetsSource#range=
- Support use_avro_logical_types on extract jobs
- Add ExtractJob#use_avro_logical_types?
- Add ExtractJob::Updater#use_avro_logical_types=
1.14.1 / 2019-09-04
Documentation
- Add note about streaming insert issues
- Acknowledge tradeoffs when inserting rows soon after table metadata has been changed.
- Add link to BigQuery Troubleshooting guide.
1.14.0 / 2019-08-23
Features
- Support overriding of service endpoint
Performance Improvements
- Use MiniMime to detect content types
Documentation
- Update documentation
1.13.0 / 2019-07-31
- Add Table#require_partition_filter
- List jobs using min and max created_at
- Reduce thread usage at startup
- Allocate threads in pool as needed, not all up front
- Update documentation links
1.12.0 / 2019-07-10
- Add BigQuery Model API
- Add Model
- Add StandardSql Field, DataType, StructType
- Add Dataset#model and Dataset#models
- Correct Float value conversion
- Ensure that NaN, Infinity, and -Infinity are converted correctly.
1.11.2 / 2019-06-11
- Update "Loading data" link
1.11.1 / 2019-05-21
- Declare explicit dependency on mime-types
1.11.0 / 2019-02-01
- Make use of Credentials#project_id
- Use Credentials#project_id If a project_id is not provided, use the value on the Credentials object. This value was added in googleauth 0.7.0.
- Loosen googleauth dependency Allow for new releases up to 0.10. The googleauth devs have committed to maintaining the current API and will not make backwards compatible changes before 0.10.
1.10.0 / 2018-12-06
- Add dryrun param to Project#query_job and Dataset#query_job
- Add copy and extract methods to Project
- Add Project#extract and Project#extract_job
- Add Project#copy and Project#copy_job
- Deprecate dryrun param in Table#copy_job, Table#extract_job and Table#load_job
- Fix memoization in Dataset#exists? and Table#exists?
- Add force param to Dataset#exists? and Table#exists?
1.9.0 / 2018-10-25
- Add clustering fields to LoadJob, QueryJob and Table
- Add DDL/DML support
- Update QueryJob#data to not return table rows for DDL/DML
- Add DDL/DML statistics attrs to QueryJob and Data
- Add #numeric to Table::Updater and LoadJob::Updater (@leklund)
1.8.2 / 2018-09-20
- Update documentation.
- Change documentation URL to googleapis GitHub org.
- Fix circular require warning.
1.8.1 / 2018-09-12
- Add missing documentation files to package.
1.8.0 / 2018-09-10
- Add support for OCR format.
- Update documentation.
1.7.1 / 2018-08-21
- Update documentation.
1.7.0 / 2018-06-29
- Add #schema_update_options to LoadJob and #schema_update_options= to LoadJob::Updater.
- Add time partitioning for the target table to LoadJob and QueryJob.
- Add #statement_type, #ddl_operation_performed, #ddl_target_table to QueryJob.
1.6.0 / 2018-06-22
- Documentation updates.
- Updated dependencies.
1.5.0 / 2018-05-21
- Add Schema.load and Schema.dump to read/write a table schema from/to a JSON file or other IO source. The JSON file schema is the same as for the bq CLI.
- Add support for the NUMERIC data type.
- Add documentation for enabling logging.
1.4.0 / 2018-05-07
- Add Parquet support to #load and #load_job.
1.3.0 / 2018-04-05
- Add insert_ids option to #insert in Dataset, Table, and AsyncInserter.
- Add BigQuery Project#service_account_email.
- Add support for setting Job location to nil in blocks for Job properties.
1.2.0 / 2018-03-31
- Add geo-regionalization (location) support to Jobs.
- Add Project#encryption support to Jobs.
- Rename Encryption to EncryptionConfiguration.
- Add blocks for setting Job properties to all Job creation methods.
- Add support for lists of URLs to #load and #load_job. (jeremywadsack)
- Fix Schema::Field type helpers.
- Fix Table#load example in README.
1.1.0 / 2018-02-27
- Support table partitioning by field.
- Support Shared Configuration.
- Improve AsyncInserter performance.
1.0.0 / 2018-01-10
- Release 1.0.0
- Update authentication documentation
- Update Data documentation and code examples
- Remove reference to sync and async queries
- Allow use of URI objects for Dataset#load, Table#load, and Table#load_job
0.30.0 / 2017-11-14
- Add
Google::Cloud::Bigquery::Credentials
class. - Rename constructor arguments to
project_id
andcredentials
. (The previous argumentsproject
andkeyfile
are still supported.) - Support creating
Dataset
andTable
objects without making API calls usingskip_lookup
argument.- Add
Dataset#reference?
andDataset#resource?
helper method. - Add
Table#reference?
andTable#resource?
andTable#resource_partial?
andTable#resource_full?
helper methods.
- Add
Dataset#insert_async
andDataset#insert_async
now yields aTable::AsyncInserter::Result
object.View
is removed, now usesTable
class.- Needed to support
skip_lookup
argument. - Calling
Table#data
on a view now raises (breaking change).
- Needed to support
- Performance improvements for queries.
- Updated
google-api-client
,googleauth
dependencies.
0.29.0 / 2017-10-09
This is a major release with many new features and several breaking changes.
Major Changes
- All queries now use a new implementation, using a job and polling for results.
- The copy, load, extract methods now all have high-level and low-level versions, similar to
query
andquery_job
. - Added asynchronous row insertion, allowing data to be collected and inserted in batches.
- Support external data sources for both queries and table views.
- Added create-on-insert support for tables.
- Allow for customizing job IDs to aid in organizing jobs.
Change Details
- Update high-level queries as follows:
- Update
QueryJob#wait_until_done!
to usegetQueryResults
. - Update
Project#query
andDataset#query
with breaking changes: - Remove
timeout
anddryrun
parameters. - Change return type from
QueryData
toData
. - Add
QueryJob#data
- Alias
QueryJob#query_results
toQueryJob#data
with breaking changes: - Remove the
timeout
parameter. - Change the return type from
QueryData
toData
. - Update
View#data
with breaking changes: - Remove the
timeout
anddryrun
parameters. - Change the return type from
QueryData
toData
. - Remove
QueryData
. - Update
Project#query
andDataset#query
with improved errors, replacing the previous simple error with one that contains all available information for why the job failed.
- Update
- Rename
Dataset#load
toDataset#load_job
; add high-level, synchronous version asDataset#load
. - Rename
Table#copy
toTable#copy_job
; add high-level, synchronous version asTable#copy
. - Rename
Table#extract
toTable#extract_job
; add high-level, synchronous version asTable#extract
. - Rename
Table#load
toTable#load_job
; add high-level, synchronous version asTable#load
. - Add support for querying external data sources with
External
. - Add
Table::AsyncInserter
,Dataset#insert_async
andTable#insert_async
to collect and insert rows in batches. - Add
Dataset#insert
to support creating a table while inserting rows if the table does not exist. - Update retry logic to conform to the BigQuery SLA.
- Use a minimum back-off interval of 1 second; for each consecutive error, increase the back-off interval exponentially up to 32 seconds.
- Retry if all error reasons are retriable, not if any of the error reasons are retriable.
- Add support for labels to
Dataset
,Table
,View
andJob
.- Add
filter
option toProject#datasets
andProject#jobs
.
- Add
- Add support for user-defined functions to
Project#query_job
,Dataset#query_job
,QueryJob
andView
. - In
Dataset
,Table
, andView
updates, add the use of ETags for optimistic concurrency control. - Update
Dataset#load
andTable#load
:- Add
null_marker
option andLoadJob#null_marker
. - Add
autodetect
option andLoadJob#autodetect?
.
- Add
- Fix the default value for
LoadJob#quoted_newlines?
. - Add
job_id
andprefix
options for controlling client-side job ID generation toProject#query_job
,Dataset#load
,Dataset#query_job
,Table#copy
,Table#extract
, andTable#load
. - Add
Job#user_email
. - Set the maximum delay of
Job#wait_until_done!
polling to 60 seconds. - Automatically retry
Job#cancel
. - Allow users to specify if a
View
query is using Standard vs. Legacy SQL. - Add
project
option toProject#query_job
. - Add
QueryJob#query_plan
,QueryJob::Stage
andQueryJob::Step
to expose query plan information. - Add
Table#buffer_bytes
,Table#buffer_rows
andTable#buffer_oldest_at
to expose streaming buffer information. - Update
Dataset#insert
andTable#insert
to raise an error ifrows
is empty. - Update
Error
with a mapping from code 412 toFailedPreconditionError
. - Update
Data#schema
to freeze the returnedSchema
object (as inView
andLoadJob
.)
0.28.0 / 2017-09-28
- Update Google API Client dependency to 0.14.x.
0.27.1 / 2017-07-11
- Add
InsertResponse::InsertError#index
(zedalaye)
0.27.0 / 2017-06-28
- Add
maximum_billing_tier
andmaximum_bytes_billed
toQueryJob
,Project#query_job
andDataset#query_job
. - Add
Dataset#load
to support creating, configuring and loading a table in one API call. - Add
Project#schema
. - Upgrade dependency on Google API Client.
- Update gem spec homepage links.
- Update examples of field access to use symbols instead of strings in the documentation.
0.26.0 / 2017-04-05
- Upgrade dependency on Google API Client
0.25.0 / 2017-03-31
- Add
#cancel
toJob
- Updated documentation
0.24.0 / 2017-03-03
Major release, several new features, some breaking changes.
- Standard SQL is now the default syntax.
- Legacy SQL syntax can be enabled by providing
legacy_sql: true
. - Several fixes to how data values are formatted when returned from BigQuery.
- Returned data rows are now hashes with Symbol keys instead of String keys.
- Several fixes to how data values are formatted when importing to BigQuery.
- Several improvements to manipulating table schema fields.
- Removal of
Schema#fields=
andData#raw
methods. - Removal of
fields
argument fromDataset#create_table
method. - Dependency on Google API Client has been updated to 0.10.x.
0.23.0 / 2016-12-8
- Support Query Parameters using
params
method arguments toquery
andquery_job
- Add
standard_sql
/legacy_sql
method arguments to toquery
andquery_job
- Add
standard_sql?
/legacy_sql?
attributes toQueryJob
- Many documentation improvements
0.21.0 / 2016-10-20
- New service constructor Google::Cloud::Bigquery.new
0.20.2 / 2016-09-30
- Add list of projects that the current credentials can access. (remi)
0.20.1 / 2016-09-02
- Fix for timeout on uploads.
0.20.0 / 2016-08-26
This gem contains the Google BigQuery service implementation for the google-cloud
gem. The google-cloud
gem replaces the old gcloud
gem. Legacy code can continue to use the gcloud
gem.
- Namespace is now
Google::Cloud
- The
google-cloud
gem is now an umbrella package for individual gems