#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ModelReference {
#[prost(string, tag="1")]
pub project_id: std::string::String,
#[prost(string, tag="2")]
pub dataset_id: std::string::String,
#[prost(string, tag="3")]
pub model_id: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StandardSqlDataType {
#[prost(enumeration="standard_sql_data_type::TypeKind", tag="1")]
pub type_kind: i32,
#[prost(oneof="standard_sql_data_type::SubType", tags="2, 3")]
pub sub_type: ::std::option::Option<standard_sql_data_type::SubType>,
}
pub mod standard_sql_data_type {
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TypeKind {
Unspecified = 0,
Int64 = 2,
Bool = 5,
Float64 = 7,
String = 8,
Bytes = 9,
Timestamp = 19,
Date = 10,
Time = 20,
Datetime = 21,
Geography = 22,
Numeric = 23,
Array = 16,
Struct = 17,
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum SubType {
#[prost(message, tag="2")]
ArrayElementType(Box<super::StandardSqlDataType>),
#[prost(message, tag="3")]
StructType(super::StandardSqlStructType),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StandardSqlField {
#[prost(string, tag="1")]
pub name: std::string::String,
#[prost(message, optional, tag="2")]
pub r#type: ::std::option::Option<StandardSqlDataType>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StandardSqlStructType {
#[prost(message, repeated, tag="1")]
pub fields: ::std::vec::Vec<StandardSqlField>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EncryptionConfiguration {
#[prost(message, optional, tag="1")]
pub kms_key_name: ::std::option::Option<::std::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Model {
#[prost(string, tag="1")]
pub etag: std::string::String,
#[prost(message, optional, tag="2")]
pub model_reference: ::std::option::Option<ModelReference>,
#[prost(int64, tag="5")]
pub creation_time: i64,
#[prost(int64, tag="6")]
pub last_modified_time: i64,
#[prost(string, tag="12")]
pub description: std::string::String,
#[prost(string, tag="14")]
pub friendly_name: std::string::String,
#[prost(map="string, string", tag="15")]
pub labels: ::std::collections::HashMap<std::string::String, std::string::String>,
#[prost(int64, tag="16")]
pub expiration_time: i64,
#[prost(string, tag="13")]
pub location: std::string::String,
#[prost(message, optional, tag="17")]
pub encryption_configuration: ::std::option::Option<EncryptionConfiguration>,
#[prost(enumeration="model::ModelType", tag="7")]
pub model_type: i32,
#[prost(message, repeated, tag="9")]
pub training_runs: ::std::vec::Vec<model::TrainingRun>,
#[prost(message, repeated, tag="10")]
pub feature_columns: ::std::vec::Vec<StandardSqlField>,
#[prost(message, repeated, tag="11")]
pub label_columns: ::std::vec::Vec<StandardSqlField>,
}
pub mod model {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct KmeansEnums {
}
pub mod kmeans_enums {
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum KmeansInitializationMethod {
Unspecified = 0,
Random = 1,
Custom = 2,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegressionMetrics {
#[prost(message, optional, tag="1")]
pub mean_absolute_error: ::std::option::Option<f64>,
#[prost(message, optional, tag="2")]
pub mean_squared_error: ::std::option::Option<f64>,
#[prost(message, optional, tag="3")]
pub mean_squared_log_error: ::std::option::Option<f64>,
#[prost(message, optional, tag="4")]
pub median_absolute_error: ::std::option::Option<f64>,
#[prost(message, optional, tag="5")]
pub r_squared: ::std::option::Option<f64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AggregateClassificationMetrics {
#[prost(message, optional, tag="1")]
pub precision: ::std::option::Option<f64>,
#[prost(message, optional, tag="2")]
pub recall: ::std::option::Option<f64>,
#[prost(message, optional, tag="3")]
pub accuracy: ::std::option::Option<f64>,
#[prost(message, optional, tag="4")]
pub threshold: ::std::option::Option<f64>,
#[prost(message, optional, tag="5")]
pub f1_score: ::std::option::Option<f64>,
#[prost(message, optional, tag="6")]
pub log_loss: ::std::option::Option<f64>,
#[prost(message, optional, tag="7")]
pub roc_auc: ::std::option::Option<f64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BinaryClassificationMetrics {
#[prost(message, optional, tag="1")]
pub aggregate_classification_metrics: ::std::option::Option<AggregateClassificationMetrics>,
#[prost(message, repeated, tag="2")]
pub binary_confusion_matrix_list: ::std::vec::Vec<binary_classification_metrics::BinaryConfusionMatrix>,
#[prost(string, tag="3")]
pub positive_label: std::string::String,
#[prost(string, tag="4")]
pub negative_label: std::string::String,
}
pub mod binary_classification_metrics {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BinaryConfusionMatrix {
#[prost(message, optional, tag="1")]
pub positive_class_threshold: ::std::option::Option<f64>,
#[prost(message, optional, tag="2")]
pub true_positives: ::std::option::Option<i64>,
#[prost(message, optional, tag="3")]
pub false_positives: ::std::option::Option<i64>,
#[prost(message, optional, tag="4")]
pub true_negatives: ::std::option::Option<i64>,
#[prost(message, optional, tag="5")]
pub false_negatives: ::std::option::Option<i64>,
#[prost(message, optional, tag="6")]
pub precision: ::std::option::Option<f64>,
#[prost(message, optional, tag="7")]
pub recall: ::std::option::Option<f64>,
#[prost(message, optional, tag="8")]
pub f1_score: ::std::option::Option<f64>,
#[prost(message, optional, tag="9")]
pub accuracy: ::std::option::Option<f64>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiClassClassificationMetrics {
#[prost(message, optional, tag="1")]
pub aggregate_classification_metrics: ::std::option::Option<AggregateClassificationMetrics>,
#[prost(message, repeated, tag="2")]
pub confusion_matrix_list: ::std::vec::Vec<multi_class_classification_metrics::ConfusionMatrix>,
}
pub mod multi_class_classification_metrics {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConfusionMatrix {
#[prost(message, optional, tag="1")]
pub confidence_threshold: ::std::option::Option<f64>,
#[prost(message, repeated, tag="2")]
pub rows: ::std::vec::Vec<confusion_matrix::Row>,
}
pub mod confusion_matrix {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Entry {
#[prost(string, tag="1")]
pub predicted_label: std::string::String,
#[prost(message, optional, tag="2")]
pub item_count: ::std::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Row {
#[prost(string, tag="1")]
pub actual_label: std::string::String,
#[prost(message, repeated, tag="2")]
pub entries: ::std::vec::Vec<Entry>,
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClusteringMetrics {
#[prost(message, optional, tag="1")]
pub davies_bouldin_index: ::std::option::Option<f64>,
#[prost(message, optional, tag="2")]
pub mean_squared_distance: ::std::option::Option<f64>,
#[prost(message, repeated, tag="3")]
pub clusters: ::std::vec::Vec<clustering_metrics::Cluster>,
}
pub mod clustering_metrics {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Cluster {
#[prost(int64, tag="1")]
pub centroid_id: i64,
#[prost(message, repeated, tag="2")]
pub feature_values: ::std::vec::Vec<cluster::FeatureValue>,
#[prost(message, optional, tag="3")]
pub count: ::std::option::Option<i64>,
}
pub mod cluster {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FeatureValue {
#[prost(string, tag="1")]
pub feature_column: std::string::String,
#[prost(oneof="feature_value::Value", tags="2, 3")]
pub value: ::std::option::Option<feature_value::Value>,
}
pub mod feature_value {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CategoricalValue {
#[prost(message, repeated, tag="1")]
pub category_counts: ::std::vec::Vec<categorical_value::CategoryCount>,
}
pub mod categorical_value {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CategoryCount {
#[prost(string, tag="1")]
pub category: std::string::String,
#[prost(message, optional, tag="2")]
pub count: ::std::option::Option<i64>,
}
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Value {
#[prost(message, tag="2")]
NumericalValue(f64),
#[prost(message, tag="3")]
CategoricalValue(CategoricalValue),
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EvaluationMetrics {
#[prost(oneof="evaluation_metrics::Metrics", tags="1, 2, 3, 4")]
pub metrics: ::std::option::Option<evaluation_metrics::Metrics>,
}
pub mod evaluation_metrics {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Metrics {
#[prost(message, tag="1")]
RegressionMetrics(super::RegressionMetrics),
#[prost(message, tag="2")]
BinaryClassificationMetrics(super::BinaryClassificationMetrics),
#[prost(message, tag="3")]
MultiClassClassificationMetrics(super::MultiClassClassificationMetrics),
#[prost(message, tag="4")]
ClusteringMetrics(super::ClusteringMetrics),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrainingRun {
#[prost(message, optional, tag="1")]
pub training_options: ::std::option::Option<training_run::TrainingOptions>,
#[prost(message, optional, tag="8")]
pub start_time: ::std::option::Option<::prost_types::Timestamp>,
#[prost(message, repeated, tag="6")]
pub results: ::std::vec::Vec<training_run::IterationResult>,
#[prost(message, optional, tag="7")]
pub evaluation_metrics: ::std::option::Option<EvaluationMetrics>,
}
pub mod training_run {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrainingOptions {
#[prost(int64, tag="1")]
pub max_iterations: i64,
#[prost(enumeration="super::LossType", tag="2")]
pub loss_type: i32,
#[prost(double, tag="3")]
pub learn_rate: f64,
#[prost(message, optional, tag="4")]
pub l1_regularization: ::std::option::Option<f64>,
#[prost(message, optional, tag="5")]
pub l2_regularization: ::std::option::Option<f64>,
#[prost(message, optional, tag="6")]
pub min_relative_progress: ::std::option::Option<f64>,
#[prost(message, optional, tag="7")]
pub warm_start: ::std::option::Option<bool>,
#[prost(message, optional, tag="8")]
pub early_stop: ::std::option::Option<bool>,
#[prost(string, repeated, tag="9")]
pub input_label_columns: ::std::vec::Vec<std::string::String>,
#[prost(enumeration="super::DataSplitMethod", tag="10")]
pub data_split_method: i32,
#[prost(double, tag="11")]
pub data_split_eval_fraction: f64,
#[prost(string, tag="12")]
pub data_split_column: std::string::String,
#[prost(enumeration="super::LearnRateStrategy", tag="13")]
pub learn_rate_strategy: i32,
#[prost(double, tag="16")]
pub initial_learn_rate: f64,
#[prost(map="string, double", tag="17")]
pub label_class_weights: ::std::collections::HashMap<std::string::String, f64>,
#[prost(enumeration="super::DistanceType", tag="20")]
pub distance_type: i32,
#[prost(int64, tag="21")]
pub num_clusters: i64,
#[prost(string, tag="22")]
pub model_uri: std::string::String,
#[prost(enumeration="super::OptimizationStrategy", tag="23")]
pub optimization_strategy: i32,
#[prost(enumeration="super::kmeans_enums::KmeansInitializationMethod", tag="33")]
pub kmeans_initialization_method: i32,
#[prost(string, tag="34")]
pub kmeans_initialization_column: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IterationResult {
#[prost(message, optional, tag="1")]
pub index: ::std::option::Option<i32>,
#[prost(message, optional, tag="4")]
pub duration_ms: ::std::option::Option<i64>,
#[prost(message, optional, tag="5")]
pub training_loss: ::std::option::Option<f64>,
#[prost(message, optional, tag="6")]
pub eval_loss: ::std::option::Option<f64>,
#[prost(double, tag="7")]
pub learn_rate: f64,
#[prost(message, repeated, tag="8")]
pub cluster_infos: ::std::vec::Vec<iteration_result::ClusterInfo>,
}
pub mod iteration_result {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClusterInfo {
#[prost(int64, tag="1")]
pub centroid_id: i64,
#[prost(message, optional, tag="2")]
pub cluster_radius: ::std::option::Option<f64>,
#[prost(message, optional, tag="3")]
pub cluster_size: ::std::option::Option<i64>,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ModelType {
Unspecified = 0,
LinearRegression = 1,
LogisticRegression = 2,
Kmeans = 3,
Tensorflow = 6,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum LossType {
Unspecified = 0,
MeanSquaredLoss = 1,
MeanLogLoss = 2,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum DistanceType {
Unspecified = 0,
Euclidean = 1,
Cosine = 2,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum DataSplitMethod {
Unspecified = 0,
Random = 1,
Custom = 2,
Sequential = 3,
NoSplit = 4,
AutoSplit = 5,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum LearnRateStrategy {
Unspecified = 0,
LineSearch = 1,
Constant = 2,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum OptimizationStrategy {
Unspecified = 0,
BatchGradientDescent = 1,
NormalEquation = 2,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetModelRequest {
#[prost(string, tag="1")]
pub project_id: std::string::String,
#[prost(string, tag="2")]
pub dataset_id: std::string::String,
#[prost(string, tag="3")]
pub model_id: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PatchModelRequest {
#[prost(string, tag="1")]
pub project_id: std::string::String,
#[prost(string, tag="2")]
pub dataset_id: std::string::String,
#[prost(string, tag="3")]
pub model_id: std::string::String,
#[prost(message, optional, tag="4")]
pub model: ::std::option::Option<Model>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeleteModelRequest {
#[prost(string, tag="1")]
pub project_id: std::string::String,
#[prost(string, tag="2")]
pub dataset_id: std::string::String,
#[prost(string, tag="3")]
pub model_id: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListModelsRequest {
#[prost(string, tag="1")]
pub project_id: std::string::String,
#[prost(string, tag="2")]
pub dataset_id: std::string::String,
#[prost(message, optional, tag="3")]
pub max_results: ::std::option::Option<u32>,
#[prost(string, tag="4")]
pub page_token: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListModelsResponse {
#[prost(message, repeated, tag="1")]
pub models: ::std::vec::Vec<Model>,
#[prost(string, tag="2")]
pub next_page_token: std::string::String,
}
# [ doc = r" Generated client implementations." ] pub mod model_service_client { # ! [ allow ( unused_variables , dead_code , missing_docs ) ] use tonic :: codegen :: * ; pub struct ModelServiceClient < T > { inner : tonic :: client :: Grpc < T > , } impl < T > ModelServiceClient < T > where T : tonic :: client :: GrpcService < tonic :: body :: BoxBody > , T :: ResponseBody : Body + HttpBody + Send + 'static , T :: Error : Into < StdError > , < T :: ResponseBody as HttpBody > :: Error : Into < StdError > + Send , { pub fn new ( inner : T ) -> Self { let inner = tonic :: client :: Grpc :: new ( inner ) ; Self { inner } } pub fn with_interceptor ( inner : T , interceptor : impl Into < tonic :: Interceptor > ) -> Self { let inner = tonic :: client :: Grpc :: with_interceptor ( inner , interceptor ) ; Self { inner } } # [ doc = " Gets the specified model resource by model ID." ] pub async fn get_model ( & mut self , request : impl tonic :: IntoRequest < super :: GetModelRequest > , ) -> Result < tonic :: Response < super :: Model > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.bigquery.v2.ModelService/GetModel" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Lists all models in the specified dataset. Requires the READER dataset" ] # [ doc = " role." ] pub async fn list_models ( & mut self , request : impl tonic :: IntoRequest < super :: ListModelsRequest > , ) -> Result < tonic :: Response < super :: ListModelsResponse > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.bigquery.v2.ModelService/ListModels" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Patch specific fields in the specified model." ] pub async fn patch_model ( & mut self , request : impl tonic :: IntoRequest < super :: PatchModelRequest > , ) -> Result < tonic :: Response < super :: Model > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.bigquery.v2.ModelService/PatchModel" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } # [ doc = " Deletes the model specified by modelId from the dataset." ] pub async fn delete_model ( & mut self , request : impl tonic :: IntoRequest < super :: DeleteModelRequest > , ) -> Result < tonic :: Response < ( ) > , tonic :: Status > { self . inner . ready ( ) . await . map_err ( | e | { tonic :: Status :: new ( tonic :: Code :: Unknown , format ! ( "Service was not ready: {}" , e . into ( ) ) ) } ) ? ; let codec = tonic :: codec :: ProstCodec :: default ( ) ; let path = http :: uri :: PathAndQuery :: from_static ( "/google.cloud.bigquery.v2.ModelService/DeleteModel" ) ; self . inner . unary ( request . into_request ( ) , path , codec ) . await } } impl < T : Clone > Clone for ModelServiceClient < T > { fn clone ( & self ) -> Self { Self { inner : self . inner . clone ( ) , } } } impl < T > std :: fmt :: Debug for ModelServiceClient < T > { fn fmt ( & self , f : & mut std :: fmt :: Formatter < '_ > ) -> std :: fmt :: Result { write ! ( f , "ModelServiceClient {{ ... }}" ) } } }use serde :: { Serialize , Deserialize } ;