<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="bigquery_v2.html">BigQuery API</a> . <a href="bigquery_v2.models.html">models</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, datasetId, modelId)</a></code></p>
<p class="firstline">Deletes the model specified by modelId from the dataset.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, datasetId, modelId)</a></code></p>
<p class="firstline">Gets the specified model resource by model ID.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, datasetId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists all models in the specified dataset. Requires the READER dataset</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(projectId, datasetId, modelId, body=None)</a></code></p>
<p class="firstline">Patch specific fields in the specified model.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(projectId, datasetId, modelId)</code>
  <pre>Deletes the model specified by modelId from the dataset.

Args:
  projectId: string, Required. Project ID of the model to delete. (required)
  datasetId: string, Required. Dataset ID of the model to delete. (required)
  modelId: string, Required. Model ID of the model to delete. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, datasetId, modelId)</code>
  <pre>Gets the specified model resource by model ID.

Args:
  projectId: string, Required. Project ID of the requested model. (required)
  datasetId: string, Required. Dataset ID of the requested model. (required)
  modelId: string, Required. Model ID of the requested model. (required)

Returns:
  An object of the form:

    {
    &quot;modelType&quot;: &quot;A String&quot;, # Output only. Type of the model resource.
    &quot;labelColumns&quot;: [ # Output only. Label columns that were used to train this model.
        # The output of the model will have a &quot;predicted_&quot; prefix to these columns.
      { # A field or a column.
        &quot;type&quot;: { # The type of a variable, e.g., a function argument. # Optional. The type of this parameter. Absent if not explicitly
            # specified (e.g., CREATE FUNCTION statement can omit the return type;
            # in this case the output parameter does not have this &quot;type&quot; field).
            # Examples:
            # INT64: {type_kind=&quot;INT64&quot;}
            # ARRAY&lt;STRING&gt;: {type_kind=&quot;ARRAY&quot;, array_element_type=&quot;STRING&quot;}
            # STRUCT&lt;x STRING, y ARRAY&lt;DATE&gt;&gt;:
            #   {type_kind=&quot;STRUCT&quot;,
            #    struct_type={fields=[
            #      {name=&quot;x&quot;, type={type_kind=&quot;STRING&quot;}},
            #      {name=&quot;y&quot;, type={type_kind=&quot;ARRAY&quot;, array_element_type=&quot;DATE&quot;}}
            #    ]}}
          &quot;typeKind&quot;: &quot;A String&quot;, # Required. The top level type of this field.
              # Can be any standard SQL data type (e.g., &quot;INT64&quot;, &quot;DATE&quot;, &quot;ARRAY&quot;).
          &quot;structType&quot;: { # The fields of this struct, in order, if type_kind = &quot;STRUCT&quot;.
            &quot;fields&quot;: [
              # Object with schema name: StandardSqlField
            ],
          },
          &quot;arrayElementType&quot;: # Object with schema name: StandardSqlDataType # The type of the array&#x27;s elements, if type_kind = &quot;ARRAY&quot;.
        },
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of this field. Can be absent for struct fields.
      },
    ],
    &quot;featureColumns&quot;: [ # Output only. Input feature columns that were used to train this model.
      { # A field or a column.
        &quot;type&quot;: { # The type of a variable, e.g., a function argument. # Optional. The type of this parameter. Absent if not explicitly
            # specified (e.g., CREATE FUNCTION statement can omit the return type;
            # in this case the output parameter does not have this &quot;type&quot; field).
            # Examples:
            # INT64: {type_kind=&quot;INT64&quot;}
            # ARRAY&lt;STRING&gt;: {type_kind=&quot;ARRAY&quot;, array_element_type=&quot;STRING&quot;}
            # STRUCT&lt;x STRING, y ARRAY&lt;DATE&gt;&gt;:
            #   {type_kind=&quot;STRUCT&quot;,
            #    struct_type={fields=[
            #      {name=&quot;x&quot;, type={type_kind=&quot;STRING&quot;}},
            #      {name=&quot;y&quot;, type={type_kind=&quot;ARRAY&quot;, array_element_type=&quot;DATE&quot;}}
            #    ]}}
          &quot;typeKind&quot;: &quot;A String&quot;, # Required. The top level type of this field.
              # Can be any standard SQL data type (e.g., &quot;INT64&quot;, &quot;DATE&quot;, &quot;ARRAY&quot;).
          &quot;structType&quot;: { # The fields of this struct, in order, if type_kind = &quot;STRUCT&quot;.
            &quot;fields&quot;: [
              # Object with schema name: StandardSqlField
            ],
          },
          &quot;arrayElementType&quot;: # Object with schema name: StandardSqlDataType # The type of the array&#x27;s elements, if type_kind = &quot;ARRAY&quot;.
        },
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of this field. Can be absent for struct fields.
      },
    ],
    &quot;expirationTime&quot;: &quot;A String&quot;, # Optional. The time when this model expires, in milliseconds since the epoch.
        # If not present, the model will persist indefinitely. Expired models
        # will be deleted and their storage reclaimed.  The defaultTableExpirationMs
        # property of the encapsulating dataset can be used to set a default
        # expirationTime on newly created models.
    &quot;trainingRuns&quot;: [ # Output only. Information for all training runs in increasing order of start_time.
      { # Information about a single training query run for the model.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time of this training run.
        &quot;results&quot;: [ # Output of each iteration run, results.size() &lt;= max_iterations.
          { # Information about a single iteration of the training run.
            &quot;trainingLoss&quot;: 3.14, # Loss computed on the training data at the end of iteration.
            &quot;evalLoss&quot;: 3.14, # Loss computed on the eval data at the end of iteration.
            &quot;index&quot;: 42, # Index of the iteration, 0 based.
            &quot;learnRate&quot;: 3.14, # Learn rate used for this iteration.
            &quot;durationMs&quot;: &quot;A String&quot;, # Time taken to run the iteration in milliseconds.
            &quot;arimaResult&quot;: { # (Auto-)arima fitting result. Wrap everything in ArimaResult for easier
                # refactoring if we want to use model-specific iteration results.
              &quot;arimaModelInfo&quot;: [ # This message is repeated because there are multiple arima models
                  # fitted in auto-arima. For non-auto-arima model, its size is one.
                { # Arima model information.
                  &quot;arimaCoefficients&quot;: { # Arima coefficients. # Arima coefficients.
                    &quot;autoRegressiveCoefficients&quot;: [ # Auto-regressive coefficients, an array of double.
                      3.14,
                    ],
                    &quot;interceptCoefficient&quot;: 3.14, # Intercept coefficient, just a double not an array.
                    &quot;movingAverageCoefficients&quot;: [ # Moving-average coefficients, an array of double.
                      3.14,
                    ],
                  },
                  &quot;hasDrift&quot;: True or False, # Whether Arima model fitted with drift or not. It is always false
                      # when d is not 1.
                  &quot;seasonalPeriods&quot;: [ # Seasonal periods. Repeated because multiple periods are supported
                      # for one time series.
                    &quot;A String&quot;,
                  ],
                  &quot;nonSeasonalOrder&quot;: { # Arima order, can be used for both non-seasonal and seasonal parts. # Non-seasonal order.
                    &quot;d&quot;: &quot;A String&quot;, # Order of the differencing part.
                    &quot;p&quot;: &quot;A String&quot;, # Order of the autoregressive part.
                    &quot;q&quot;: &quot;A String&quot;, # Order of the moving-average part.
                  },
                  &quot;arimaFittingMetrics&quot;: { # ARIMA model fitting metrics. # Arima fitting metrics.
                    &quot;aic&quot;: 3.14, # AIC.
                    &quot;logLikelihood&quot;: 3.14, # Log-likelihood.
                    &quot;variance&quot;: 3.14, # Variance.
                  },
                  &quot;timeSeriesId&quot;: &quot;A String&quot;, # The id to indicate different time series.
                },
              ],
              &quot;seasonalPeriods&quot;: [ # Seasonal periods. Repeated because multiple periods are supported for
                  # one time series.
                &quot;A String&quot;,
              ],
            },
            &quot;clusterInfos&quot;: [ # Information about top clusters for clustering models.
              { # Information about a single cluster for clustering model.
                &quot;clusterRadius&quot;: 3.14, # Cluster radius, the average distance from centroid
                    # to each point assigned to the cluster.
                &quot;clusterSize&quot;: &quot;A String&quot;, # Cluster size, the total number of points assigned to the cluster.
                &quot;centroidId&quot;: &quot;A String&quot;, # Centroid id.
              },
            ],
          },
        ],
        &quot;evaluationMetrics&quot;: { # Evaluation metrics of a model. These are either computed on all training # The evaluation metrics over training/eval data that were computed at the
            # end of training.
            # data or just the eval data based on whether eval data was used during
            # training. These are not present for imported models.
          &quot;rankingMetrics&quot;: { # Evaluation metrics used by weighted-ALS models specified by # [Alpha] Populated for implicit feedback type matrix factorization
              # models.
              # feedback_type=implicit.
            &quot;normalizedDiscountedCumulativeGain&quot;: 3.14, # A metric to determine the goodness of a ranking calculated from the
                # predicted confidence by comparing it to an ideal rank measured by the
                # original ratings.
            &quot;averageRank&quot;: 3.14, # Determines the goodness of a ranking by computing the percentile rank
                # from the predicted confidence and dividing it by the original rank.
            &quot;meanSquaredError&quot;: 3.14, # Similar to the mean squared error computed in regression and explicit
                # recommendation models except instead of computing the rating directly,
                # the output from evaluate is computed against a preference which is 1 or 0
                # depending on if the rating exists or not.
            &quot;meanAveragePrecision&quot;: 3.14, # Calculates a precision per user for all the items by ranking them and
                # then averages all the precisions across all the users.
          },
          &quot;multiClassClassificationMetrics&quot;: { # Evaluation metrics for multi-class classification/classifier models. # Populated for multi-class classification/classifier models.
            &quot;aggregateClassificationMetrics&quot;: { # Aggregate metrics for classification/classifier models. For multi-class # Aggregate classification metrics.
                # models, the metrics are either macro-averaged or micro-averaged. When
                # macro-averaged, the metrics are calculated for each label and then an
                # unweighted average is taken of those values. When micro-averaged, the
                # metric is calculated globally by counting the total number of correctly
                # predicted rows.
              &quot;threshold&quot;: 3.14, # Threshold at which the metrics are computed. For binary
                  # classification models this is the positive class threshold.
                  # For multi-class classfication models this is the confidence
                  # threshold.
              &quot;rocAuc&quot;: 3.14, # Area Under a ROC Curve. For multiclass this is a macro-averaged
                  # metric.
              &quot;logLoss&quot;: 3.14, # Logarithmic Loss. For multiclass this is a macro-averaged metric.
              &quot;f1Score&quot;: 3.14, # The F1 score is an average of recall and precision. For multiclass
                  # this is a macro-averaged metric.
              &quot;precision&quot;: 3.14, # Precision is the fraction of actual positive predictions that had
                  # positive actual labels. For multiclass this is a macro-averaged
                  # metric treating each class as a binary classifier.
              &quot;accuracy&quot;: 3.14, # Accuracy is the fraction of predictions given the correct label. For
                  # multiclass this is a micro-averaged metric.
              &quot;recall&quot;: 3.14, # Recall is the fraction of actual positive labels that were given a
                  # positive prediction. For multiclass this is a macro-averaged metric.
            },
            &quot;confusionMatrixList&quot;: [ # Confusion matrix at different thresholds.
              { # Confusion matrix for multi-class classification models.
                &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold used when computing the entries of the
                    # confusion matrix.
                &quot;rows&quot;: [ # One row per actual label.
                  { # A single row in the confusion matrix.
                    &quot;entries&quot;: [ # Info describing predicted label distribution.
                      { # A single entry in the confusion matrix.
                        &quot;itemCount&quot;: &quot;A String&quot;, # Number of items being predicted as this label.
                        &quot;predictedLabel&quot;: &quot;A String&quot;, # The predicted label. For confidence_threshold &gt; 0, we will
                            # also add an entry indicating the number of items under the
                            # confidence threshold.
                      },
                    ],
                    &quot;actualLabel&quot;: &quot;A String&quot;, # The original label of this row.
                  },
                ],
              },
            ],
          },
          &quot;clusteringMetrics&quot;: { # Evaluation metrics for clustering models. # Populated for clustering models.
            &quot;meanSquaredDistance&quot;: 3.14, # Mean of squared distances between each sample to its cluster centroid.
            &quot;daviesBouldinIndex&quot;: 3.14, # Davies-Bouldin index.
            &quot;clusters&quot;: [ # [Beta] Information for all clusters.
              { # Message containing the information about one cluster.
                &quot;centroidId&quot;: &quot;A String&quot;, # Centroid id.
                &quot;count&quot;: &quot;A String&quot;, # Count of training data rows that were assigned to this cluster.
                &quot;featureValues&quot;: [ # Values of highly variant features for this cluster.
                  { # Representative value of a single feature within the cluster.
                    &quot;numericalValue&quot;: 3.14, # The numerical feature value. This is the centroid value for this
                        # feature.
                    &quot;featureColumn&quot;: &quot;A String&quot;, # The feature column name.
                    &quot;categoricalValue&quot;: { # Representative value of a categorical feature. # The categorical feature value.
                      &quot;categoryCounts&quot;: [ # Counts of all categories for the categorical feature. If there are
                          # more than ten categories, we return top ten (by count) and return
                          # one more CategoryCount with category &quot;_OTHER_&quot; and count as
                          # aggregate counts of remaining categories.
                        { # Represents the count of a single category within the cluster.
                          &quot;category&quot;: &quot;A String&quot;, # The name of category.
                          &quot;count&quot;: &quot;A String&quot;, # The count of training samples matching the category within the
                              # cluster.
                        },
                      ],
                    },
                  },
                ],
              },
            ],
          },
          &quot;binaryClassificationMetrics&quot;: { # Evaluation metrics for binary classification/classifier models. # Populated for binary classification/classifier models.
            &quot;binaryConfusionMatrixList&quot;: [ # Binary confusion matrix at multiple thresholds.
              { # Confusion matrix for binary classification models.
                &quot;recall&quot;: 3.14, # The fraction of actual positive labels that were given a positive
                    # prediction.
                &quot;falseNegatives&quot;: &quot;A String&quot;, # Number of false samples predicted as false.
                &quot;falsePositives&quot;: &quot;A String&quot;, # Number of false samples predicted as true.
                &quot;trueNegatives&quot;: &quot;A String&quot;, # Number of true samples predicted as false.
                &quot;f1Score&quot;: 3.14, # The equally weighted average of recall and precision.
                &quot;precision&quot;: 3.14, # The fraction of actual positive predictions that had positive actual
                    # labels.
                &quot;positiveClassThreshold&quot;: 3.14, # Threshold value used when computing each of the following metric.
                &quot;accuracy&quot;: 3.14, # The fraction of predictions given the correct label.
                &quot;truePositives&quot;: &quot;A String&quot;, # Number of true samples predicted as true.
              },
            ],
            &quot;aggregateClassificationMetrics&quot;: { # Aggregate metrics for classification/classifier models. For multi-class # Aggregate classification metrics.
                # models, the metrics are either macro-averaged or micro-averaged. When
                # macro-averaged, the metrics are calculated for each label and then an
                # unweighted average is taken of those values. When micro-averaged, the
                # metric is calculated globally by counting the total number of correctly
                # predicted rows.
              &quot;threshold&quot;: 3.14, # Threshold at which the metrics are computed. For binary
                  # classification models this is the positive class threshold.
                  # For multi-class classfication models this is the confidence
                  # threshold.
              &quot;rocAuc&quot;: 3.14, # Area Under a ROC Curve. For multiclass this is a macro-averaged
                  # metric.
              &quot;logLoss&quot;: 3.14, # Logarithmic Loss. For multiclass this is a macro-averaged metric.
              &quot;f1Score&quot;: 3.14, # The F1 score is an average of recall and precision. For multiclass
                  # this is a macro-averaged metric.
              &quot;precision&quot;: 3.14, # Precision is the fraction of actual positive predictions that had
                  # positive actual labels. For multiclass this is a macro-averaged
                  # metric treating each class as a binary classifier.
              &quot;accuracy&quot;: 3.14, # Accuracy is the fraction of predictions given the correct label. For
                  # multiclass this is a micro-averaged metric.
              &quot;recall&quot;: 3.14, # Recall is the fraction of actual positive labels that were given a
                  # positive prediction. For multiclass this is a macro-averaged metric.
            },
            &quot;negativeLabel&quot;: &quot;A String&quot;, # Label representing the negative class.
            &quot;positiveLabel&quot;: &quot;A String&quot;, # Label representing the positive class.
          },
          &quot;regressionMetrics&quot;: { # Evaluation metrics for regression and explicit feedback type matrix # Populated for regression models and explicit feedback type matrix
              # factorization models.
              # factorization models.
            &quot;meanSquaredError&quot;: 3.14, # Mean squared error.
            &quot;rSquared&quot;: 3.14, # R^2 score.
            &quot;medianAbsoluteError&quot;: 3.14, # Median absolute error.
            &quot;meanSquaredLogError&quot;: 3.14, # Mean squared log error.
            &quot;meanAbsoluteError&quot;: 3.14, # Mean absolute error.
          },
        },
        &quot;trainingOptions&quot;: { # Options that were used for this training run, includes
            # user specified and default options that were used.
          &quot;dropout&quot;: 3.14, # Dropout probability for dnn models.
          &quot;learnRate&quot;: 3.14, # Learning rate in training. Used only for iterative training algorithms.
          &quot;labelClassWeights&quot;: { # Weights associated with each label class, for rebalancing the
              # training data. Only applicable for classification models.
            &quot;a_key&quot;: 3.14,
          },
          &quot;subsample&quot;: 3.14, # Subsample fraction of the training data to grow tree to prevent
              # overfitting for boosted tree models.
          &quot;earlyStop&quot;: True or False, # Whether to stop early when the loss doesn&#x27;t improve significantly
              # any more (compared to min_relative_progress). Used only for iterative
              # training algorithms.
          &quot;dataSplitEvalFraction&quot;: 3.14, # The fraction of evaluation data over the whole input data. The rest
              # of data will be used as training data. The format should be double.
              # Accurate to two decimal places.
              # Default value is 0.2.
          &quot;initialLearnRate&quot;: 3.14, # Specifies the initial learning rate for the line search learn rate
              # strategy.
          &quot;itemColumn&quot;: &quot;A String&quot;, # Item column specified for matrix factorization models.
          &quot;inputLabelColumns&quot;: [ # Name of input label columns in training data.
            &quot;A String&quot;,
          ],
          &quot;warmStart&quot;: True or False, # Whether to train a model from the last checkpoint.
          &quot;learnRateStrategy&quot;: &quot;A String&quot;, # The strategy to determine learn rate for the current iteration.
          &quot;numFactors&quot;: &quot;A String&quot;, # Num factors specified for matrix factorization models.
          &quot;lossType&quot;: &quot;A String&quot;, # Type of loss function used during training run.
          &quot;hiddenUnits&quot;: [ # Hidden units for dnn models.
            &quot;A String&quot;,
          ],
          &quot;l1Regularization&quot;: 3.14, # L1 regularization coefficient.
          &quot;kmeansInitializationMethod&quot;: &quot;A String&quot;, # The method used to initialize the centroids for kmeans algorithm.
          &quot;distanceType&quot;: &quot;A String&quot;, # Distance type for clustering models.
          &quot;walsAlpha&quot;: 3.14, # Hyperparameter for matrix factoration when implicit feedback type is
              # specified.
          &quot;feedbackType&quot;: &quot;A String&quot;, # Feedback type that specifies which algorithm to run for matrix
              # factorization.
          &quot;optimizationStrategy&quot;: &quot;A String&quot;, # Optimization strategy for training linear regression models.
          &quot;dataSplitColumn&quot;: &quot;A String&quot;, # The column to split data with. This column won&#x27;t be used as a
              # feature.
              # 1. When data_split_method is CUSTOM, the corresponding column should
              # be boolean. The rows with true value tag are eval data, and the false
              # are training data.
              # 2. When data_split_method is SEQ, the first DATA_SPLIT_EVAL_FRACTION
              # rows (from smallest to largest) in the corresponding column are used
              # as training data, and the rest are eval data. It respects the order
              # in Orderable data types:
              # https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#data-type-properties
          &quot;maxIterations&quot;: &quot;A String&quot;, # The maximum number of iterations in training. Used only for iterative
              # training algorithms.
          &quot;userColumn&quot;: &quot;A String&quot;, # User column specified for matrix factorization models.
          &quot;maxTreeDepth&quot;: &quot;A String&quot;, # Maximum depth of a tree for boosted tree models.
          &quot;preserveInputStructs&quot;: True or False, # Whether to preserve the input structs in output feature names.
              # Suppose there is a struct A with field b.
              # When false (default), the output feature name is A_b.
              # When true, the output feature name is A.b.
          &quot;l2Regularization&quot;: 3.14, # L2 regularization coefficient.
          &quot;modelUri&quot;: &quot;A String&quot;, # [Beta] Google Cloud Storage URI from which the model was imported. Only
              # applicable for imported models.
          &quot;batchSize&quot;: &quot;A String&quot;, # Batch size for dnn models.
          &quot;kmeansInitializationColumn&quot;: &quot;A String&quot;, # The column used to provide the initial centroids for kmeans algorithm
              # when kmeans_initialization_method is CUSTOM.
          &quot;minRelativeProgress&quot;: 3.14, # When early_stop is true, stops training when accuracy improvement is
              # less than &#x27;min_relative_progress&#x27;. Used only for iterative training
              # algorithms.
          &quot;numClusters&quot;: &quot;A String&quot;, # Number of clusters for clustering models.
          &quot;dataSplitMethod&quot;: &quot;A String&quot;, # The data split type for training and evaluation, e.g. RANDOM.
          &quot;minSplitLoss&quot;: 3.14, # Minimum split loss for boosted tree models.
        },
        &quot;dataSplitResult&quot;: { # Data split result. This contains references to the training and evaluation # Data split result of the training run. Only set when the input data is
            # actually split.
            # data tables that were used to train the model.
          &quot;trainingTable&quot;: { # Table reference of the training data after split.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
          &quot;evaluationTable&quot;: { # Table reference of the evaluation data after split.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
        },
      },
    ],
    &quot;modelReference&quot;: { # Required. Unique identifier for this model.
      &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
      &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
      &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
    },
    &quot;description&quot;: &quot;A String&quot;, # Optional. A user-friendly description of this model.
    &quot;etag&quot;: &quot;A String&quot;, # Output only. A hash of this resource.
    &quot;creationTime&quot;: &quot;A String&quot;, # Output only. The time when this model was created, in millisecs since the epoch.
    &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys). This shows the
        # encryption configuration of the model data while stored in BigQuery
        # storage. This field can be used with PatchModel to update encryption key
        # for an already encrypted model.
      &quot;kmsKeyName&quot;: &quot;A String&quot;, # [Optional] Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key.
    },
    &quot;location&quot;: &quot;A String&quot;, # Output only. The geographic location where the model resides. This value
        # is inherited from the dataset.
    &quot;friendlyName&quot;: &quot;A String&quot;, # Optional. A descriptive name for this model.
    &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Output only. The time when this model was last modified, in millisecs since the epoch.
    &quot;labels&quot;: { # The labels associated with this model. You can use these to organize
        # and group your models. Label keys and values can be no longer
        # than 63 characters, can only contain lowercase letters, numeric
        # characters, underscores and dashes. International characters are allowed.
        # Label values are optional. Label keys must start with a letter and each
        # label in the list must have a different key.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, datasetId, pageToken=None, maxResults=None)</code>
  <pre>Lists all models in the specified dataset. Requires the READER dataset
role.

Args:
  projectId: string, Required. Project ID of the models to list. (required)
  datasetId: string, Required. Dataset ID of the models to list. (required)
  pageToken: string, Page token, returned by a previous call to request the next page of
results
  maxResults: integer, The maximum number of results to return in a single response page.
Leverage the page tokens to iterate through the entire collection.

Returns:
  An object of the form:

    {
    &quot;models&quot;: [ # Models in the requested dataset. Only the following fields are populated:
        # model_reference, model_type, creation_time, last_modified_time and
        # labels.
      {
        &quot;modelType&quot;: &quot;A String&quot;, # Output only. Type of the model resource.
        &quot;labelColumns&quot;: [ # Output only. Label columns that were used to train this model.
            # The output of the model will have a &quot;predicted_&quot; prefix to these columns.
          { # A field or a column.
            &quot;type&quot;: { # The type of a variable, e.g., a function argument. # Optional. The type of this parameter. Absent if not explicitly
                # specified (e.g., CREATE FUNCTION statement can omit the return type;
                # in this case the output parameter does not have this &quot;type&quot; field).
                # Examples:
                # INT64: {type_kind=&quot;INT64&quot;}
                # ARRAY&lt;STRING&gt;: {type_kind=&quot;ARRAY&quot;, array_element_type=&quot;STRING&quot;}
                # STRUCT&lt;x STRING, y ARRAY&lt;DATE&gt;&gt;:
                #   {type_kind=&quot;STRUCT&quot;,
                #    struct_type={fields=[
                #      {name=&quot;x&quot;, type={type_kind=&quot;STRING&quot;}},
                #      {name=&quot;y&quot;, type={type_kind=&quot;ARRAY&quot;, array_element_type=&quot;DATE&quot;}}
                #    ]}}
              &quot;typeKind&quot;: &quot;A String&quot;, # Required. The top level type of this field.
                  # Can be any standard SQL data type (e.g., &quot;INT64&quot;, &quot;DATE&quot;, &quot;ARRAY&quot;).
              &quot;structType&quot;: { # The fields of this struct, in order, if type_kind = &quot;STRUCT&quot;.
                &quot;fields&quot;: [
                  # Object with schema name: StandardSqlField
                ],
              },
              &quot;arrayElementType&quot;: # Object with schema name: StandardSqlDataType # The type of the array&#x27;s elements, if type_kind = &quot;ARRAY&quot;.
            },
            &quot;name&quot;: &quot;A String&quot;, # Optional. The name of this field. Can be absent for struct fields.
          },
        ],
        &quot;featureColumns&quot;: [ # Output only. Input feature columns that were used to train this model.
          { # A field or a column.
            &quot;type&quot;: { # The type of a variable, e.g., a function argument. # Optional. The type of this parameter. Absent if not explicitly
                # specified (e.g., CREATE FUNCTION statement can omit the return type;
                # in this case the output parameter does not have this &quot;type&quot; field).
                # Examples:
                # INT64: {type_kind=&quot;INT64&quot;}
                # ARRAY&lt;STRING&gt;: {type_kind=&quot;ARRAY&quot;, array_element_type=&quot;STRING&quot;}
                # STRUCT&lt;x STRING, y ARRAY&lt;DATE&gt;&gt;:
                #   {type_kind=&quot;STRUCT&quot;,
                #    struct_type={fields=[
                #      {name=&quot;x&quot;, type={type_kind=&quot;STRING&quot;}},
                #      {name=&quot;y&quot;, type={type_kind=&quot;ARRAY&quot;, array_element_type=&quot;DATE&quot;}}
                #    ]}}
              &quot;typeKind&quot;: &quot;A String&quot;, # Required. The top level type of this field.
                  # Can be any standard SQL data type (e.g., &quot;INT64&quot;, &quot;DATE&quot;, &quot;ARRAY&quot;).
              &quot;structType&quot;: { # The fields of this struct, in order, if type_kind = &quot;STRUCT&quot;.
                &quot;fields&quot;: [
                  # Object with schema name: StandardSqlField
                ],
              },
              &quot;arrayElementType&quot;: # Object with schema name: StandardSqlDataType # The type of the array&#x27;s elements, if type_kind = &quot;ARRAY&quot;.
            },
            &quot;name&quot;: &quot;A String&quot;, # Optional. The name of this field. Can be absent for struct fields.
          },
        ],
        &quot;expirationTime&quot;: &quot;A String&quot;, # Optional. The time when this model expires, in milliseconds since the epoch.
            # If not present, the model will persist indefinitely. Expired models
            # will be deleted and their storage reclaimed.  The defaultTableExpirationMs
            # property of the encapsulating dataset can be used to set a default
            # expirationTime on newly created models.
        &quot;trainingRuns&quot;: [ # Output only. Information for all training runs in increasing order of start_time.
          { # Information about a single training query run for the model.
            &quot;startTime&quot;: &quot;A String&quot;, # The start time of this training run.
            &quot;results&quot;: [ # Output of each iteration run, results.size() &lt;= max_iterations.
              { # Information about a single iteration of the training run.
                &quot;trainingLoss&quot;: 3.14, # Loss computed on the training data at the end of iteration.
                &quot;evalLoss&quot;: 3.14, # Loss computed on the eval data at the end of iteration.
                &quot;index&quot;: 42, # Index of the iteration, 0 based.
                &quot;learnRate&quot;: 3.14, # Learn rate used for this iteration.
                &quot;durationMs&quot;: &quot;A String&quot;, # Time taken to run the iteration in milliseconds.
                &quot;arimaResult&quot;: { # (Auto-)arima fitting result. Wrap everything in ArimaResult for easier
                    # refactoring if we want to use model-specific iteration results.
                  &quot;arimaModelInfo&quot;: [ # This message is repeated because there are multiple arima models
                      # fitted in auto-arima. For non-auto-arima model, its size is one.
                    { # Arima model information.
                      &quot;arimaCoefficients&quot;: { # Arima coefficients. # Arima coefficients.
                        &quot;autoRegressiveCoefficients&quot;: [ # Auto-regressive coefficients, an array of double.
                          3.14,
                        ],
                        &quot;interceptCoefficient&quot;: 3.14, # Intercept coefficient, just a double not an array.
                        &quot;movingAverageCoefficients&quot;: [ # Moving-average coefficients, an array of double.
                          3.14,
                        ],
                      },
                      &quot;hasDrift&quot;: True or False, # Whether Arima model fitted with drift or not. It is always false
                          # when d is not 1.
                      &quot;seasonalPeriods&quot;: [ # Seasonal periods. Repeated because multiple periods are supported
                          # for one time series.
                        &quot;A String&quot;,
                      ],
                      &quot;nonSeasonalOrder&quot;: { # Arima order, can be used for both non-seasonal and seasonal parts. # Non-seasonal order.
                        &quot;d&quot;: &quot;A String&quot;, # Order of the differencing part.
                        &quot;p&quot;: &quot;A String&quot;, # Order of the autoregressive part.
                        &quot;q&quot;: &quot;A String&quot;, # Order of the moving-average part.
                      },
                      &quot;arimaFittingMetrics&quot;: { # ARIMA model fitting metrics. # Arima fitting metrics.
                        &quot;aic&quot;: 3.14, # AIC.
                        &quot;logLikelihood&quot;: 3.14, # Log-likelihood.
                        &quot;variance&quot;: 3.14, # Variance.
                      },
                      &quot;timeSeriesId&quot;: &quot;A String&quot;, # The id to indicate different time series.
                    },
                  ],
                  &quot;seasonalPeriods&quot;: [ # Seasonal periods. Repeated because multiple periods are supported for
                      # one time series.
                    &quot;A String&quot;,
                  ],
                },
                &quot;clusterInfos&quot;: [ # Information about top clusters for clustering models.
                  { # Information about a single cluster for clustering model.
                    &quot;clusterRadius&quot;: 3.14, # Cluster radius, the average distance from centroid
                        # to each point assigned to the cluster.
                    &quot;clusterSize&quot;: &quot;A String&quot;, # Cluster size, the total number of points assigned to the cluster.
                    &quot;centroidId&quot;: &quot;A String&quot;, # Centroid id.
                  },
                ],
              },
            ],
            &quot;evaluationMetrics&quot;: { # Evaluation metrics of a model. These are either computed on all training # The evaluation metrics over training/eval data that were computed at the
                # end of training.
                # data or just the eval data based on whether eval data was used during
                # training. These are not present for imported models.
              &quot;rankingMetrics&quot;: { # Evaluation metrics used by weighted-ALS models specified by # [Alpha] Populated for implicit feedback type matrix factorization
                  # models.
                  # feedback_type=implicit.
                &quot;normalizedDiscountedCumulativeGain&quot;: 3.14, # A metric to determine the goodness of a ranking calculated from the
                    # predicted confidence by comparing it to an ideal rank measured by the
                    # original ratings.
                &quot;averageRank&quot;: 3.14, # Determines the goodness of a ranking by computing the percentile rank
                    # from the predicted confidence and dividing it by the original rank.
                &quot;meanSquaredError&quot;: 3.14, # Similar to the mean squared error computed in regression and explicit
                    # recommendation models except instead of computing the rating directly,
                    # the output from evaluate is computed against a preference which is 1 or 0
                    # depending on if the rating exists or not.
                &quot;meanAveragePrecision&quot;: 3.14, # Calculates a precision per user for all the items by ranking them and
                    # then averages all the precisions across all the users.
              },
              &quot;multiClassClassificationMetrics&quot;: { # Evaluation metrics for multi-class classification/classifier models. # Populated for multi-class classification/classifier models.
                &quot;aggregateClassificationMetrics&quot;: { # Aggregate metrics for classification/classifier models. For multi-class # Aggregate classification metrics.
                    # models, the metrics are either macro-averaged or micro-averaged. When
                    # macro-averaged, the metrics are calculated for each label and then an
                    # unweighted average is taken of those values. When micro-averaged, the
                    # metric is calculated globally by counting the total number of correctly
                    # predicted rows.
                  &quot;threshold&quot;: 3.14, # Threshold at which the metrics are computed. For binary
                      # classification models this is the positive class threshold.
                      # For multi-class classfication models this is the confidence
                      # threshold.
                  &quot;rocAuc&quot;: 3.14, # Area Under a ROC Curve. For multiclass this is a macro-averaged
                      # metric.
                  &quot;logLoss&quot;: 3.14, # Logarithmic Loss. For multiclass this is a macro-averaged metric.
                  &quot;f1Score&quot;: 3.14, # The F1 score is an average of recall and precision. For multiclass
                      # this is a macro-averaged metric.
                  &quot;precision&quot;: 3.14, # Precision is the fraction of actual positive predictions that had
                      # positive actual labels. For multiclass this is a macro-averaged
                      # metric treating each class as a binary classifier.
                  &quot;accuracy&quot;: 3.14, # Accuracy is the fraction of predictions given the correct label. For
                      # multiclass this is a micro-averaged metric.
                  &quot;recall&quot;: 3.14, # Recall is the fraction of actual positive labels that were given a
                      # positive prediction. For multiclass this is a macro-averaged metric.
                },
                &quot;confusionMatrixList&quot;: [ # Confusion matrix at different thresholds.
                  { # Confusion matrix for multi-class classification models.
                    &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold used when computing the entries of the
                        # confusion matrix.
                    &quot;rows&quot;: [ # One row per actual label.
                      { # A single row in the confusion matrix.
                        &quot;entries&quot;: [ # Info describing predicted label distribution.
                          { # A single entry in the confusion matrix.
                            &quot;itemCount&quot;: &quot;A String&quot;, # Number of items being predicted as this label.
                            &quot;predictedLabel&quot;: &quot;A String&quot;, # The predicted label. For confidence_threshold &gt; 0, we will
                                # also add an entry indicating the number of items under the
                                # confidence threshold.
                          },
                        ],
                        &quot;actualLabel&quot;: &quot;A String&quot;, # The original label of this row.
                      },
                    ],
                  },
                ],
              },
              &quot;clusteringMetrics&quot;: { # Evaluation metrics for clustering models. # Populated for clustering models.
                &quot;meanSquaredDistance&quot;: 3.14, # Mean of squared distances between each sample to its cluster centroid.
                &quot;daviesBouldinIndex&quot;: 3.14, # Davies-Bouldin index.
                &quot;clusters&quot;: [ # [Beta] Information for all clusters.
                  { # Message containing the information about one cluster.
                    &quot;centroidId&quot;: &quot;A String&quot;, # Centroid id.
                    &quot;count&quot;: &quot;A String&quot;, # Count of training data rows that were assigned to this cluster.
                    &quot;featureValues&quot;: [ # Values of highly variant features for this cluster.
                      { # Representative value of a single feature within the cluster.
                        &quot;numericalValue&quot;: 3.14, # The numerical feature value. This is the centroid value for this
                            # feature.
                        &quot;featureColumn&quot;: &quot;A String&quot;, # The feature column name.
                        &quot;categoricalValue&quot;: { # Representative value of a categorical feature. # The categorical feature value.
                          &quot;categoryCounts&quot;: [ # Counts of all categories for the categorical feature. If there are
                              # more than ten categories, we return top ten (by count) and return
                              # one more CategoryCount with category &quot;_OTHER_&quot; and count as
                              # aggregate counts of remaining categories.
                            { # Represents the count of a single category within the cluster.
                              &quot;category&quot;: &quot;A String&quot;, # The name of category.
                              &quot;count&quot;: &quot;A String&quot;, # The count of training samples matching the category within the
                                  # cluster.
                            },
                          ],
                        },
                      },
                    ],
                  },
                ],
              },
              &quot;binaryClassificationMetrics&quot;: { # Evaluation metrics for binary classification/classifier models. # Populated for binary classification/classifier models.
                &quot;binaryConfusionMatrixList&quot;: [ # Binary confusion matrix at multiple thresholds.
                  { # Confusion matrix for binary classification models.
                    &quot;recall&quot;: 3.14, # The fraction of actual positive labels that were given a positive
                        # prediction.
                    &quot;falseNegatives&quot;: &quot;A String&quot;, # Number of false samples predicted as false.
                    &quot;falsePositives&quot;: &quot;A String&quot;, # Number of false samples predicted as true.
                    &quot;trueNegatives&quot;: &quot;A String&quot;, # Number of true samples predicted as false.
                    &quot;f1Score&quot;: 3.14, # The equally weighted average of recall and precision.
                    &quot;precision&quot;: 3.14, # The fraction of actual positive predictions that had positive actual
                        # labels.
                    &quot;positiveClassThreshold&quot;: 3.14, # Threshold value used when computing each of the following metric.
                    &quot;accuracy&quot;: 3.14, # The fraction of predictions given the correct label.
                    &quot;truePositives&quot;: &quot;A String&quot;, # Number of true samples predicted as true.
                  },
                ],
                &quot;aggregateClassificationMetrics&quot;: { # Aggregate metrics for classification/classifier models. For multi-class # Aggregate classification metrics.
                    # models, the metrics are either macro-averaged or micro-averaged. When
                    # macro-averaged, the metrics are calculated for each label and then an
                    # unweighted average is taken of those values. When micro-averaged, the
                    # metric is calculated globally by counting the total number of correctly
                    # predicted rows.
                  &quot;threshold&quot;: 3.14, # Threshold at which the metrics are computed. For binary
                      # classification models this is the positive class threshold.
                      # For multi-class classfication models this is the confidence
                      # threshold.
                  &quot;rocAuc&quot;: 3.14, # Area Under a ROC Curve. For multiclass this is a macro-averaged
                      # metric.
                  &quot;logLoss&quot;: 3.14, # Logarithmic Loss. For multiclass this is a macro-averaged metric.
                  &quot;f1Score&quot;: 3.14, # The F1 score is an average of recall and precision. For multiclass
                      # this is a macro-averaged metric.
                  &quot;precision&quot;: 3.14, # Precision is the fraction of actual positive predictions that had
                      # positive actual labels. For multiclass this is a macro-averaged
                      # metric treating each class as a binary classifier.
                  &quot;accuracy&quot;: 3.14, # Accuracy is the fraction of predictions given the correct label. For
                      # multiclass this is a micro-averaged metric.
                  &quot;recall&quot;: 3.14, # Recall is the fraction of actual positive labels that were given a
                      # positive prediction. For multiclass this is a macro-averaged metric.
                },
                &quot;negativeLabel&quot;: &quot;A String&quot;, # Label representing the negative class.
                &quot;positiveLabel&quot;: &quot;A String&quot;, # Label representing the positive class.
              },
              &quot;regressionMetrics&quot;: { # Evaluation metrics for regression and explicit feedback type matrix # Populated for regression models and explicit feedback type matrix
                  # factorization models.
                  # factorization models.
                &quot;meanSquaredError&quot;: 3.14, # Mean squared error.
                &quot;rSquared&quot;: 3.14, # R^2 score.
                &quot;medianAbsoluteError&quot;: 3.14, # Median absolute error.
                &quot;meanSquaredLogError&quot;: 3.14, # Mean squared log error.
                &quot;meanAbsoluteError&quot;: 3.14, # Mean absolute error.
              },
            },
            &quot;trainingOptions&quot;: { # Options that were used for this training run, includes
                # user specified and default options that were used.
              &quot;dropout&quot;: 3.14, # Dropout probability for dnn models.
              &quot;learnRate&quot;: 3.14, # Learning rate in training. Used only for iterative training algorithms.
              &quot;labelClassWeights&quot;: { # Weights associated with each label class, for rebalancing the
                  # training data. Only applicable for classification models.
                &quot;a_key&quot;: 3.14,
              },
              &quot;subsample&quot;: 3.14, # Subsample fraction of the training data to grow tree to prevent
                  # overfitting for boosted tree models.
              &quot;earlyStop&quot;: True or False, # Whether to stop early when the loss doesn&#x27;t improve significantly
                  # any more (compared to min_relative_progress). Used only for iterative
                  # training algorithms.
              &quot;dataSplitEvalFraction&quot;: 3.14, # The fraction of evaluation data over the whole input data. The rest
                  # of data will be used as training data. The format should be double.
                  # Accurate to two decimal places.
                  # Default value is 0.2.
              &quot;initialLearnRate&quot;: 3.14, # Specifies the initial learning rate for the line search learn rate
                  # strategy.
              &quot;itemColumn&quot;: &quot;A String&quot;, # Item column specified for matrix factorization models.
              &quot;inputLabelColumns&quot;: [ # Name of input label columns in training data.
                &quot;A String&quot;,
              ],
              &quot;warmStart&quot;: True or False, # Whether to train a model from the last checkpoint.
              &quot;learnRateStrategy&quot;: &quot;A String&quot;, # The strategy to determine learn rate for the current iteration.
              &quot;numFactors&quot;: &quot;A String&quot;, # Num factors specified for matrix factorization models.
              &quot;lossType&quot;: &quot;A String&quot;, # Type of loss function used during training run.
              &quot;hiddenUnits&quot;: [ # Hidden units for dnn models.
                &quot;A String&quot;,
              ],
              &quot;l1Regularization&quot;: 3.14, # L1 regularization coefficient.
              &quot;kmeansInitializationMethod&quot;: &quot;A String&quot;, # The method used to initialize the centroids for kmeans algorithm.
              &quot;distanceType&quot;: &quot;A String&quot;, # Distance type for clustering models.
              &quot;walsAlpha&quot;: 3.14, # Hyperparameter for matrix factoration when implicit feedback type is
                  # specified.
              &quot;feedbackType&quot;: &quot;A String&quot;, # Feedback type that specifies which algorithm to run for matrix
                  # factorization.
              &quot;optimizationStrategy&quot;: &quot;A String&quot;, # Optimization strategy for training linear regression models.
              &quot;dataSplitColumn&quot;: &quot;A String&quot;, # The column to split data with. This column won&#x27;t be used as a
                  # feature.
                  # 1. When data_split_method is CUSTOM, the corresponding column should
                  # be boolean. The rows with true value tag are eval data, and the false
                  # are training data.
                  # 2. When data_split_method is SEQ, the first DATA_SPLIT_EVAL_FRACTION
                  # rows (from smallest to largest) in the corresponding column are used
                  # as training data, and the rest are eval data. It respects the order
                  # in Orderable data types:
                  # https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#data-type-properties
              &quot;maxIterations&quot;: &quot;A String&quot;, # The maximum number of iterations in training. Used only for iterative
                  # training algorithms.
              &quot;userColumn&quot;: &quot;A String&quot;, # User column specified for matrix factorization models.
              &quot;maxTreeDepth&quot;: &quot;A String&quot;, # Maximum depth of a tree for boosted tree models.
              &quot;preserveInputStructs&quot;: True or False, # Whether to preserve the input structs in output feature names.
                  # Suppose there is a struct A with field b.
                  # When false (default), the output feature name is A_b.
                  # When true, the output feature name is A.b.
              &quot;l2Regularization&quot;: 3.14, # L2 regularization coefficient.
              &quot;modelUri&quot;: &quot;A String&quot;, # [Beta] Google Cloud Storage URI from which the model was imported. Only
                  # applicable for imported models.
              &quot;batchSize&quot;: &quot;A String&quot;, # Batch size for dnn models.
              &quot;kmeansInitializationColumn&quot;: &quot;A String&quot;, # The column used to provide the initial centroids for kmeans algorithm
                  # when kmeans_initialization_method is CUSTOM.
              &quot;minRelativeProgress&quot;: 3.14, # When early_stop is true, stops training when accuracy improvement is
                  # less than &#x27;min_relative_progress&#x27;. Used only for iterative training
                  # algorithms.
              &quot;numClusters&quot;: &quot;A String&quot;, # Number of clusters for clustering models.
              &quot;dataSplitMethod&quot;: &quot;A String&quot;, # The data split type for training and evaluation, e.g. RANDOM.
              &quot;minSplitLoss&quot;: 3.14, # Minimum split loss for boosted tree models.
            },
            &quot;dataSplitResult&quot;: { # Data split result. This contains references to the training and evaluation # Data split result of the training run. Only set when the input data is
                # actually split.
                # data tables that were used to train the model.
              &quot;trainingTable&quot;: { # Table reference of the training data after split.
                &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
                &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
                &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
              },
              &quot;evaluationTable&quot;: { # Table reference of the evaluation data after split.
                &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
                &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
                &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
              },
            },
          },
        ],
        &quot;modelReference&quot;: { # Required. Unique identifier for this model.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
          &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        },
        &quot;description&quot;: &quot;A String&quot;, # Optional. A user-friendly description of this model.
        &quot;etag&quot;: &quot;A String&quot;, # Output only. A hash of this resource.
        &quot;creationTime&quot;: &quot;A String&quot;, # Output only. The time when this model was created, in millisecs since the epoch.
        &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys). This shows the
            # encryption configuration of the model data while stored in BigQuery
            # storage. This field can be used with PatchModel to update encryption key
            # for an already encrypted model.
          &quot;kmsKeyName&quot;: &quot;A String&quot;, # [Optional] Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key.
        },
        &quot;location&quot;: &quot;A String&quot;, # Output only. The geographic location where the model resides. This value
            # is inherited from the dataset.
        &quot;friendlyName&quot;: &quot;A String&quot;, # Optional. A descriptive name for this model.
        &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Output only. The time when this model was last modified, in millisecs since the epoch.
        &quot;labels&quot;: { # The labels associated with this model. You can use these to organize
            # and group your models. Label keys and values can be no longer
            # than 63 characters, can only contain lowercase letters, numeric
            # characters, underscores and dashes. International characters are allowed.
            # Label values are optional. Label keys must start with a letter and each
            # label in the list must have a different key.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to request the next page of results.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(projectId, datasetId, modelId, body=None)</code>
  <pre>Patch specific fields in the specified model.

Args:
  projectId: string, Required. Project ID of the model to patch. (required)
  datasetId: string, Required. Dataset ID of the model to patch. (required)
  modelId: string, Required. Model ID of the model to patch. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;modelType&quot;: &quot;A String&quot;, # Output only. Type of the model resource.
  &quot;labelColumns&quot;: [ # Output only. Label columns that were used to train this model.
      # The output of the model will have a &quot;predicted_&quot; prefix to these columns.
    { # A field or a column.
      &quot;type&quot;: { # The type of a variable, e.g., a function argument. # Optional. The type of this parameter. Absent if not explicitly
          # specified (e.g., CREATE FUNCTION statement can omit the return type;
          # in this case the output parameter does not have this &quot;type&quot; field).
          # Examples:
          # INT64: {type_kind=&quot;INT64&quot;}
          # ARRAY&lt;STRING&gt;: {type_kind=&quot;ARRAY&quot;, array_element_type=&quot;STRING&quot;}
          # STRUCT&lt;x STRING, y ARRAY&lt;DATE&gt;&gt;:
          #   {type_kind=&quot;STRUCT&quot;,
          #    struct_type={fields=[
          #      {name=&quot;x&quot;, type={type_kind=&quot;STRING&quot;}},
          #      {name=&quot;y&quot;, type={type_kind=&quot;ARRAY&quot;, array_element_type=&quot;DATE&quot;}}
          #    ]}}
        &quot;typeKind&quot;: &quot;A String&quot;, # Required. The top level type of this field.
            # Can be any standard SQL data type (e.g., &quot;INT64&quot;, &quot;DATE&quot;, &quot;ARRAY&quot;).
        &quot;structType&quot;: { # The fields of this struct, in order, if type_kind = &quot;STRUCT&quot;.
          &quot;fields&quot;: [
            # Object with schema name: StandardSqlField
          ],
        },
        &quot;arrayElementType&quot;: # Object with schema name: StandardSqlDataType # The type of the array&#x27;s elements, if type_kind = &quot;ARRAY&quot;.
      },
      &quot;name&quot;: &quot;A String&quot;, # Optional. The name of this field. Can be absent for struct fields.
    },
  ],
  &quot;featureColumns&quot;: [ # Output only. Input feature columns that were used to train this model.
    { # A field or a column.
      &quot;type&quot;: { # The type of a variable, e.g., a function argument. # Optional. The type of this parameter. Absent if not explicitly
          # specified (e.g., CREATE FUNCTION statement can omit the return type;
          # in this case the output parameter does not have this &quot;type&quot; field).
          # Examples:
          # INT64: {type_kind=&quot;INT64&quot;}
          # ARRAY&lt;STRING&gt;: {type_kind=&quot;ARRAY&quot;, array_element_type=&quot;STRING&quot;}
          # STRUCT&lt;x STRING, y ARRAY&lt;DATE&gt;&gt;:
          #   {type_kind=&quot;STRUCT&quot;,
          #    struct_type={fields=[
          #      {name=&quot;x&quot;, type={type_kind=&quot;STRING&quot;}},
          #      {name=&quot;y&quot;, type={type_kind=&quot;ARRAY&quot;, array_element_type=&quot;DATE&quot;}}
          #    ]}}
        &quot;typeKind&quot;: &quot;A String&quot;, # Required. The top level type of this field.
            # Can be any standard SQL data type (e.g., &quot;INT64&quot;, &quot;DATE&quot;, &quot;ARRAY&quot;).
        &quot;structType&quot;: { # The fields of this struct, in order, if type_kind = &quot;STRUCT&quot;.
          &quot;fields&quot;: [
            # Object with schema name: StandardSqlField
          ],
        },
        &quot;arrayElementType&quot;: # Object with schema name: StandardSqlDataType # The type of the array&#x27;s elements, if type_kind = &quot;ARRAY&quot;.
      },
      &quot;name&quot;: &quot;A String&quot;, # Optional. The name of this field. Can be absent for struct fields.
    },
  ],
  &quot;expirationTime&quot;: &quot;A String&quot;, # Optional. The time when this model expires, in milliseconds since the epoch.
      # If not present, the model will persist indefinitely. Expired models
      # will be deleted and their storage reclaimed.  The defaultTableExpirationMs
      # property of the encapsulating dataset can be used to set a default
      # expirationTime on newly created models.
  &quot;trainingRuns&quot;: [ # Output only. Information for all training runs in increasing order of start_time.
    { # Information about a single training query run for the model.
      &quot;startTime&quot;: &quot;A String&quot;, # The start time of this training run.
      &quot;results&quot;: [ # Output of each iteration run, results.size() &lt;= max_iterations.
        { # Information about a single iteration of the training run.
          &quot;trainingLoss&quot;: 3.14, # Loss computed on the training data at the end of iteration.
          &quot;evalLoss&quot;: 3.14, # Loss computed on the eval data at the end of iteration.
          &quot;index&quot;: 42, # Index of the iteration, 0 based.
          &quot;learnRate&quot;: 3.14, # Learn rate used for this iteration.
          &quot;durationMs&quot;: &quot;A String&quot;, # Time taken to run the iteration in milliseconds.
          &quot;arimaResult&quot;: { # (Auto-)arima fitting result. Wrap everything in ArimaResult for easier
              # refactoring if we want to use model-specific iteration results.
            &quot;arimaModelInfo&quot;: [ # This message is repeated because there are multiple arima models
                # fitted in auto-arima. For non-auto-arima model, its size is one.
              { # Arima model information.
                &quot;arimaCoefficients&quot;: { # Arima coefficients. # Arima coefficients.
                  &quot;autoRegressiveCoefficients&quot;: [ # Auto-regressive coefficients, an array of double.
                    3.14,
                  ],
                  &quot;interceptCoefficient&quot;: 3.14, # Intercept coefficient, just a double not an array.
                  &quot;movingAverageCoefficients&quot;: [ # Moving-average coefficients, an array of double.
                    3.14,
                  ],
                },
                &quot;hasDrift&quot;: True or False, # Whether Arima model fitted with drift or not. It is always false
                    # when d is not 1.
                &quot;seasonalPeriods&quot;: [ # Seasonal periods. Repeated because multiple periods are supported
                    # for one time series.
                  &quot;A String&quot;,
                ],
                &quot;nonSeasonalOrder&quot;: { # Arima order, can be used for both non-seasonal and seasonal parts. # Non-seasonal order.
                  &quot;d&quot;: &quot;A String&quot;, # Order of the differencing part.
                  &quot;p&quot;: &quot;A String&quot;, # Order of the autoregressive part.
                  &quot;q&quot;: &quot;A String&quot;, # Order of the moving-average part.
                },
                &quot;arimaFittingMetrics&quot;: { # ARIMA model fitting metrics. # Arima fitting metrics.
                  &quot;aic&quot;: 3.14, # AIC.
                  &quot;logLikelihood&quot;: 3.14, # Log-likelihood.
                  &quot;variance&quot;: 3.14, # Variance.
                },
                &quot;timeSeriesId&quot;: &quot;A String&quot;, # The id to indicate different time series.
              },
            ],
            &quot;seasonalPeriods&quot;: [ # Seasonal periods. Repeated because multiple periods are supported for
                # one time series.
              &quot;A String&quot;,
            ],
          },
          &quot;clusterInfos&quot;: [ # Information about top clusters for clustering models.
            { # Information about a single cluster for clustering model.
              &quot;clusterRadius&quot;: 3.14, # Cluster radius, the average distance from centroid
                  # to each point assigned to the cluster.
              &quot;clusterSize&quot;: &quot;A String&quot;, # Cluster size, the total number of points assigned to the cluster.
              &quot;centroidId&quot;: &quot;A String&quot;, # Centroid id.
            },
          ],
        },
      ],
      &quot;evaluationMetrics&quot;: { # Evaluation metrics of a model. These are either computed on all training # The evaluation metrics over training/eval data that were computed at the
          # end of training.
          # data or just the eval data based on whether eval data was used during
          # training. These are not present for imported models.
        &quot;rankingMetrics&quot;: { # Evaluation metrics used by weighted-ALS models specified by # [Alpha] Populated for implicit feedback type matrix factorization
            # models.
            # feedback_type=implicit.
          &quot;normalizedDiscountedCumulativeGain&quot;: 3.14, # A metric to determine the goodness of a ranking calculated from the
              # predicted confidence by comparing it to an ideal rank measured by the
              # original ratings.
          &quot;averageRank&quot;: 3.14, # Determines the goodness of a ranking by computing the percentile rank
              # from the predicted confidence and dividing it by the original rank.
          &quot;meanSquaredError&quot;: 3.14, # Similar to the mean squared error computed in regression and explicit
              # recommendation models except instead of computing the rating directly,
              # the output from evaluate is computed against a preference which is 1 or 0
              # depending on if the rating exists or not.
          &quot;meanAveragePrecision&quot;: 3.14, # Calculates a precision per user for all the items by ranking them and
              # then averages all the precisions across all the users.
        },
        &quot;multiClassClassificationMetrics&quot;: { # Evaluation metrics for multi-class classification/classifier models. # Populated for multi-class classification/classifier models.
          &quot;aggregateClassificationMetrics&quot;: { # Aggregate metrics for classification/classifier models. For multi-class # Aggregate classification metrics.
              # models, the metrics are either macro-averaged or micro-averaged. When
              # macro-averaged, the metrics are calculated for each label and then an
              # unweighted average is taken of those values. When micro-averaged, the
              # metric is calculated globally by counting the total number of correctly
              # predicted rows.
            &quot;threshold&quot;: 3.14, # Threshold at which the metrics are computed. For binary
                # classification models this is the positive class threshold.
                # For multi-class classfication models this is the confidence
                # threshold.
            &quot;rocAuc&quot;: 3.14, # Area Under a ROC Curve. For multiclass this is a macro-averaged
                # metric.
            &quot;logLoss&quot;: 3.14, # Logarithmic Loss. For multiclass this is a macro-averaged metric.
            &quot;f1Score&quot;: 3.14, # The F1 score is an average of recall and precision. For multiclass
                # this is a macro-averaged metric.
            &quot;precision&quot;: 3.14, # Precision is the fraction of actual positive predictions that had
                # positive actual labels. For multiclass this is a macro-averaged
                # metric treating each class as a binary classifier.
            &quot;accuracy&quot;: 3.14, # Accuracy is the fraction of predictions given the correct label. For
                # multiclass this is a micro-averaged metric.
            &quot;recall&quot;: 3.14, # Recall is the fraction of actual positive labels that were given a
                # positive prediction. For multiclass this is a macro-averaged metric.
          },
          &quot;confusionMatrixList&quot;: [ # Confusion matrix at different thresholds.
            { # Confusion matrix for multi-class classification models.
              &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold used when computing the entries of the
                  # confusion matrix.
              &quot;rows&quot;: [ # One row per actual label.
                { # A single row in the confusion matrix.
                  &quot;entries&quot;: [ # Info describing predicted label distribution.
                    { # A single entry in the confusion matrix.
                      &quot;itemCount&quot;: &quot;A String&quot;, # Number of items being predicted as this label.
                      &quot;predictedLabel&quot;: &quot;A String&quot;, # The predicted label. For confidence_threshold &gt; 0, we will
                          # also add an entry indicating the number of items under the
                          # confidence threshold.
                    },
                  ],
                  &quot;actualLabel&quot;: &quot;A String&quot;, # The original label of this row.
                },
              ],
            },
          ],
        },
        &quot;clusteringMetrics&quot;: { # Evaluation metrics for clustering models. # Populated for clustering models.
          &quot;meanSquaredDistance&quot;: 3.14, # Mean of squared distances between each sample to its cluster centroid.
          &quot;daviesBouldinIndex&quot;: 3.14, # Davies-Bouldin index.
          &quot;clusters&quot;: [ # [Beta] Information for all clusters.
            { # Message containing the information about one cluster.
              &quot;centroidId&quot;: &quot;A String&quot;, # Centroid id.
              &quot;count&quot;: &quot;A String&quot;, # Count of training data rows that were assigned to this cluster.
              &quot;featureValues&quot;: [ # Values of highly variant features for this cluster.
                { # Representative value of a single feature within the cluster.
                  &quot;numericalValue&quot;: 3.14, # The numerical feature value. This is the centroid value for this
                      # feature.
                  &quot;featureColumn&quot;: &quot;A String&quot;, # The feature column name.
                  &quot;categoricalValue&quot;: { # Representative value of a categorical feature. # The categorical feature value.
                    &quot;categoryCounts&quot;: [ # Counts of all categories for the categorical feature. If there are
                        # more than ten categories, we return top ten (by count) and return
                        # one more CategoryCount with category &quot;_OTHER_&quot; and count as
                        # aggregate counts of remaining categories.
                      { # Represents the count of a single category within the cluster.
                        &quot;category&quot;: &quot;A String&quot;, # The name of category.
                        &quot;count&quot;: &quot;A String&quot;, # The count of training samples matching the category within the
                            # cluster.
                      },
                    ],
                  },
                },
              ],
            },
          ],
        },
        &quot;binaryClassificationMetrics&quot;: { # Evaluation metrics for binary classification/classifier models. # Populated for binary classification/classifier models.
          &quot;binaryConfusionMatrixList&quot;: [ # Binary confusion matrix at multiple thresholds.
            { # Confusion matrix for binary classification models.
              &quot;recall&quot;: 3.14, # The fraction of actual positive labels that were given a positive
                  # prediction.
              &quot;falseNegatives&quot;: &quot;A String&quot;, # Number of false samples predicted as false.
              &quot;falsePositives&quot;: &quot;A String&quot;, # Number of false samples predicted as true.
              &quot;trueNegatives&quot;: &quot;A String&quot;, # Number of true samples predicted as false.
              &quot;f1Score&quot;: 3.14, # The equally weighted average of recall and precision.
              &quot;precision&quot;: 3.14, # The fraction of actual positive predictions that had positive actual
                  # labels.
              &quot;positiveClassThreshold&quot;: 3.14, # Threshold value used when computing each of the following metric.
              &quot;accuracy&quot;: 3.14, # The fraction of predictions given the correct label.
              &quot;truePositives&quot;: &quot;A String&quot;, # Number of true samples predicted as true.
            },
          ],
          &quot;aggregateClassificationMetrics&quot;: { # Aggregate metrics for classification/classifier models. For multi-class # Aggregate classification metrics.
              # models, the metrics are either macro-averaged or micro-averaged. When
              # macro-averaged, the metrics are calculated for each label and then an
              # unweighted average is taken of those values. When micro-averaged, the
              # metric is calculated globally by counting the total number of correctly
              # predicted rows.
            &quot;threshold&quot;: 3.14, # Threshold at which the metrics are computed. For binary
                # classification models this is the positive class threshold.
                # For multi-class classfication models this is the confidence
                # threshold.
            &quot;rocAuc&quot;: 3.14, # Area Under a ROC Curve. For multiclass this is a macro-averaged
                # metric.
            &quot;logLoss&quot;: 3.14, # Logarithmic Loss. For multiclass this is a macro-averaged metric.
            &quot;f1Score&quot;: 3.14, # The F1 score is an average of recall and precision. For multiclass
                # this is a macro-averaged metric.
            &quot;precision&quot;: 3.14, # Precision is the fraction of actual positive predictions that had
                # positive actual labels. For multiclass this is a macro-averaged
                # metric treating each class as a binary classifier.
            &quot;accuracy&quot;: 3.14, # Accuracy is the fraction of predictions given the correct label. For
                # multiclass this is a micro-averaged metric.
            &quot;recall&quot;: 3.14, # Recall is the fraction of actual positive labels that were given a
                # positive prediction. For multiclass this is a macro-averaged metric.
          },
          &quot;negativeLabel&quot;: &quot;A String&quot;, # Label representing the negative class.
          &quot;positiveLabel&quot;: &quot;A String&quot;, # Label representing the positive class.
        },
        &quot;regressionMetrics&quot;: { # Evaluation metrics for regression and explicit feedback type matrix # Populated for regression models and explicit feedback type matrix
            # factorization models.
            # factorization models.
          &quot;meanSquaredError&quot;: 3.14, # Mean squared error.
          &quot;rSquared&quot;: 3.14, # R^2 score.
          &quot;medianAbsoluteError&quot;: 3.14, # Median absolute error.
          &quot;meanSquaredLogError&quot;: 3.14, # Mean squared log error.
          &quot;meanAbsoluteError&quot;: 3.14, # Mean absolute error.
        },
      },
      &quot;trainingOptions&quot;: { # Options that were used for this training run, includes
          # user specified and default options that were used.
        &quot;dropout&quot;: 3.14, # Dropout probability for dnn models.
        &quot;learnRate&quot;: 3.14, # Learning rate in training. Used only for iterative training algorithms.
        &quot;labelClassWeights&quot;: { # Weights associated with each label class, for rebalancing the
            # training data. Only applicable for classification models.
          &quot;a_key&quot;: 3.14,
        },
        &quot;subsample&quot;: 3.14, # Subsample fraction of the training data to grow tree to prevent
            # overfitting for boosted tree models.
        &quot;earlyStop&quot;: True or False, # Whether to stop early when the loss doesn&#x27;t improve significantly
            # any more (compared to min_relative_progress). Used only for iterative
            # training algorithms.
        &quot;dataSplitEvalFraction&quot;: 3.14, # The fraction of evaluation data over the whole input data. The rest
            # of data will be used as training data. The format should be double.
            # Accurate to two decimal places.
            # Default value is 0.2.
        &quot;initialLearnRate&quot;: 3.14, # Specifies the initial learning rate for the line search learn rate
            # strategy.
        &quot;itemColumn&quot;: &quot;A String&quot;, # Item column specified for matrix factorization models.
        &quot;inputLabelColumns&quot;: [ # Name of input label columns in training data.
          &quot;A String&quot;,
        ],
        &quot;warmStart&quot;: True or False, # Whether to train a model from the last checkpoint.
        &quot;learnRateStrategy&quot;: &quot;A String&quot;, # The strategy to determine learn rate for the current iteration.
        &quot;numFactors&quot;: &quot;A String&quot;, # Num factors specified for matrix factorization models.
        &quot;lossType&quot;: &quot;A String&quot;, # Type of loss function used during training run.
        &quot;hiddenUnits&quot;: [ # Hidden units for dnn models.
          &quot;A String&quot;,
        ],
        &quot;l1Regularization&quot;: 3.14, # L1 regularization coefficient.
        &quot;kmeansInitializationMethod&quot;: &quot;A String&quot;, # The method used to initialize the centroids for kmeans algorithm.
        &quot;distanceType&quot;: &quot;A String&quot;, # Distance type for clustering models.
        &quot;walsAlpha&quot;: 3.14, # Hyperparameter for matrix factoration when implicit feedback type is
            # specified.
        &quot;feedbackType&quot;: &quot;A String&quot;, # Feedback type that specifies which algorithm to run for matrix
            # factorization.
        &quot;optimizationStrategy&quot;: &quot;A String&quot;, # Optimization strategy for training linear regression models.
        &quot;dataSplitColumn&quot;: &quot;A String&quot;, # The column to split data with. This column won&#x27;t be used as a
            # feature.
            # 1. When data_split_method is CUSTOM, the corresponding column should
            # be boolean. The rows with true value tag are eval data, and the false
            # are training data.
            # 2. When data_split_method is SEQ, the first DATA_SPLIT_EVAL_FRACTION
            # rows (from smallest to largest) in the corresponding column are used
            # as training data, and the rest are eval data. It respects the order
            # in Orderable data types:
            # https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#data-type-properties
        &quot;maxIterations&quot;: &quot;A String&quot;, # The maximum number of iterations in training. Used only for iterative
            # training algorithms.
        &quot;userColumn&quot;: &quot;A String&quot;, # User column specified for matrix factorization models.
        &quot;maxTreeDepth&quot;: &quot;A String&quot;, # Maximum depth of a tree for boosted tree models.
        &quot;preserveInputStructs&quot;: True or False, # Whether to preserve the input structs in output feature names.
            # Suppose there is a struct A with field b.
            # When false (default), the output feature name is A_b.
            # When true, the output feature name is A.b.
        &quot;l2Regularization&quot;: 3.14, # L2 regularization coefficient.
        &quot;modelUri&quot;: &quot;A String&quot;, # [Beta] Google Cloud Storage URI from which the model was imported. Only
            # applicable for imported models.
        &quot;batchSize&quot;: &quot;A String&quot;, # Batch size for dnn models.
        &quot;kmeansInitializationColumn&quot;: &quot;A String&quot;, # The column used to provide the initial centroids for kmeans algorithm
            # when kmeans_initialization_method is CUSTOM.
        &quot;minRelativeProgress&quot;: 3.14, # When early_stop is true, stops training when accuracy improvement is
            # less than &#x27;min_relative_progress&#x27;. Used only for iterative training
            # algorithms.
        &quot;numClusters&quot;: &quot;A String&quot;, # Number of clusters for clustering models.
        &quot;dataSplitMethod&quot;: &quot;A String&quot;, # The data split type for training and evaluation, e.g. RANDOM.
        &quot;minSplitLoss&quot;: 3.14, # Minimum split loss for boosted tree models.
      },
      &quot;dataSplitResult&quot;: { # Data split result. This contains references to the training and evaluation # Data split result of the training run. Only set when the input data is
          # actually split.
          # data tables that were used to train the model.
        &quot;trainingTable&quot;: { # Table reference of the training data after split.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;evaluationTable&quot;: { # Table reference of the evaluation data after split.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
      },
    },
  ],
  &quot;modelReference&quot;: { # Required. Unique identifier for this model.
    &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
    &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
    &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
  },
  &quot;description&quot;: &quot;A String&quot;, # Optional. A user-friendly description of this model.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. A hash of this resource.
  &quot;creationTime&quot;: &quot;A String&quot;, # Output only. The time when this model was created, in millisecs since the epoch.
  &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys). This shows the
      # encryption configuration of the model data while stored in BigQuery
      # storage. This field can be used with PatchModel to update encryption key
      # for an already encrypted model.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # [Optional] Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key.
  },
  &quot;location&quot;: &quot;A String&quot;, # Output only. The geographic location where the model resides. This value
      # is inherited from the dataset.
  &quot;friendlyName&quot;: &quot;A String&quot;, # Optional. A descriptive name for this model.
  &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Output only. The time when this model was last modified, in millisecs since the epoch.
  &quot;labels&quot;: { # The labels associated with this model. You can use these to organize
      # and group your models. Label keys and values can be no longer
      # than 63 characters, can only contain lowercase letters, numeric
      # characters, underscores and dashes. International characters are allowed.
      # Label values are optional. Label keys must start with a letter and each
      # label in the list must have a different key.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
}


Returns:
  An object of the form:

    {
    &quot;modelType&quot;: &quot;A String&quot;, # Output only. Type of the model resource.
    &quot;labelColumns&quot;: [ # Output only. Label columns that were used to train this model.
        # The output of the model will have a &quot;predicted_&quot; prefix to these columns.
      { # A field or a column.
        &quot;type&quot;: { # The type of a variable, e.g., a function argument. # Optional. The type of this parameter. Absent if not explicitly
            # specified (e.g., CREATE FUNCTION statement can omit the return type;
            # in this case the output parameter does not have this &quot;type&quot; field).
            # Examples:
            # INT64: {type_kind=&quot;INT64&quot;}
            # ARRAY&lt;STRING&gt;: {type_kind=&quot;ARRAY&quot;, array_element_type=&quot;STRING&quot;}
            # STRUCT&lt;x STRING, y ARRAY&lt;DATE&gt;&gt;:
            #   {type_kind=&quot;STRUCT&quot;,
            #    struct_type={fields=[
            #      {name=&quot;x&quot;, type={type_kind=&quot;STRING&quot;}},
            #      {name=&quot;y&quot;, type={type_kind=&quot;ARRAY&quot;, array_element_type=&quot;DATE&quot;}}
            #    ]}}
          &quot;typeKind&quot;: &quot;A String&quot;, # Required. The top level type of this field.
              # Can be any standard SQL data type (e.g., &quot;INT64&quot;, &quot;DATE&quot;, &quot;ARRAY&quot;).
          &quot;structType&quot;: { # The fields of this struct, in order, if type_kind = &quot;STRUCT&quot;.
            &quot;fields&quot;: [
              # Object with schema name: StandardSqlField
            ],
          },
          &quot;arrayElementType&quot;: # Object with schema name: StandardSqlDataType # The type of the array&#x27;s elements, if type_kind = &quot;ARRAY&quot;.
        },
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of this field. Can be absent for struct fields.
      },
    ],
    &quot;featureColumns&quot;: [ # Output only. Input feature columns that were used to train this model.
      { # A field or a column.
        &quot;type&quot;: { # The type of a variable, e.g., a function argument. # Optional. The type of this parameter. Absent if not explicitly
            # specified (e.g., CREATE FUNCTION statement can omit the return type;
            # in this case the output parameter does not have this &quot;type&quot; field).
            # Examples:
            # INT64: {type_kind=&quot;INT64&quot;}
            # ARRAY&lt;STRING&gt;: {type_kind=&quot;ARRAY&quot;, array_element_type=&quot;STRING&quot;}
            # STRUCT&lt;x STRING, y ARRAY&lt;DATE&gt;&gt;:
            #   {type_kind=&quot;STRUCT&quot;,
            #    struct_type={fields=[
            #      {name=&quot;x&quot;, type={type_kind=&quot;STRING&quot;}},
            #      {name=&quot;y&quot;, type={type_kind=&quot;ARRAY&quot;, array_element_type=&quot;DATE&quot;}}
            #    ]}}
          &quot;typeKind&quot;: &quot;A String&quot;, # Required. The top level type of this field.
              # Can be any standard SQL data type (e.g., &quot;INT64&quot;, &quot;DATE&quot;, &quot;ARRAY&quot;).
          &quot;structType&quot;: { # The fields of this struct, in order, if type_kind = &quot;STRUCT&quot;.
            &quot;fields&quot;: [
              # Object with schema name: StandardSqlField
            ],
          },
          &quot;arrayElementType&quot;: # Object with schema name: StandardSqlDataType # The type of the array&#x27;s elements, if type_kind = &quot;ARRAY&quot;.
        },
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of this field. Can be absent for struct fields.
      },
    ],
    &quot;expirationTime&quot;: &quot;A String&quot;, # Optional. The time when this model expires, in milliseconds since the epoch.
        # If not present, the model will persist indefinitely. Expired models
        # will be deleted and their storage reclaimed.  The defaultTableExpirationMs
        # property of the encapsulating dataset can be used to set a default
        # expirationTime on newly created models.
    &quot;trainingRuns&quot;: [ # Output only. Information for all training runs in increasing order of start_time.
      { # Information about a single training query run for the model.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time of this training run.
        &quot;results&quot;: [ # Output of each iteration run, results.size() &lt;= max_iterations.
          { # Information about a single iteration of the training run.
            &quot;trainingLoss&quot;: 3.14, # Loss computed on the training data at the end of iteration.
            &quot;evalLoss&quot;: 3.14, # Loss computed on the eval data at the end of iteration.
            &quot;index&quot;: 42, # Index of the iteration, 0 based.
            &quot;learnRate&quot;: 3.14, # Learn rate used for this iteration.
            &quot;durationMs&quot;: &quot;A String&quot;, # Time taken to run the iteration in milliseconds.
            &quot;arimaResult&quot;: { # (Auto-)arima fitting result. Wrap everything in ArimaResult for easier
                # refactoring if we want to use model-specific iteration results.
              &quot;arimaModelInfo&quot;: [ # This message is repeated because there are multiple arima models
                  # fitted in auto-arima. For non-auto-arima model, its size is one.
                { # Arima model information.
                  &quot;arimaCoefficients&quot;: { # Arima coefficients. # Arima coefficients.
                    &quot;autoRegressiveCoefficients&quot;: [ # Auto-regressive coefficients, an array of double.
                      3.14,
                    ],
                    &quot;interceptCoefficient&quot;: 3.14, # Intercept coefficient, just a double not an array.
                    &quot;movingAverageCoefficients&quot;: [ # Moving-average coefficients, an array of double.
                      3.14,
                    ],
                  },
                  &quot;hasDrift&quot;: True or False, # Whether Arima model fitted with drift or not. It is always false
                      # when d is not 1.
                  &quot;seasonalPeriods&quot;: [ # Seasonal periods. Repeated because multiple periods are supported
                      # for one time series.
                    &quot;A String&quot;,
                  ],
                  &quot;nonSeasonalOrder&quot;: { # Arima order, can be used for both non-seasonal and seasonal parts. # Non-seasonal order.
                    &quot;d&quot;: &quot;A String&quot;, # Order of the differencing part.
                    &quot;p&quot;: &quot;A String&quot;, # Order of the autoregressive part.
                    &quot;q&quot;: &quot;A String&quot;, # Order of the moving-average part.
                  },
                  &quot;arimaFittingMetrics&quot;: { # ARIMA model fitting metrics. # Arima fitting metrics.
                    &quot;aic&quot;: 3.14, # AIC.
                    &quot;logLikelihood&quot;: 3.14, # Log-likelihood.
                    &quot;variance&quot;: 3.14, # Variance.
                  },
                  &quot;timeSeriesId&quot;: &quot;A String&quot;, # The id to indicate different time series.
                },
              ],
              &quot;seasonalPeriods&quot;: [ # Seasonal periods. Repeated because multiple periods are supported for
                  # one time series.
                &quot;A String&quot;,
              ],
            },
            &quot;clusterInfos&quot;: [ # Information about top clusters for clustering models.
              { # Information about a single cluster for clustering model.
                &quot;clusterRadius&quot;: 3.14, # Cluster radius, the average distance from centroid
                    # to each point assigned to the cluster.
                &quot;clusterSize&quot;: &quot;A String&quot;, # Cluster size, the total number of points assigned to the cluster.
                &quot;centroidId&quot;: &quot;A String&quot;, # Centroid id.
              },
            ],
          },
        ],
        &quot;evaluationMetrics&quot;: { # Evaluation metrics of a model. These are either computed on all training # The evaluation metrics over training/eval data that were computed at the
            # end of training.
            # data or just the eval data based on whether eval data was used during
            # training. These are not present for imported models.
          &quot;rankingMetrics&quot;: { # Evaluation metrics used by weighted-ALS models specified by # [Alpha] Populated for implicit feedback type matrix factorization
              # models.
              # feedback_type=implicit.
            &quot;normalizedDiscountedCumulativeGain&quot;: 3.14, # A metric to determine the goodness of a ranking calculated from the
                # predicted confidence by comparing it to an ideal rank measured by the
                # original ratings.
            &quot;averageRank&quot;: 3.14, # Determines the goodness of a ranking by computing the percentile rank
                # from the predicted confidence and dividing it by the original rank.
            &quot;meanSquaredError&quot;: 3.14, # Similar to the mean squared error computed in regression and explicit
                # recommendation models except instead of computing the rating directly,
                # the output from evaluate is computed against a preference which is 1 or 0
                # depending on if the rating exists or not.
            &quot;meanAveragePrecision&quot;: 3.14, # Calculates a precision per user for all the items by ranking them and
                # then averages all the precisions across all the users.
          },
          &quot;multiClassClassificationMetrics&quot;: { # Evaluation metrics for multi-class classification/classifier models. # Populated for multi-class classification/classifier models.
            &quot;aggregateClassificationMetrics&quot;: { # Aggregate metrics for classification/classifier models. For multi-class # Aggregate classification metrics.
                # models, the metrics are either macro-averaged or micro-averaged. When
                # macro-averaged, the metrics are calculated for each label and then an
                # unweighted average is taken of those values. When micro-averaged, the
                # metric is calculated globally by counting the total number of correctly
                # predicted rows.
              &quot;threshold&quot;: 3.14, # Threshold at which the metrics are computed. For binary
                  # classification models this is the positive class threshold.
                  # For multi-class classfication models this is the confidence
                  # threshold.
              &quot;rocAuc&quot;: 3.14, # Area Under a ROC Curve. For multiclass this is a macro-averaged
                  # metric.
              &quot;logLoss&quot;: 3.14, # Logarithmic Loss. For multiclass this is a macro-averaged metric.
              &quot;f1Score&quot;: 3.14, # The F1 score is an average of recall and precision. For multiclass
                  # this is a macro-averaged metric.
              &quot;precision&quot;: 3.14, # Precision is the fraction of actual positive predictions that had
                  # positive actual labels. For multiclass this is a macro-averaged
                  # metric treating each class as a binary classifier.
              &quot;accuracy&quot;: 3.14, # Accuracy is the fraction of predictions given the correct label. For
                  # multiclass this is a micro-averaged metric.
              &quot;recall&quot;: 3.14, # Recall is the fraction of actual positive labels that were given a
                  # positive prediction. For multiclass this is a macro-averaged metric.
            },
            &quot;confusionMatrixList&quot;: [ # Confusion matrix at different thresholds.
              { # Confusion matrix for multi-class classification models.
                &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold used when computing the entries of the
                    # confusion matrix.
                &quot;rows&quot;: [ # One row per actual label.
                  { # A single row in the confusion matrix.
                    &quot;entries&quot;: [ # Info describing predicted label distribution.
                      { # A single entry in the confusion matrix.
                        &quot;itemCount&quot;: &quot;A String&quot;, # Number of items being predicted as this label.
                        &quot;predictedLabel&quot;: &quot;A String&quot;, # The predicted label. For confidence_threshold &gt; 0, we will
                            # also add an entry indicating the number of items under the
                            # confidence threshold.
                      },
                    ],
                    &quot;actualLabel&quot;: &quot;A String&quot;, # The original label of this row.
                  },
                ],
              },
            ],
          },
          &quot;clusteringMetrics&quot;: { # Evaluation metrics for clustering models. # Populated for clustering models.
            &quot;meanSquaredDistance&quot;: 3.14, # Mean of squared distances between each sample to its cluster centroid.
            &quot;daviesBouldinIndex&quot;: 3.14, # Davies-Bouldin index.
            &quot;clusters&quot;: [ # [Beta] Information for all clusters.
              { # Message containing the information about one cluster.
                &quot;centroidId&quot;: &quot;A String&quot;, # Centroid id.
                &quot;count&quot;: &quot;A String&quot;, # Count of training data rows that were assigned to this cluster.
                &quot;featureValues&quot;: [ # Values of highly variant features for this cluster.
                  { # Representative value of a single feature within the cluster.
                    &quot;numericalValue&quot;: 3.14, # The numerical feature value. This is the centroid value for this
                        # feature.
                    &quot;featureColumn&quot;: &quot;A String&quot;, # The feature column name.
                    &quot;categoricalValue&quot;: { # Representative value of a categorical feature. # The categorical feature value.
                      &quot;categoryCounts&quot;: [ # Counts of all categories for the categorical feature. If there are
                          # more than ten categories, we return top ten (by count) and return
                          # one more CategoryCount with category &quot;_OTHER_&quot; and count as
                          # aggregate counts of remaining categories.
                        { # Represents the count of a single category within the cluster.
                          &quot;category&quot;: &quot;A String&quot;, # The name of category.
                          &quot;count&quot;: &quot;A String&quot;, # The count of training samples matching the category within the
                              # cluster.
                        },
                      ],
                    },
                  },
                ],
              },
            ],
          },
          &quot;binaryClassificationMetrics&quot;: { # Evaluation metrics for binary classification/classifier models. # Populated for binary classification/classifier models.
            &quot;binaryConfusionMatrixList&quot;: [ # Binary confusion matrix at multiple thresholds.
              { # Confusion matrix for binary classification models.
                &quot;recall&quot;: 3.14, # The fraction of actual positive labels that were given a positive
                    # prediction.
                &quot;falseNegatives&quot;: &quot;A String&quot;, # Number of false samples predicted as false.
                &quot;falsePositives&quot;: &quot;A String&quot;, # Number of false samples predicted as true.
                &quot;trueNegatives&quot;: &quot;A String&quot;, # Number of true samples predicted as false.
                &quot;f1Score&quot;: 3.14, # The equally weighted average of recall and precision.
                &quot;precision&quot;: 3.14, # The fraction of actual positive predictions that had positive actual
                    # labels.
                &quot;positiveClassThreshold&quot;: 3.14, # Threshold value used when computing each of the following metric.
                &quot;accuracy&quot;: 3.14, # The fraction of predictions given the correct label.
                &quot;truePositives&quot;: &quot;A String&quot;, # Number of true samples predicted as true.
              },
            ],
            &quot;aggregateClassificationMetrics&quot;: { # Aggregate metrics for classification/classifier models. For multi-class # Aggregate classification metrics.
                # models, the metrics are either macro-averaged or micro-averaged. When
                # macro-averaged, the metrics are calculated for each label and then an
                # unweighted average is taken of those values. When micro-averaged, the
                # metric is calculated globally by counting the total number of correctly
                # predicted rows.
              &quot;threshold&quot;: 3.14, # Threshold at which the metrics are computed. For binary
                  # classification models this is the positive class threshold.
                  # For multi-class classfication models this is the confidence
                  # threshold.
              &quot;rocAuc&quot;: 3.14, # Area Under a ROC Curve. For multiclass this is a macro-averaged
                  # metric.
              &quot;logLoss&quot;: 3.14, # Logarithmic Loss. For multiclass this is a macro-averaged metric.
              &quot;f1Score&quot;: 3.14, # The F1 score is an average of recall and precision. For multiclass
                  # this is a macro-averaged metric.
              &quot;precision&quot;: 3.14, # Precision is the fraction of actual positive predictions that had
                  # positive actual labels. For multiclass this is a macro-averaged
                  # metric treating each class as a binary classifier.
              &quot;accuracy&quot;: 3.14, # Accuracy is the fraction of predictions given the correct label. For
                  # multiclass this is a micro-averaged metric.
              &quot;recall&quot;: 3.14, # Recall is the fraction of actual positive labels that were given a
                  # positive prediction. For multiclass this is a macro-averaged metric.
            },
            &quot;negativeLabel&quot;: &quot;A String&quot;, # Label representing the negative class.
            &quot;positiveLabel&quot;: &quot;A String&quot;, # Label representing the positive class.
          },
          &quot;regressionMetrics&quot;: { # Evaluation metrics for regression and explicit feedback type matrix # Populated for regression models and explicit feedback type matrix
              # factorization models.
              # factorization models.
            &quot;meanSquaredError&quot;: 3.14, # Mean squared error.
            &quot;rSquared&quot;: 3.14, # R^2 score.
            &quot;medianAbsoluteError&quot;: 3.14, # Median absolute error.
            &quot;meanSquaredLogError&quot;: 3.14, # Mean squared log error.
            &quot;meanAbsoluteError&quot;: 3.14, # Mean absolute error.
          },
        },
        &quot;trainingOptions&quot;: { # Options that were used for this training run, includes
            # user specified and default options that were used.
          &quot;dropout&quot;: 3.14, # Dropout probability for dnn models.
          &quot;learnRate&quot;: 3.14, # Learning rate in training. Used only for iterative training algorithms.
          &quot;labelClassWeights&quot;: { # Weights associated with each label class, for rebalancing the
              # training data. Only applicable for classification models.
            &quot;a_key&quot;: 3.14,
          },
          &quot;subsample&quot;: 3.14, # Subsample fraction of the training data to grow tree to prevent
              # overfitting for boosted tree models.
          &quot;earlyStop&quot;: True or False, # Whether to stop early when the loss doesn&#x27;t improve significantly
              # any more (compared to min_relative_progress). Used only for iterative
              # training algorithms.
          &quot;dataSplitEvalFraction&quot;: 3.14, # The fraction of evaluation data over the whole input data. The rest
              # of data will be used as training data. The format should be double.
              # Accurate to two decimal places.
              # Default value is 0.2.
          &quot;initialLearnRate&quot;: 3.14, # Specifies the initial learning rate for the line search learn rate
              # strategy.
          &quot;itemColumn&quot;: &quot;A String&quot;, # Item column specified for matrix factorization models.
          &quot;inputLabelColumns&quot;: [ # Name of input label columns in training data.
            &quot;A String&quot;,
          ],
          &quot;warmStart&quot;: True or False, # Whether to train a model from the last checkpoint.
          &quot;learnRateStrategy&quot;: &quot;A String&quot;, # The strategy to determine learn rate for the current iteration.
          &quot;numFactors&quot;: &quot;A String&quot;, # Num factors specified for matrix factorization models.
          &quot;lossType&quot;: &quot;A String&quot;, # Type of loss function used during training run.
          &quot;hiddenUnits&quot;: [ # Hidden units for dnn models.
            &quot;A String&quot;,
          ],
          &quot;l1Regularization&quot;: 3.14, # L1 regularization coefficient.
          &quot;kmeansInitializationMethod&quot;: &quot;A String&quot;, # The method used to initialize the centroids for kmeans algorithm.
          &quot;distanceType&quot;: &quot;A String&quot;, # Distance type for clustering models.
          &quot;walsAlpha&quot;: 3.14, # Hyperparameter for matrix factoration when implicit feedback type is
              # specified.
          &quot;feedbackType&quot;: &quot;A String&quot;, # Feedback type that specifies which algorithm to run for matrix
              # factorization.
          &quot;optimizationStrategy&quot;: &quot;A String&quot;, # Optimization strategy for training linear regression models.
          &quot;dataSplitColumn&quot;: &quot;A String&quot;, # The column to split data with. This column won&#x27;t be used as a
              # feature.
              # 1. When data_split_method is CUSTOM, the corresponding column should
              # be boolean. The rows with true value tag are eval data, and the false
              # are training data.
              # 2. When data_split_method is SEQ, the first DATA_SPLIT_EVAL_FRACTION
              # rows (from smallest to largest) in the corresponding column are used
              # as training data, and the rest are eval data. It respects the order
              # in Orderable data types:
              # https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#data-type-properties
          &quot;maxIterations&quot;: &quot;A String&quot;, # The maximum number of iterations in training. Used only for iterative
              # training algorithms.
          &quot;userColumn&quot;: &quot;A String&quot;, # User column specified for matrix factorization models.
          &quot;maxTreeDepth&quot;: &quot;A String&quot;, # Maximum depth of a tree for boosted tree models.
          &quot;preserveInputStructs&quot;: True or False, # Whether to preserve the input structs in output feature names.
              # Suppose there is a struct A with field b.
              # When false (default), the output feature name is A_b.
              # When true, the output feature name is A.b.
          &quot;l2Regularization&quot;: 3.14, # L2 regularization coefficient.
          &quot;modelUri&quot;: &quot;A String&quot;, # [Beta] Google Cloud Storage URI from which the model was imported. Only
              # applicable for imported models.
          &quot;batchSize&quot;: &quot;A String&quot;, # Batch size for dnn models.
          &quot;kmeansInitializationColumn&quot;: &quot;A String&quot;, # The column used to provide the initial centroids for kmeans algorithm
              # when kmeans_initialization_method is CUSTOM.
          &quot;minRelativeProgress&quot;: 3.14, # When early_stop is true, stops training when accuracy improvement is
              # less than &#x27;min_relative_progress&#x27;. Used only for iterative training
              # algorithms.
          &quot;numClusters&quot;: &quot;A String&quot;, # Number of clusters for clustering models.
          &quot;dataSplitMethod&quot;: &quot;A String&quot;, # The data split type for training and evaluation, e.g. RANDOM.
          &quot;minSplitLoss&quot;: 3.14, # Minimum split loss for boosted tree models.
        },
        &quot;dataSplitResult&quot;: { # Data split result. This contains references to the training and evaluation # Data split result of the training run. Only set when the input data is
            # actually split.
            # data tables that were used to train the model.
          &quot;trainingTable&quot;: { # Table reference of the training data after split.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
          &quot;evaluationTable&quot;: { # Table reference of the evaluation data after split.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
        },
      },
    ],
    &quot;modelReference&quot;: { # Required. Unique identifier for this model.
      &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
      &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
      &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
    },
    &quot;description&quot;: &quot;A String&quot;, # Optional. A user-friendly description of this model.
    &quot;etag&quot;: &quot;A String&quot;, # Output only. A hash of this resource.
    &quot;creationTime&quot;: &quot;A String&quot;, # Output only. The time when this model was created, in millisecs since the epoch.
    &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys). This shows the
        # encryption configuration of the model data while stored in BigQuery
        # storage. This field can be used with PatchModel to update encryption key
        # for an already encrypted model.
      &quot;kmsKeyName&quot;: &quot;A String&quot;, # [Optional] Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key.
    },
    &quot;location&quot;: &quot;A String&quot;, # Output only. The geographic location where the model resides. This value
        # is inherited from the dataset.
    &quot;friendlyName&quot;: &quot;A String&quot;, # Optional. A descriptive name for this model.
    &quot;lastModifiedTime&quot;: &quot;A String&quot;, # Output only. The time when this model was last modified, in millisecs since the epoch.
    &quot;labels&quot;: { # The labels associated with this model. You can use these to organize
        # and group your models. Label keys and values can be no longer
        # than 63 characters, can only contain lowercase letters, numeric
        # characters, underscores and dashes. International characters are allowed.
        # Label values are optional. Label keys must start with a letter and each
        # label in the list must have a different key.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  }</pre>
</div>

</body></html>