From c379ff496e7ef289ca88fdedd201396b2d2ab76c Mon Sep 17 00:00:00 2001 From: Google APIs Date: Wed, 30 Oct 2024 10:42:09 -0700 Subject: [PATCH] docs: remove experimental declarations from RPC service definitions feat: add support for contribution analysis ML models feat: add support for IAM conditions to datasets feat: relax field requirements in BigLakeConfiguration PiperOrigin-RevId: 691474996 --- google/cloud/bigquery/v2/BUILD.bazel | 2 + google/cloud/bigquery/v2/biglake_config.proto | 16 ++-- google/cloud/bigquery/v2/dataset.proto | 83 ++++++++++++++++++- google/cloud/bigquery/v2/job.proto | 4 - google/cloud/bigquery/v2/model.proto | 26 +++++- google/cloud/bigquery/v2/project.proto | 5 +- google/cloud/bigquery/v2/routine.proto | 8 +- google/cloud/bigquery/v2/table.proto | 6 +- 8 files changed, 116 insertions(+), 34 deletions(-) diff --git a/google/cloud/bigquery/v2/BUILD.bazel b/google/cloud/bigquery/v2/BUILD.bazel index 5c8960b729..088144cbe6 100644 --- a/google/cloud/bigquery/v2/BUILD.bazel +++ b/google/cloud/bigquery/v2/BUILD.bazel @@ -74,6 +74,7 @@ proto_library( "//google/api:client_proto", "//google/api:field_behavior_proto", "//google/api:resource_proto", + "//google/type:expr_proto", "@com_google_protobuf//:duration_proto", "@com_google_protobuf//:empty_proto", "@com_google_protobuf//:field_mask_proto", @@ -126,6 +127,7 @@ go_proto_library( protos = [":bigquery_proto"], deps = [ "//google/api:annotations_go_proto", + "//google/type:expr_go_proto", ], ) diff --git a/google/cloud/bigquery/v2/biglake_config.proto b/google/cloud/bigquery/v2/biglake_config.proto index fd076037b3..ed347b2cf9 100644 --- a/google/cloud/bigquery/v2/biglake_config.proto +++ b/google/cloud/bigquery/v2/biglake_config.proto @@ -43,20 +43,20 @@ message BigLakeConfiguration { ICEBERG = 1; } - // Required. The connection specifying the credentials to be used to read and + // Optional. The connection specifying the credentials to be used to read and // write to external storage, such as Cloud Storage. The connection_id can // have the form `{project}.{location}.{connection_id}` or // `projects/{project}/locations/{location}/connections/{connection_id}". - string connection_id = 1 [(google.api.field_behavior) = REQUIRED]; + string connection_id = 1 [(google.api.field_behavior) = OPTIONAL]; - // Required. The fully qualified location prefix of the external folder where + // Optional. The fully qualified location prefix of the external folder where // table data is stored. The '*' wildcard character is not allowed. The URI // should be in the format `gs://bucket/path_to_table/` - string storage_uri = 2 [(google.api.field_behavior) = REQUIRED]; + string storage_uri = 2 [(google.api.field_behavior) = OPTIONAL]; - // Required. The file format the table data is stored in. - FileFormat file_format = 3 [(google.api.field_behavior) = REQUIRED]; + // Optional. The file format the table data is stored in. + FileFormat file_format = 3 [(google.api.field_behavior) = OPTIONAL]; - // Required. The table format the metadata only snapshots are stored in. - TableFormat table_format = 4 [(google.api.field_behavior) = REQUIRED]; + // Optional. The table format the metadata only snapshots are stored in. + TableFormat table_format = 4 [(google.api.field_behavior) = OPTIONAL]; } diff --git a/google/cloud/bigquery/v2/dataset.proto b/google/cloud/bigquery/v2/dataset.proto index 62968e292e..59ddef48c0 100644 --- a/google/cloud/bigquery/v2/dataset.proto +++ b/google/cloud/bigquery/v2/dataset.proto @@ -30,15 +30,13 @@ import "google/cloud/bigquery/v2/table_schema.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; +import "google/type/expr.proto"; option go_package = "cloud.google.com/go/bigquery/apiv2/bigquerypb;bigquerypb"; option java_outer_classname = "DatasetProto"; option java_package = "com.google.cloud.bigquery.v2"; -// This is an experimental RPC service definition for the BigQuery -// Dataset Service. -// -// It should not be relied on for production use cases at this time. +// DatasetService provides methods for managing BigQuery datasets. service DatasetService { option (google.api.default_host) = "bigquery.googleapis.com"; option (google.api.oauth_scopes) = @@ -205,6 +203,10 @@ message Access { // is deleted and re-created, its access needs to be granted again via an // update operation. DatasetAccessEntry dataset = 9; + + // Optional. condition for the binding. If CEL expression in this field is + // true, this access binding will be considered + google.type.Expr condition = 10 [(google.api.field_behavior) = OPTIONAL]; } // Represents a BigQuery dataset. @@ -492,6 +494,34 @@ message GetDatasetRequest { // Optional. Specifies the view that determines which dataset information is // returned. By default, metadata and ACL information are returned. DatasetView dataset_view = 3 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. The version of the access policy schema to fetch. + // Valid values are 0, 1, and 3. Requests specifying an invalid value will be + // rejected. + // + // Requests for conditional access policy binding in datasets must specify + // version 3. Dataset with no conditional role bindings in access policy may + // specify any valid value or leave the field unset. + // + // This field will be maped to [IAM Policy version] + // (https://cloud.google.com/iam/docs/policies#versions) and will be used to + // fetch policy from IAM. + // + // If unset or if 0 or 1 value is used for dataset with conditional bindings, + // access entry with condition will have role string appended by + // 'withcond' string followed by a hash value. For example : + // { + // "access": [ + // { + // "role": + // "roles/bigquery.dataViewer_with_conditionalbinding_7a34awqsda", + // "userByEmail": "user@example.com", + // } + // ] + // } + // Please refer https://cloud.google.com/iam/docs/troubleshooting-withcond for + // more details. + int32 access_policy_version = 4 [(google.api.field_behavior) = OPTIONAL]; } // Request format for inserting a dataset. @@ -501,6 +531,27 @@ message InsertDatasetRequest { // Required. Datasets resource to use for the new dataset Dataset dataset = 2 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The version of the provided access policy schema. + // Valid values are 0, 1, and 3. Requests specifying an invalid value will be + // rejected. + // + // This version refers to the schema version of the access policy and not the + // version of access policy. This field's value can be equal or more + // than the access policy schema provided in the request. + // For example, + // * Requests with conditional access policy binding in datasets must + // specify + // version 3. + // * But dataset with no conditional role bindings in access policy + // may specify any valid value or leave the field unset. + // If unset or if 0 or 1 value is used for dataset with conditional + // bindings, request will be rejected. + // + // This field will be maped to IAM Policy version + // (https://cloud.google.com/iam/docs/policies#versions) and will be used to + // set policy in IAM. + int32 access_policy_version = 4 [(google.api.field_behavior) = OPTIONAL]; } // Message for updating or patching a dataset. @@ -514,6 +565,30 @@ message UpdateOrPatchDatasetRequest { // Required. Datasets resource which will replace or patch the specified // dataset. Dataset dataset = 3 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The version of the provided access policy schema. + // Valid values are 0, 1, and 3. Requests specifying an invalid value will be + // rejected. + // + // This version refers to the schema version of the access policy and not the + // version of access policy. This field's value can be equal or more + // than the access policy schema provided in the request. + // For example, + // * Operations updating conditional access policy binding in datasets must + // specify + // version 3. Some of the operations are : + // - Adding a new access policy entry with condition. + // - Removing an access policy entry with condition. + // - Updating an access policy entry with condition. + // * But dataset with no conditional role bindings in access policy + // may specify any valid value or leave the field unset. + // If unset or if 0 or 1 value is used for dataset with conditional + // bindings, request will be rejected. + // + // This field will be maped to IAM Policy version + // (https://cloud.google.com/iam/docs/policies#versions) and will be used to + // set policy in IAM. + int32 access_policy_version = 5 [(google.api.field_behavior) = OPTIONAL]; } // Request format for deleting a dataset. diff --git a/google/cloud/bigquery/v2/job.proto b/google/cloud/bigquery/v2/job.proto index b15e1fb428..9dcc51ecf0 100644 --- a/google/cloud/bigquery/v2/job.proto +++ b/google/cloud/bigquery/v2/job.proto @@ -39,10 +39,6 @@ option go_package = "cloud.google.com/go/bigquery/apiv2/bigquerypb;bigquerypb"; option java_outer_classname = "JobProto"; option java_package = "com.google.cloud.bigquery.v2"; -// This is an experimental RPC service definition for the BigQuery -// Job Service. -// -// It should not be relied on for production use cases at this time. service JobService { option (google.api.default_host) = "bigquery.googleapis.com"; option (google.api.oauth_scopes) = diff --git a/google/cloud/bigquery/v2/model.proto b/google/cloud/bigquery/v2/model.proto index dc33118761..ebc8bad86c 100644 --- a/google/cloud/bigquery/v2/model.proto +++ b/google/cloud/bigquery/v2/model.proto @@ -31,10 +31,7 @@ option go_package = "cloud.google.com/go/bigquery/apiv2/bigquerypb;bigquerypb"; option java_outer_classname = "ModelProto"; option java_package = "com.google.cloud.bigquery.v2"; -// This is an experimental RPC service definition for the BigQuery -// Model Service. -// -// It should not be relied on for production use cases at this time. +// Model Service for BigQuery ML service ModelService { option (google.api.default_host) = "bigquery.googleapis.com"; option (google.api.oauth_scopes) = @@ -227,6 +224,9 @@ message Model { // Model to capture the columns and logic in the TRANSFORM clause along with // statistics useful for ML analytic functions. TRANSFORM_ONLY = 29; + + // The contribution analysis model. + CONTRIBUTION_ANALYSIS = 37; } // Loss metric to evaluate model training performance. @@ -1486,6 +1486,24 @@ message Model { // The version aliases to apply in Vertex AI model registry. Always // overwrite if the version aliases exists in a existing model. repeated string vertex_ai_model_version_aliases = 97; + + // Optional. Names of the columns to slice on. Applies to contribution + // analysis models. + repeated string dimension_id_columns = 104 + [(google.api.field_behavior) = OPTIONAL]; + + // The contribution metric. Applies to contribution analysis models. + // Allowed formats supported are for summable and summable ratio + // contribution metrics. These include expressions such as `SUM(x)` or + // `SUM(x)/SUM(y)`, where x and y are column names from the base table. + optional string contribution_metric = 105; + + // Name of the column used to determine the rows corresponding to control + // and test. Applies to contribution analysis models. + optional string is_test_column = 106; + + // The apriori support minimum. Applies to contribution analysis models. + optional double min_apriori_support = 107; } // Information about a single iteration of the training run. diff --git a/google/cloud/bigquery/v2/project.proto b/google/cloud/bigquery/v2/project.proto index f04d3962ef..e3579d1ac4 100644 --- a/google/cloud/bigquery/v2/project.proto +++ b/google/cloud/bigquery/v2/project.proto @@ -24,10 +24,7 @@ option go_package = "cloud.google.com/go/bigquery/apiv2/bigquerypb;bigquerypb"; option java_outer_classname = "ProjectProto"; option java_package = "com.google.cloud.bigquery.v2"; -// This is an experimental RPC service definition for the BigQuery -// Project Service. -// -// It should not be relied on for production use cases at this time. +// This service provides access to BigQuery functionality related to projects. service ProjectService { option (google.api.default_host) = "bigquery.googleapis.com"; option (google.api.oauth_scopes) = diff --git a/google/cloud/bigquery/v2/routine.proto b/google/cloud/bigquery/v2/routine.proto index 352b745241..1754438e5e 100644 --- a/google/cloud/bigquery/v2/routine.proto +++ b/google/cloud/bigquery/v2/routine.proto @@ -29,10 +29,7 @@ option go_package = "cloud.google.com/go/bigquery/apiv2/bigquerypb;bigquerypb"; option java_outer_classname = "RoutineProto"; option java_package = "com.google.cloud.bigquery.v2"; -// This is an experimental RPC service definition for the BigQuery -// Routine Service. -// -// It should not be relied on for production use cases at this time. +// RoutineService provides management access to BigQuery routines. service RoutineService { option (google.api.default_host) = "bigquery.googleapis.com"; option (google.api.oauth_scopes) = @@ -137,7 +134,6 @@ message Routine { FIXED_TYPE = 1; // The argument is any type, including struct or array, but not a table. - // To be added: FIXED_TABLE, ANY_TABLE ANY_TYPE = 2; } @@ -167,7 +163,7 @@ message Routine { // Can be set for procedures only. Mode mode = 3; - // Required unless argument_kind = ANY_TYPE. + // Set if argument_kind == FIXED_TYPE. StandardSqlDataType data_type = 4; // Optional. Whether the argument is an aggregate function parameter. diff --git a/google/cloud/bigquery/v2/table.proto b/google/cloud/bigquery/v2/table.proto index 9f93ae5df6..02d307a7ac 100644 --- a/google/cloud/bigquery/v2/table.proto +++ b/google/cloud/bigquery/v2/table.proto @@ -42,10 +42,8 @@ option go_package = "cloud.google.com/go/bigquery/apiv2/bigquerypb;bigquerypb"; option java_outer_classname = "TableProto"; option java_package = "com.google.cloud.bigquery.v2"; -// This is an experimental RPC service definition for the BigQuery -// Table Service. -// -// It should not be relied on for production use cases at this time. +// TableService provides methods for managing BigQuery tables and table-like +// entities such as views and snapshots. service TableService { option (google.api.default_host) = "bigquery.googleapis.com"; option (google.api.oauth_scopes) =