<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.tables.html">tables</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, datasetId, tableId)</a></code></p>
<p class="firstline">Deletes the table specified by tableId from the dataset. If the table contains data, all the data will be deleted.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, datasetId, tableId, selectedFields=None)</a></code></p>
<p class="firstline">Gets the specified table resource by table ID. This method does not return the data in the table, it only returns the table resource, which describes the structure of this table.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(resource, body=None)</a></code></p>
<p class="firstline">Gets the access control policy for a resource.</p>
<p class="toc_element">
  <code><a href="#insert">insert(projectId, datasetId, body=None)</a></code></p>
<p class="firstline">Creates a new, empty table in the dataset.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, datasetId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists all tables in the specified dataset. Requires the READER dataset role.</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, tableId, body=None)</a></code></p>
<p class="firstline">Updates information in an existing table. The update method replaces the entire table resource, whereas the patch method only replaces fields that are provided in the submitted table resource. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None)</a></code></p>
<p class="firstline">Sets the access control policy on the specified resource. Replaces any</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None)</a></code></p>
<p class="firstline">Returns permissions that a caller has on the specified resource.</p>
<p class="toc_element">
  <code><a href="#update">update(projectId, datasetId, tableId, body=None)</a></code></p>
<p class="firstline">Updates information in an existing table. The update method replaces the entire table resource, whereas the patch method only replaces fields that are provided in the submitted table resource.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(projectId, datasetId, tableId)</code>
  <pre>Deletes the table specified by tableId from the dataset. If the table contains data, all the data will be deleted.

Args:
  projectId: string, Project ID of the table to delete (required)
  datasetId: string, Dataset ID of the table to delete (required)
  tableId: string, Table ID of the table to delete (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, datasetId, tableId, selectedFields=None)</code>
  <pre>Gets the specified table resource by table ID. This method does not return the data in the table, it only returns the table resource, which describes the structure of this table.

Args:
  projectId: string, Project ID of the requested table (required)
  datasetId: string, Dataset ID of the requested table (required)
  tableId: string, Table ID of the requested table (required)
  selectedFields: string, List of fields to return (comma-separated). If unspecified, all fields are returned

Returns:
  An object of the form:

    {
      &quot;view&quot;: { # [Optional] The view definition.
        &quot;useLegacySql&quot;: True or False, # Specifies whether to use BigQuery&#x27;s legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
        &quot;query&quot;: &quot;A String&quot;, # [Required] A query that BigQuery executes when the view is referenced.
        &quot;userDefinedFunctionResources&quot;: [ # Describes user-defined function resources used in the query.
          { # This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions
            &quot;inlineCode&quot;: &quot;A String&quot;, # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
            &quot;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
          },
        ],
      },
      &quot;numLongTermBytes&quot;: &quot;A String&quot;, # [Output-only] The number of bytes in the table that are considered &quot;long-term storage&quot;.
      &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change.
      &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys).
        &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;streamingBuffer&quot;: { # [Output-only] Contains information regarding this table&#x27;s streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
        &quot;estimatedBytes&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
        &quot;estimatedRows&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of rows currently in the streaming buffer.
        &quot;oldestEntryTime&quot;: &quot;A String&quot;, # [Output-only] Contains the timestamp of the oldest entry in the streaming buffer, in milliseconds since the epoch, if the streaming buffer is available.
      },
      &quot;numBytes&quot;: &quot;A String&quot;, # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
      &quot;location&quot;: &quot;A String&quot;, # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
      &quot;timePartitioning&quot;: { # Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;requirePartitionFilter&quot;: True or False,
        &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
        &quot;expirationMs&quot;: &quot;A String&quot;, # [Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value.
        &quot;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
      },
      &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] A descriptive name for this table.
      &quot;labels&quot;: { # The labels associated with this table. You can use these to organize and group your tables. 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;numPhysicalBytes&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.
      &quot;externalDataConfiguration&quot;: { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
        &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
        &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
        &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
          &quot;A String&quot;,
        ],
        &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
          &quot;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
          &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
          &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
          &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
          &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
          &quot;allowQuotedNewlines&quot;: True or False, # [Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
        },
        &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
          &quot;readRowkeyAsString&quot;: True or False, # [Optional] If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.
          &quot;columnFamilies&quot;: [ # [Optional] List of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the &#x27;type&#x27; field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.
            {
              &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
              &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
              &quot;columns&quot;: [ # [Optional] Lists of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as .. Other columns can be accessed as a list through .Column field.
                {
                  &quot;fieldName&quot;: &quot;A String&quot;, # [Optional] If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.
                  &quot;qualifierString&quot;: &quot;A String&quot;,
                  &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                  &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                  &quot;qualifierEncoded&quot;: &quot;A String&quot;, # [Required] Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as field_name.
                  &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set, only the latest version of value in this column are exposed. &#x27;onlyReadLatest&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;onlyReadLatest&#x27; is set at both levels.
                },
              ],
              &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
              &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
            },
          ],
          &quot;ignoreUnspecifiedColumnFamilies&quot;: True or False, # [Optional] If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.
        },
        &quot;schema&quot;: { # [Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats.
          &quot;fields&quot;: [ # Describes the fields in a table.
            {
              &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
              &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
              &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
              &quot;policyTags&quot;: {
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
            },
          ],
        },
        &quot;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
        &quot;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
          &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
          &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
        },
        &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
        &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
          &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
          &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
        },
        &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
        &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
      },
      &quot;model&quot;: { # [Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run &#x27;PREDICT&#x27; queries.
        &quot;modelOptions&quot;: { # [Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.
          &quot;lossType&quot;: &quot;A String&quot;,
          &quot;modelType&quot;: &quot;A String&quot;,
          &quot;labels&quot;: [
            &quot;A String&quot;,
          ],
        },
        &quot;trainingRuns&quot;: [ # [Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query.
          {
            &quot;iterationResults&quot;: [ # [Output-only, Beta] List of each iteration results.
              {
                &quot;durationMs&quot;: &quot;A String&quot;, # [Output-only, Beta] Time taken to run the training iteration in milliseconds.
                &quot;trainingLoss&quot;: 3.14, # [Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type.
                &quot;evalLoss&quot;: 3.14, # [Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows.
                &quot;index&quot;: 42, # [Output-only, Beta] Index of the ML training iteration, starting from zero for each training run.
                &quot;learnRate&quot;: 3.14, # [Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant.
              },
            ],
            &quot;startTime&quot;: &quot;A String&quot;, # [Output-only, Beta] Training run start time in milliseconds since the epoch.
            &quot;trainingOptions&quot;: { # [Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.
              &quot;l1Reg&quot;: 3.14,
              &quot;maxIteration&quot;: &quot;A String&quot;,
              &quot;learnRate&quot;: 3.14,
              &quot;minRelProgress&quot;: 3.14,
              &quot;l2Reg&quot;: 3.14,
              &quot;warmStart&quot;: True or False,
              &quot;learnRateStrategy&quot;: &quot;A String&quot;,
              &quot;lineSearchInitLearnRate&quot;: 3.14,
              &quot;earlyStop&quot;: True or False,
            },
            &quot;state&quot;: &quot;A String&quot;, # [Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user.
          },
        ],
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
      &quot;expirationTime&quot;: &quot;A String&quot;, # [Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables 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 tables.
      &quot;kind&quot;: &quot;bigquery#table&quot;, # [Output-only] The type of the resource.
      &quot;description&quot;: &quot;A String&quot;, # [Optional] A user-friendly description of this table.
      &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was created, in milliseconds since the epoch.
      &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
          &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
        },
        &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
      },
      &quot;schema&quot;: { # [Optional] Describes the schema of this table.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
            &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
          },
        ],
      },
      &quot;id&quot;: &quot;A String&quot;, # [Output-only] An opaque ID uniquely identifying the table.
      &quot;requirePartitionFilter&quot;: false, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.
      &quot;materializedView&quot;: { # [Optional] Materialized view definition.
        &quot;query&quot;: &quot;A String&quot;, # [Required] A query whose result is persisted.
        &quot;enableRefresh&quot;: True or False, # [Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is &quot;true&quot;.
        &quot;refreshIntervalMs&quot;: &quot;A String&quot;, # [Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is &quot;1800000&quot; (30 minutes).
        &quot;lastRefreshTime&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The time when this materialized view was last modified, in milliseconds since the epoch.
      },
      &quot;tableReference&quot;: { # [Required] Reference describing the ID of this table.
        &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;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;lastModifiedTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
      &quot;type&quot;: &quot;A String&quot;, # [Output-only] Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered.
        &quot;fields&quot;: [ # [Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
          &quot;A String&quot;,
        ],
      },
      &quot;numRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
    }</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, body=None)</code>
  <pre>Gets the access control policy for a resource.
Returns an empty policy if the resource exists and does not have a policy
set.

Args:
  resource: string, REQUIRED: The resource for which the policy is being requested.
See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `GetIamPolicy` method.
    &quot;options&quot;: { # Encapsulates settings provided to GetIamPolicy. # OPTIONAL: A `GetPolicyOptions` object for specifying options to
        # `GetIamPolicy`.
      &quot;requestedPolicyVersion&quot;: 42, # Optional. The policy format version to be returned.
          #
          # Valid values are 0, 1, and 3. Requests specifying an invalid value will be
          # rejected.
          #
          # Requests for policies with any conditional bindings must specify version 3.
          # Policies without any conditional bindings may specify any valid value or
          # leave the field unset.
          #
          # To learn which resources support conditions in their IAM policies, see the
          # [IAM
          # documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
    },
  }


Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access
      # controls for Google Cloud resources.
      #
      #
      # A `Policy` is a collection of `bindings`. A `binding` binds one or more
      # `members` to a single `role`. Members can be user accounts, service accounts,
      # Google groups, and domains (such as G Suite). A `role` is a named list of
      # permissions; each `role` can be an IAM predefined role or a user-created
      # custom role.
      #
      # For some types of Google Cloud resources, a `binding` can also specify a
      # `condition`, which is a logical expression that allows access to a resource
      # only if the expression evaluates to `true`. A condition can add constraints
      # based on attributes of the request, the resource, or both. To learn which
      # resources support conditions in their IAM policies, see the
      # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
      #
      # **JSON example:**
      #
      #     {
      #       &quot;bindings&quot;: [
      #         {
      #           &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;,
      #           &quot;members&quot;: [
      #             &quot;user:mike@example.com&quot;,
      #             &quot;group:admins@example.com&quot;,
      #             &quot;domain:google.com&quot;,
      #             &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot;
      #           ]
      #         },
      #         {
      #           &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;,
      #           &quot;members&quot;: [
      #             &quot;user:eve@example.com&quot;
      #           ],
      #           &quot;condition&quot;: {
      #             &quot;title&quot;: &quot;expirable access&quot;,
      #             &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;,
      #             &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;,
      #           }
      #         }
      #       ],
      #       &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;,
      #       &quot;version&quot;: 3
      #     }
      #
      # **YAML example:**
      #
      #     bindings:
      #     - members:
      #       - user:mike@example.com
      #       - group:admins@example.com
      #       - domain:google.com
      #       - serviceAccount:my-project-id@appspot.gserviceaccount.com
      #       role: roles/resourcemanager.organizationAdmin
      #     - members:
      #       - user:eve@example.com
      #       role: roles/resourcemanager.organizationViewer
      #       condition:
      #         title: expirable access
      #         description: Does not grant access after Sep 2020
      #         expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)
      #     - etag: BwWWja0YfJA=
      #     - version: 3
      #
      # For a description of IAM and its features, see the
      # [IAM documentation](https://cloud.google.com/iam/docs/).
    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
        # prevent simultaneous updates of a policy from overwriting each other.
        # It is strongly suggested that systems make use of the `etag` in the
        # read-modify-write cycle to perform policy updates in order to avoid race
        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
        # systems are expected to put that etag in the request to `setIamPolicy` to
        # ensure that their change will be applied to the same version of the policy.
        #
        # **Important:** If you use IAM Conditions, you must include the `etag` field
        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
        # you to overwrite a version `3` policy with a version `1` policy, and all of
        # the conditions in the version `3` policy are lost.
    &quot;version&quot;: 42, # Specifies the format of the policy.
        #
        # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
        # are rejected.
        #
        # Any operation that affects conditional role bindings must specify version
        # `3`. This requirement applies to the following operations:
        #
        # * Getting a policy that includes a conditional role binding
        # * Adding a conditional role binding to a policy
        # * Changing a conditional role binding in a policy
        # * Removing any role binding, with or without a condition, from a policy
        #   that includes conditions
        #
        # **Important:** If you use IAM Conditions, you must include the `etag` field
        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
        # you to overwrite a version `3` policy with a version `1` policy, and all of
        # the conditions in the version `3` policy are lost.
        #
        # If a policy does not include any conditions, operations on that policy may
        # specify any valid version or leave the field unset.
        #
        # To learn which resources support conditions in their IAM policies, see the
        # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
    &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
      { # Specifies the audit configuration for a service.
          # The configuration determines which permission types are logged, and what
          # identities, if any, are exempted from logging.
          # An AuditConfig must have one or more AuditLogConfigs.
          #
          # If there are AuditConfigs for both `allServices` and a specific service,
          # the union of the two AuditConfigs is used for that service: the log_types
          # specified in each AuditConfig are enabled, and the exempted_members in each
          # AuditLogConfig are exempted.
          #
          # Example Policy with multiple AuditConfigs:
          #
          #     {
          #       &quot;audit_configs&quot;: [
          #         {
          #           &quot;service&quot;: &quot;allServices&quot;
          #           &quot;audit_log_configs&quot;: [
          #             {
          #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
          #               &quot;exempted_members&quot;: [
          #                 &quot;user:jose@example.com&quot;
          #               ]
          #             },
          #             {
          #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
          #             },
          #             {
          #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;,
          #             }
          #           ]
          #         },
          #         {
          #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;
          #           &quot;audit_log_configs&quot;: [
          #             {
          #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
          #             },
          #             {
          #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
          #               &quot;exempted_members&quot;: [
          #                 &quot;user:aliya@example.com&quot;
          #               ]
          #             }
          #           ]
          #         }
          #       ]
          #     }
          #
          # For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
          # logging. It also exempts jose@example.com from DATA_READ logging, and
          # aliya@example.com from DATA_WRITE logging.
        &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging.
            # For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
            # `allServices` is a special value that covers all services.
        &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
          { # Provides the configuration for logging a type of permissions.
              # Example:
              #
              #     {
              #       &quot;audit_log_configs&quot;: [
              #         {
              #           &quot;log_type&quot;: &quot;DATA_READ&quot;,
              #           &quot;exempted_members&quot;: [
              #             &quot;user:jose@example.com&quot;
              #           ]
              #         },
              #         {
              #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
              #         }
              #       ]
              #     }
              #
              # This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting
              # jose@example.com from DATA_READ logging.
            &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of
                # permission.
                # Follows the same format of Binding.members.
              &quot;A String&quot;,
            ],
            &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
          },
        ],
      },
    ],
    &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a
        # `condition` that determines how and when the `bindings` are applied. Each
        # of the `bindings` must contain at least one member.
      { # Associates `members` with a `role`.
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
            #
            # If the condition evaluates to `true`, then this binding applies to the
            # current request.
            #
            # If the condition evaluates to `false`, then this binding does not apply to
            # the current request. However, a different role binding might grant the same
            # role to one or more of the members in this binding.
            #
            # To learn which resources support conditions in their IAM policies, see the
            # [IAM
            # documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
            # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
            # are documented at https://github.com/google/cel-spec.
            #
            # Example (Comparison):
            #
            #     title: &quot;Summary size limit&quot;
            #     description: &quot;Determines if a summary is less than 100 chars&quot;
            #     expression: &quot;document.summary.size() &lt; 100&quot;
            #
            # Example (Equality):
            #
            #     title: &quot;Requestor is owner&quot;
            #     description: &quot;Determines if requestor is the document owner&quot;
            #     expression: &quot;document.owner == request.auth.claims.email&quot;
            #
            # Example (Logic):
            #
            #     title: &quot;Public documents&quot;
            #     description: &quot;Determine whether the document should be publicly visible&quot;
            #     expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot;
            #
            # Example (Data Manipulation):
            #
            #     title: &quot;Notification string&quot;
            #     description: &quot;Create a notification string with a timestamp.&quot;
            #     expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot;
            #
            # The exact variables and functions that may be referenced within an expression
            # are determined by the service that evaluates it. See the service
            # documentation for additional information.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
              # describes the expression, e.g. when hovered over it in a UI.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
              # syntax.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
              # its purpose. This can be used e.g. in UIs which allow to enter the
              # expression.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
              # reporting, e.g. a file name and a position in the file.
        },
        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
            # `members` can have the following values:
            #
            # * `allUsers`: A special identifier that represents anyone who is
            #    on the internet; with or without a Google account.
            #
            # * `allAuthenticatedUsers`: A special identifier that represents anyone
            #    who is authenticated with a Google account or a service account.
            #
            # * `user:{emailid}`: An email address that represents a specific Google
            #    account. For example, `alice@example.com` .
            #
            #
            # * `serviceAccount:{emailid}`: An email address that represents a service
            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
            #
            # * `group:{emailid}`: An email address that represents a Google group.
            #    For example, `admins@example.com`.
            #
            # * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique
            #    identifier) representing a user that has been recently deleted. For
            #    example, `alice@example.com?uid=123456789012345678901`. If the user is
            #    recovered, this value reverts to `user:{emailid}` and the recovered user
            #    retains the role in the binding.
            #
            # * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus
            #    unique identifier) representing a service account that has been recently
            #    deleted. For example,
            #    `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
            #    If the service account is undeleted, this value reverts to
            #    `serviceAccount:{emailid}` and the undeleted service account retains the
            #    role in the binding.
            #
            # * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique
            #    identifier) representing a Google group that has been recently
            #    deleted. For example, `admins@example.com?uid=123456789012345678901`. If
            #    the group is recovered, this value reverts to `group:{emailid}` and the
            #    recovered group retains the role in the binding.
            #
            #
            # * `domain:{domain}`: The G Suite domain (primary) that represents all the
            #    users of that domain. For example, `google.com` or `example.com`.
            #
          &quot;A String&quot;,
        ],
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(projectId, datasetId, body=None)</code>
  <pre>Creates a new, empty table in the dataset.

Args:
  projectId: string, Project ID of the new table (required)
  datasetId: string, Dataset ID of the new table (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;view&quot;: { # [Optional] The view definition.
      &quot;useLegacySql&quot;: True or False, # Specifies whether to use BigQuery&#x27;s legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
      &quot;query&quot;: &quot;A String&quot;, # [Required] A query that BigQuery executes when the view is referenced.
      &quot;userDefinedFunctionResources&quot;: [ # Describes user-defined function resources used in the query.
        { # This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions
          &quot;inlineCode&quot;: &quot;A String&quot;, # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
          &quot;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
        },
      ],
    },
    &quot;numLongTermBytes&quot;: &quot;A String&quot;, # [Output-only] The number of bytes in the table that are considered &quot;long-term storage&quot;.
    &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change.
    &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys).
      &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;streamingBuffer&quot;: { # [Output-only] Contains information regarding this table&#x27;s streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
      &quot;estimatedBytes&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
      &quot;estimatedRows&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of rows currently in the streaming buffer.
      &quot;oldestEntryTime&quot;: &quot;A String&quot;, # [Output-only] Contains the timestamp of the oldest entry in the streaming buffer, in milliseconds since the epoch, if the streaming buffer is available.
    },
    &quot;numBytes&quot;: &quot;A String&quot;, # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
    &quot;location&quot;: &quot;A String&quot;, # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
    &quot;timePartitioning&quot;: { # Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
      &quot;requirePartitionFilter&quot;: True or False,
      &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
      &quot;expirationMs&quot;: &quot;A String&quot;, # [Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value.
      &quot;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
    },
    &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] A descriptive name for this table.
    &quot;labels&quot;: { # The labels associated with this table. You can use these to organize and group your tables. 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;numPhysicalBytes&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.
    &quot;externalDataConfiguration&quot;: { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
      &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
      &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
      &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
        &quot;A String&quot;,
      ],
      &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
        &quot;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
        &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
        &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
        &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
        &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
        &quot;allowQuotedNewlines&quot;: True or False, # [Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
      },
      &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
        &quot;readRowkeyAsString&quot;: True or False, # [Optional] If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.
        &quot;columnFamilies&quot;: [ # [Optional] List of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the &#x27;type&#x27; field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.
          {
            &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
            &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
            &quot;columns&quot;: [ # [Optional] Lists of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as .. Other columns can be accessed as a list through .Column field.
              {
                &quot;fieldName&quot;: &quot;A String&quot;, # [Optional] If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.
                &quot;qualifierString&quot;: &quot;A String&quot;,
                &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                &quot;qualifierEncoded&quot;: &quot;A String&quot;, # [Required] Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as field_name.
                &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set, only the latest version of value in this column are exposed. &#x27;onlyReadLatest&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;onlyReadLatest&#x27; is set at both levels.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
            &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
          },
        ],
        &quot;ignoreUnspecifiedColumnFamilies&quot;: True or False, # [Optional] If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.
      },
      &quot;schema&quot;: { # [Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
            &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
          },
        ],
      },
      &quot;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
      &quot;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
        &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
        &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
      },
      &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
      &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
        &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
        &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
      },
      &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
      &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
    },
    &quot;model&quot;: { # [Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run &#x27;PREDICT&#x27; queries.
      &quot;modelOptions&quot;: { # [Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.
        &quot;lossType&quot;: &quot;A String&quot;,
        &quot;modelType&quot;: &quot;A String&quot;,
        &quot;labels&quot;: [
          &quot;A String&quot;,
        ],
      },
      &quot;trainingRuns&quot;: [ # [Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query.
        {
          &quot;iterationResults&quot;: [ # [Output-only, Beta] List of each iteration results.
            {
              &quot;durationMs&quot;: &quot;A String&quot;, # [Output-only, Beta] Time taken to run the training iteration in milliseconds.
              &quot;trainingLoss&quot;: 3.14, # [Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type.
              &quot;evalLoss&quot;: 3.14, # [Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows.
              &quot;index&quot;: 42, # [Output-only, Beta] Index of the ML training iteration, starting from zero for each training run.
              &quot;learnRate&quot;: 3.14, # [Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant.
            },
          ],
          &quot;startTime&quot;: &quot;A String&quot;, # [Output-only, Beta] Training run start time in milliseconds since the epoch.
          &quot;trainingOptions&quot;: { # [Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.
            &quot;l1Reg&quot;: 3.14,
            &quot;maxIteration&quot;: &quot;A String&quot;,
            &quot;learnRate&quot;: 3.14,
            &quot;minRelProgress&quot;: 3.14,
            &quot;l2Reg&quot;: 3.14,
            &quot;warmStart&quot;: True or False,
            &quot;learnRateStrategy&quot;: &quot;A String&quot;,
            &quot;lineSearchInitLearnRate&quot;: 3.14,
            &quot;earlyStop&quot;: True or False,
          },
          &quot;state&quot;: &quot;A String&quot;, # [Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user.
        },
      ],
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
    &quot;expirationTime&quot;: &quot;A String&quot;, # [Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables 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 tables.
    &quot;kind&quot;: &quot;bigquery#table&quot;, # [Output-only] The type of the resource.
    &quot;description&quot;: &quot;A String&quot;, # [Optional] A user-friendly description of this table.
    &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was created, in milliseconds since the epoch.
    &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
      &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
        &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
        &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
        &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
      },
      &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
    },
    &quot;schema&quot;: { # [Optional] Describes the schema of this table.
      &quot;fields&quot;: [ # Describes the fields in a table.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
          &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
            &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
              &quot;A String&quot;,
            ],
          },
          &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
          &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
          &quot;policyTags&quot;: {
            &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
              &quot;A String&quot;,
            ],
          },
          &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
            # Object with schema name: TableFieldSchema
          ],
        },
      ],
    },
    &quot;id&quot;: &quot;A String&quot;, # [Output-only] An opaque ID uniquely identifying the table.
    &quot;requirePartitionFilter&quot;: false, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.
    &quot;materializedView&quot;: { # [Optional] Materialized view definition.
      &quot;query&quot;: &quot;A String&quot;, # [Required] A query whose result is persisted.
      &quot;enableRefresh&quot;: True or False, # [Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is &quot;true&quot;.
      &quot;refreshIntervalMs&quot;: &quot;A String&quot;, # [Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is &quot;1800000&quot; (30 minutes).
      &quot;lastRefreshTime&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The time when this materialized view was last modified, in milliseconds since the epoch.
    },
    &quot;tableReference&quot;: { # [Required] Reference describing the ID of this table.
      &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;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;lastModifiedTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
    &quot;type&quot;: &quot;A String&quot;, # [Output-only] Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.
    &quot;clustering&quot;: { # [Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered.
      &quot;fields&quot;: [ # [Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
        &quot;A String&quot;,
      ],
    },
    &quot;numRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
  }


Returns:
  An object of the form:

    {
      &quot;view&quot;: { # [Optional] The view definition.
        &quot;useLegacySql&quot;: True or False, # Specifies whether to use BigQuery&#x27;s legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
        &quot;query&quot;: &quot;A String&quot;, # [Required] A query that BigQuery executes when the view is referenced.
        &quot;userDefinedFunctionResources&quot;: [ # Describes user-defined function resources used in the query.
          { # This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions
            &quot;inlineCode&quot;: &quot;A String&quot;, # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
            &quot;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
          },
        ],
      },
      &quot;numLongTermBytes&quot;: &quot;A String&quot;, # [Output-only] The number of bytes in the table that are considered &quot;long-term storage&quot;.
      &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change.
      &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys).
        &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;streamingBuffer&quot;: { # [Output-only] Contains information regarding this table&#x27;s streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
        &quot;estimatedBytes&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
        &quot;estimatedRows&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of rows currently in the streaming buffer.
        &quot;oldestEntryTime&quot;: &quot;A String&quot;, # [Output-only] Contains the timestamp of the oldest entry in the streaming buffer, in milliseconds since the epoch, if the streaming buffer is available.
      },
      &quot;numBytes&quot;: &quot;A String&quot;, # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
      &quot;location&quot;: &quot;A String&quot;, # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
      &quot;timePartitioning&quot;: { # Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;requirePartitionFilter&quot;: True or False,
        &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
        &quot;expirationMs&quot;: &quot;A String&quot;, # [Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value.
        &quot;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
      },
      &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] A descriptive name for this table.
      &quot;labels&quot;: { # The labels associated with this table. You can use these to organize and group your tables. 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;numPhysicalBytes&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.
      &quot;externalDataConfiguration&quot;: { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
        &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
        &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
        &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
          &quot;A String&quot;,
        ],
        &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
          &quot;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
          &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
          &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
          &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
          &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
          &quot;allowQuotedNewlines&quot;: True or False, # [Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
        },
        &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
          &quot;readRowkeyAsString&quot;: True or False, # [Optional] If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.
          &quot;columnFamilies&quot;: [ # [Optional] List of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the &#x27;type&#x27; field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.
            {
              &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
              &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
              &quot;columns&quot;: [ # [Optional] Lists of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as .. Other columns can be accessed as a list through .Column field.
                {
                  &quot;fieldName&quot;: &quot;A String&quot;, # [Optional] If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.
                  &quot;qualifierString&quot;: &quot;A String&quot;,
                  &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                  &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                  &quot;qualifierEncoded&quot;: &quot;A String&quot;, # [Required] Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as field_name.
                  &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set, only the latest version of value in this column are exposed. &#x27;onlyReadLatest&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;onlyReadLatest&#x27; is set at both levels.
                },
              ],
              &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
              &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
            },
          ],
          &quot;ignoreUnspecifiedColumnFamilies&quot;: True or False, # [Optional] If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.
        },
        &quot;schema&quot;: { # [Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats.
          &quot;fields&quot;: [ # Describes the fields in a table.
            {
              &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
              &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
              &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
              &quot;policyTags&quot;: {
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
            },
          ],
        },
        &quot;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
        &quot;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
          &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
          &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
        },
        &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
        &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
          &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
          &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
        },
        &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
        &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
      },
      &quot;model&quot;: { # [Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run &#x27;PREDICT&#x27; queries.
        &quot;modelOptions&quot;: { # [Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.
          &quot;lossType&quot;: &quot;A String&quot;,
          &quot;modelType&quot;: &quot;A String&quot;,
          &quot;labels&quot;: [
            &quot;A String&quot;,
          ],
        },
        &quot;trainingRuns&quot;: [ # [Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query.
          {
            &quot;iterationResults&quot;: [ # [Output-only, Beta] List of each iteration results.
              {
                &quot;durationMs&quot;: &quot;A String&quot;, # [Output-only, Beta] Time taken to run the training iteration in milliseconds.
                &quot;trainingLoss&quot;: 3.14, # [Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type.
                &quot;evalLoss&quot;: 3.14, # [Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows.
                &quot;index&quot;: 42, # [Output-only, Beta] Index of the ML training iteration, starting from zero for each training run.
                &quot;learnRate&quot;: 3.14, # [Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant.
              },
            ],
            &quot;startTime&quot;: &quot;A String&quot;, # [Output-only, Beta] Training run start time in milliseconds since the epoch.
            &quot;trainingOptions&quot;: { # [Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.
              &quot;l1Reg&quot;: 3.14,
              &quot;maxIteration&quot;: &quot;A String&quot;,
              &quot;learnRate&quot;: 3.14,
              &quot;minRelProgress&quot;: 3.14,
              &quot;l2Reg&quot;: 3.14,
              &quot;warmStart&quot;: True or False,
              &quot;learnRateStrategy&quot;: &quot;A String&quot;,
              &quot;lineSearchInitLearnRate&quot;: 3.14,
              &quot;earlyStop&quot;: True or False,
            },
            &quot;state&quot;: &quot;A String&quot;, # [Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user.
          },
        ],
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
      &quot;expirationTime&quot;: &quot;A String&quot;, # [Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables 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 tables.
      &quot;kind&quot;: &quot;bigquery#table&quot;, # [Output-only] The type of the resource.
      &quot;description&quot;: &quot;A String&quot;, # [Optional] A user-friendly description of this table.
      &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was created, in milliseconds since the epoch.
      &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
          &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
        },
        &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
      },
      &quot;schema&quot;: { # [Optional] Describes the schema of this table.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
            &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
          },
        ],
      },
      &quot;id&quot;: &quot;A String&quot;, # [Output-only] An opaque ID uniquely identifying the table.
      &quot;requirePartitionFilter&quot;: false, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.
      &quot;materializedView&quot;: { # [Optional] Materialized view definition.
        &quot;query&quot;: &quot;A String&quot;, # [Required] A query whose result is persisted.
        &quot;enableRefresh&quot;: True or False, # [Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is &quot;true&quot;.
        &quot;refreshIntervalMs&quot;: &quot;A String&quot;, # [Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is &quot;1800000&quot; (30 minutes).
        &quot;lastRefreshTime&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The time when this materialized view was last modified, in milliseconds since the epoch.
      },
      &quot;tableReference&quot;: { # [Required] Reference describing the ID of this table.
        &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;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;lastModifiedTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
      &quot;type&quot;: &quot;A String&quot;, # [Output-only] Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered.
        &quot;fields&quot;: [ # [Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
          &quot;A String&quot;,
        ],
      },
      &quot;numRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
    }</pre>
</div>

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

Args:
  projectId: string, Project ID of the tables to list (required)
  datasetId: string, Dataset ID of the tables to list (required)
  pageToken: string, Page token, returned by a previous call, to request the next page of results
  maxResults: integer, Maximum number of results to return

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to request the next page of results.
    &quot;totalItems&quot;: 42, # The total number of tables in the dataset.
    &quot;kind&quot;: &quot;bigquery#tableList&quot;, # The type of list.
    &quot;tables&quot;: [ # Tables in the requested dataset.
      {
        &quot;kind&quot;: &quot;bigquery#table&quot;, # The resource type.
        &quot;view&quot;: { # Additional details for a view.
          &quot;useLegacySql&quot;: True or False, # True if view is defined in legacy SQL dialect, false if in standard SQL.
        },
        &quot;creationTime&quot;: &quot;A String&quot;, # The time when this table was created, in milliseconds since the epoch.
        &quot;rangePartitioning&quot;: { # The range partitioning specification for this table, if configured.
          &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
            &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
            &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
            &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          },
          &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
        },
        &quot;id&quot;: &quot;A String&quot;, # An opaque ID of the table
        &quot;tableReference&quot;: { # A reference uniquely identifying the table.
          &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;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;timePartitioning&quot;: { # The time-based partitioning specification for this table, if configured.
          &quot;requirePartitionFilter&quot;: True or False,
          &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
          &quot;expirationMs&quot;: &quot;A String&quot;, # [Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value.
          &quot;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
        },
        &quot;friendlyName&quot;: &quot;A String&quot;, # The user-friendly name for this table.
        &quot;labels&quot;: { # The labels associated with this table. You can use these to organize and group your tables.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;type&quot;: &quot;A String&quot;, # The type of table. Possible values are: TABLE, VIEW.
        &quot;clustering&quot;: { # [Beta] Clustering specification for this table, if configured.
          &quot;fields&quot;: [ # [Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
            &quot;A String&quot;,
          ],
        },
        &quot;expirationTime&quot;: &quot;A String&quot;, # [Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # A hash of this 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, tableId, body=None)</code>
  <pre>Updates information in an existing table. The update method replaces the entire table resource, whereas the patch method only replaces fields that are provided in the submitted table resource. This method supports patch semantics.

Args:
  projectId: string, Project ID of the table to update (required)
  datasetId: string, Dataset ID of the table to update (required)
  tableId: string, Table ID of the table to update (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;view&quot;: { # [Optional] The view definition.
      &quot;useLegacySql&quot;: True or False, # Specifies whether to use BigQuery&#x27;s legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
      &quot;query&quot;: &quot;A String&quot;, # [Required] A query that BigQuery executes when the view is referenced.
      &quot;userDefinedFunctionResources&quot;: [ # Describes user-defined function resources used in the query.
        { # This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions
          &quot;inlineCode&quot;: &quot;A String&quot;, # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
          &quot;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
        },
      ],
    },
    &quot;numLongTermBytes&quot;: &quot;A String&quot;, # [Output-only] The number of bytes in the table that are considered &quot;long-term storage&quot;.
    &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change.
    &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys).
      &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;streamingBuffer&quot;: { # [Output-only] Contains information regarding this table&#x27;s streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
      &quot;estimatedBytes&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
      &quot;estimatedRows&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of rows currently in the streaming buffer.
      &quot;oldestEntryTime&quot;: &quot;A String&quot;, # [Output-only] Contains the timestamp of the oldest entry in the streaming buffer, in milliseconds since the epoch, if the streaming buffer is available.
    },
    &quot;numBytes&quot;: &quot;A String&quot;, # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
    &quot;location&quot;: &quot;A String&quot;, # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
    &quot;timePartitioning&quot;: { # Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
      &quot;requirePartitionFilter&quot;: True or False,
      &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
      &quot;expirationMs&quot;: &quot;A String&quot;, # [Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value.
      &quot;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
    },
    &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] A descriptive name for this table.
    &quot;labels&quot;: { # The labels associated with this table. You can use these to organize and group your tables. 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;numPhysicalBytes&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.
    &quot;externalDataConfiguration&quot;: { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
      &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
      &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
      &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
        &quot;A String&quot;,
      ],
      &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
        &quot;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
        &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
        &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
        &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
        &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
        &quot;allowQuotedNewlines&quot;: True or False, # [Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
      },
      &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
        &quot;readRowkeyAsString&quot;: True or False, # [Optional] If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.
        &quot;columnFamilies&quot;: [ # [Optional] List of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the &#x27;type&#x27; field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.
          {
            &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
            &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
            &quot;columns&quot;: [ # [Optional] Lists of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as .. Other columns can be accessed as a list through .Column field.
              {
                &quot;fieldName&quot;: &quot;A String&quot;, # [Optional] If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.
                &quot;qualifierString&quot;: &quot;A String&quot;,
                &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                &quot;qualifierEncoded&quot;: &quot;A String&quot;, # [Required] Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as field_name.
                &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set, only the latest version of value in this column are exposed. &#x27;onlyReadLatest&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;onlyReadLatest&#x27; is set at both levels.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
            &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
          },
        ],
        &quot;ignoreUnspecifiedColumnFamilies&quot;: True or False, # [Optional] If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.
      },
      &quot;schema&quot;: { # [Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
            &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
          },
        ],
      },
      &quot;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
      &quot;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
        &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
        &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
      },
      &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
      &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
        &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
        &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
      },
      &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
      &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
    },
    &quot;model&quot;: { # [Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run &#x27;PREDICT&#x27; queries.
      &quot;modelOptions&quot;: { # [Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.
        &quot;lossType&quot;: &quot;A String&quot;,
        &quot;modelType&quot;: &quot;A String&quot;,
        &quot;labels&quot;: [
          &quot;A String&quot;,
        ],
      },
      &quot;trainingRuns&quot;: [ # [Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query.
        {
          &quot;iterationResults&quot;: [ # [Output-only, Beta] List of each iteration results.
            {
              &quot;durationMs&quot;: &quot;A String&quot;, # [Output-only, Beta] Time taken to run the training iteration in milliseconds.
              &quot;trainingLoss&quot;: 3.14, # [Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type.
              &quot;evalLoss&quot;: 3.14, # [Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows.
              &quot;index&quot;: 42, # [Output-only, Beta] Index of the ML training iteration, starting from zero for each training run.
              &quot;learnRate&quot;: 3.14, # [Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant.
            },
          ],
          &quot;startTime&quot;: &quot;A String&quot;, # [Output-only, Beta] Training run start time in milliseconds since the epoch.
          &quot;trainingOptions&quot;: { # [Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.
            &quot;l1Reg&quot;: 3.14,
            &quot;maxIteration&quot;: &quot;A String&quot;,
            &quot;learnRate&quot;: 3.14,
            &quot;minRelProgress&quot;: 3.14,
            &quot;l2Reg&quot;: 3.14,
            &quot;warmStart&quot;: True or False,
            &quot;learnRateStrategy&quot;: &quot;A String&quot;,
            &quot;lineSearchInitLearnRate&quot;: 3.14,
            &quot;earlyStop&quot;: True or False,
          },
          &quot;state&quot;: &quot;A String&quot;, # [Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user.
        },
      ],
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
    &quot;expirationTime&quot;: &quot;A String&quot;, # [Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables 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 tables.
    &quot;kind&quot;: &quot;bigquery#table&quot;, # [Output-only] The type of the resource.
    &quot;description&quot;: &quot;A String&quot;, # [Optional] A user-friendly description of this table.
    &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was created, in milliseconds since the epoch.
    &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
      &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
        &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
        &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
        &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
      },
      &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
    },
    &quot;schema&quot;: { # [Optional] Describes the schema of this table.
      &quot;fields&quot;: [ # Describes the fields in a table.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
          &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
            &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
              &quot;A String&quot;,
            ],
          },
          &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
          &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
          &quot;policyTags&quot;: {
            &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
              &quot;A String&quot;,
            ],
          },
          &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
            # Object with schema name: TableFieldSchema
          ],
        },
      ],
    },
    &quot;id&quot;: &quot;A String&quot;, # [Output-only] An opaque ID uniquely identifying the table.
    &quot;requirePartitionFilter&quot;: false, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.
    &quot;materializedView&quot;: { # [Optional] Materialized view definition.
      &quot;query&quot;: &quot;A String&quot;, # [Required] A query whose result is persisted.
      &quot;enableRefresh&quot;: True or False, # [Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is &quot;true&quot;.
      &quot;refreshIntervalMs&quot;: &quot;A String&quot;, # [Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is &quot;1800000&quot; (30 minutes).
      &quot;lastRefreshTime&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The time when this materialized view was last modified, in milliseconds since the epoch.
    },
    &quot;tableReference&quot;: { # [Required] Reference describing the ID of this table.
      &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;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;lastModifiedTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
    &quot;type&quot;: &quot;A String&quot;, # [Output-only] Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.
    &quot;clustering&quot;: { # [Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered.
      &quot;fields&quot;: [ # [Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
        &quot;A String&quot;,
      ],
    },
    &quot;numRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
  }


Returns:
  An object of the form:

    {
      &quot;view&quot;: { # [Optional] The view definition.
        &quot;useLegacySql&quot;: True or False, # Specifies whether to use BigQuery&#x27;s legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
        &quot;query&quot;: &quot;A String&quot;, # [Required] A query that BigQuery executes when the view is referenced.
        &quot;userDefinedFunctionResources&quot;: [ # Describes user-defined function resources used in the query.
          { # This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions
            &quot;inlineCode&quot;: &quot;A String&quot;, # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
            &quot;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
          },
        ],
      },
      &quot;numLongTermBytes&quot;: &quot;A String&quot;, # [Output-only] The number of bytes in the table that are considered &quot;long-term storage&quot;.
      &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change.
      &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys).
        &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;streamingBuffer&quot;: { # [Output-only] Contains information regarding this table&#x27;s streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
        &quot;estimatedBytes&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
        &quot;estimatedRows&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of rows currently in the streaming buffer.
        &quot;oldestEntryTime&quot;: &quot;A String&quot;, # [Output-only] Contains the timestamp of the oldest entry in the streaming buffer, in milliseconds since the epoch, if the streaming buffer is available.
      },
      &quot;numBytes&quot;: &quot;A String&quot;, # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
      &quot;location&quot;: &quot;A String&quot;, # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
      &quot;timePartitioning&quot;: { # Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;requirePartitionFilter&quot;: True or False,
        &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
        &quot;expirationMs&quot;: &quot;A String&quot;, # [Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value.
        &quot;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
      },
      &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] A descriptive name for this table.
      &quot;labels&quot;: { # The labels associated with this table. You can use these to organize and group your tables. 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;numPhysicalBytes&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.
      &quot;externalDataConfiguration&quot;: { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
        &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
        &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
        &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
          &quot;A String&quot;,
        ],
        &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
          &quot;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
          &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
          &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
          &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
          &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
          &quot;allowQuotedNewlines&quot;: True or False, # [Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
        },
        &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
          &quot;readRowkeyAsString&quot;: True or False, # [Optional] If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.
          &quot;columnFamilies&quot;: [ # [Optional] List of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the &#x27;type&#x27; field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.
            {
              &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
              &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
              &quot;columns&quot;: [ # [Optional] Lists of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as .. Other columns can be accessed as a list through .Column field.
                {
                  &quot;fieldName&quot;: &quot;A String&quot;, # [Optional] If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.
                  &quot;qualifierString&quot;: &quot;A String&quot;,
                  &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                  &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                  &quot;qualifierEncoded&quot;: &quot;A String&quot;, # [Required] Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as field_name.
                  &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set, only the latest version of value in this column are exposed. &#x27;onlyReadLatest&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;onlyReadLatest&#x27; is set at both levels.
                },
              ],
              &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
              &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
            },
          ],
          &quot;ignoreUnspecifiedColumnFamilies&quot;: True or False, # [Optional] If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.
        },
        &quot;schema&quot;: { # [Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats.
          &quot;fields&quot;: [ # Describes the fields in a table.
            {
              &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
              &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
              &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
              &quot;policyTags&quot;: {
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
            },
          ],
        },
        &quot;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
        &quot;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
          &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
          &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
        },
        &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
        &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
          &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
          &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
        },
        &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
        &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
      },
      &quot;model&quot;: { # [Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run &#x27;PREDICT&#x27; queries.
        &quot;modelOptions&quot;: { # [Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.
          &quot;lossType&quot;: &quot;A String&quot;,
          &quot;modelType&quot;: &quot;A String&quot;,
          &quot;labels&quot;: [
            &quot;A String&quot;,
          ],
        },
        &quot;trainingRuns&quot;: [ # [Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query.
          {
            &quot;iterationResults&quot;: [ # [Output-only, Beta] List of each iteration results.
              {
                &quot;durationMs&quot;: &quot;A String&quot;, # [Output-only, Beta] Time taken to run the training iteration in milliseconds.
                &quot;trainingLoss&quot;: 3.14, # [Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type.
                &quot;evalLoss&quot;: 3.14, # [Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows.
                &quot;index&quot;: 42, # [Output-only, Beta] Index of the ML training iteration, starting from zero for each training run.
                &quot;learnRate&quot;: 3.14, # [Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant.
              },
            ],
            &quot;startTime&quot;: &quot;A String&quot;, # [Output-only, Beta] Training run start time in milliseconds since the epoch.
            &quot;trainingOptions&quot;: { # [Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.
              &quot;l1Reg&quot;: 3.14,
              &quot;maxIteration&quot;: &quot;A String&quot;,
              &quot;learnRate&quot;: 3.14,
              &quot;minRelProgress&quot;: 3.14,
              &quot;l2Reg&quot;: 3.14,
              &quot;warmStart&quot;: True or False,
              &quot;learnRateStrategy&quot;: &quot;A String&quot;,
              &quot;lineSearchInitLearnRate&quot;: 3.14,
              &quot;earlyStop&quot;: True or False,
            },
            &quot;state&quot;: &quot;A String&quot;, # [Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user.
          },
        ],
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
      &quot;expirationTime&quot;: &quot;A String&quot;, # [Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables 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 tables.
      &quot;kind&quot;: &quot;bigquery#table&quot;, # [Output-only] The type of the resource.
      &quot;description&quot;: &quot;A String&quot;, # [Optional] A user-friendly description of this table.
      &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was created, in milliseconds since the epoch.
      &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
          &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
        },
        &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
      },
      &quot;schema&quot;: { # [Optional] Describes the schema of this table.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
            &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
          },
        ],
      },
      &quot;id&quot;: &quot;A String&quot;, # [Output-only] An opaque ID uniquely identifying the table.
      &quot;requirePartitionFilter&quot;: false, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.
      &quot;materializedView&quot;: { # [Optional] Materialized view definition.
        &quot;query&quot;: &quot;A String&quot;, # [Required] A query whose result is persisted.
        &quot;enableRefresh&quot;: True or False, # [Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is &quot;true&quot;.
        &quot;refreshIntervalMs&quot;: &quot;A String&quot;, # [Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is &quot;1800000&quot; (30 minutes).
        &quot;lastRefreshTime&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The time when this materialized view was last modified, in milliseconds since the epoch.
      },
      &quot;tableReference&quot;: { # [Required] Reference describing the ID of this table.
        &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;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;lastModifiedTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
      &quot;type&quot;: &quot;A String&quot;, # [Output-only] Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered.
        &quot;fields&quot;: [ # [Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
          &quot;A String&quot;,
        ],
      },
      &quot;numRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
    }</pre>
</div>

<div class="method">
    <code class="details" id="setIamPolicy">setIamPolicy(resource, body=None)</code>
  <pre>Sets the access control policy on the specified resource. Replaces any
existing policy.

Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.

Args:
  resource: string, REQUIRED: The resource for which the policy is being specified.
See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `SetIamPolicy` method.
    &quot;updateMask&quot;: &quot;A String&quot;, # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
        # the fields in the mask will be modified. If no mask is provided, the
        # following default mask is used:
        # 
        # `paths: &quot;bindings, etag&quot;`
    &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access # REQUIRED: The complete policy to be applied to the `resource`. The size of
        # the policy is limited to a few 10s of KB. An empty policy is a
        # valid policy but certain Cloud Platform services (such as Projects)
        # might reject them.
        # controls for Google Cloud resources.
        #
        #
        # A `Policy` is a collection of `bindings`. A `binding` binds one or more
        # `members` to a single `role`. Members can be user accounts, service accounts,
        # Google groups, and domains (such as G Suite). A `role` is a named list of
        # permissions; each `role` can be an IAM predefined role or a user-created
        # custom role.
        #
        # For some types of Google Cloud resources, a `binding` can also specify a
        # `condition`, which is a logical expression that allows access to a resource
        # only if the expression evaluates to `true`. A condition can add constraints
        # based on attributes of the request, the resource, or both. To learn which
        # resources support conditions in their IAM policies, see the
        # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        #
        # **JSON example:**
        #
        #     {
        #       &quot;bindings&quot;: [
        #         {
        #           &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;,
        #           &quot;members&quot;: [
        #             &quot;user:mike@example.com&quot;,
        #             &quot;group:admins@example.com&quot;,
        #             &quot;domain:google.com&quot;,
        #             &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot;
        #           ]
        #         },
        #         {
        #           &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;,
        #           &quot;members&quot;: [
        #             &quot;user:eve@example.com&quot;
        #           ],
        #           &quot;condition&quot;: {
        #             &quot;title&quot;: &quot;expirable access&quot;,
        #             &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;,
        #             &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;,
        #           }
        #         }
        #       ],
        #       &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;,
        #       &quot;version&quot;: 3
        #     }
        #
        # **YAML example:**
        #
        #     bindings:
        #     - members:
        #       - user:mike@example.com
        #       - group:admins@example.com
        #       - domain:google.com
        #       - serviceAccount:my-project-id@appspot.gserviceaccount.com
        #       role: roles/resourcemanager.organizationAdmin
        #     - members:
        #       - user:eve@example.com
        #       role: roles/resourcemanager.organizationViewer
        #       condition:
        #         title: expirable access
        #         description: Does not grant access after Sep 2020
        #         expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)
        #     - etag: BwWWja0YfJA=
        #     - version: 3
        #
        # For a description of IAM and its features, see the
        # [IAM documentation](https://cloud.google.com/iam/docs/).
      &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
          # prevent simultaneous updates of a policy from overwriting each other.
          # It is strongly suggested that systems make use of the `etag` in the
          # read-modify-write cycle to perform policy updates in order to avoid race
          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
          # systems are expected to put that etag in the request to `setIamPolicy` to
          # ensure that their change will be applied to the same version of the policy.
          #
          # **Important:** If you use IAM Conditions, you must include the `etag` field
          # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
          # you to overwrite a version `3` policy with a version `1` policy, and all of
          # the conditions in the version `3` policy are lost.
      &quot;version&quot;: 42, # Specifies the format of the policy.
          #
          # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
          # are rejected.
          #
          # Any operation that affects conditional role bindings must specify version
          # `3`. This requirement applies to the following operations:
          #
          # * Getting a policy that includes a conditional role binding
          # * Adding a conditional role binding to a policy
          # * Changing a conditional role binding in a policy
          # * Removing any role binding, with or without a condition, from a policy
          #   that includes conditions
          #
          # **Important:** If you use IAM Conditions, you must include the `etag` field
          # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
          # you to overwrite a version `3` policy with a version `1` policy, and all of
          # the conditions in the version `3` policy are lost.
          #
          # If a policy does not include any conditions, operations on that policy may
          # specify any valid version or leave the field unset.
          #
          # To learn which resources support conditions in their IAM policies, see the
          # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
      &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
        { # Specifies the audit configuration for a service.
            # The configuration determines which permission types are logged, and what
            # identities, if any, are exempted from logging.
            # An AuditConfig must have one or more AuditLogConfigs.
            #
            # If there are AuditConfigs for both `allServices` and a specific service,
            # the union of the two AuditConfigs is used for that service: the log_types
            # specified in each AuditConfig are enabled, and the exempted_members in each
            # AuditLogConfig are exempted.
            #
            # Example Policy with multiple AuditConfigs:
            #
            #     {
            #       &quot;audit_configs&quot;: [
            #         {
            #           &quot;service&quot;: &quot;allServices&quot;
            #           &quot;audit_log_configs&quot;: [
            #             {
            #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
            #               &quot;exempted_members&quot;: [
            #                 &quot;user:jose@example.com&quot;
            #               ]
            #             },
            #             {
            #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
            #             },
            #             {
            #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;,
            #             }
            #           ]
            #         },
            #         {
            #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;
            #           &quot;audit_log_configs&quot;: [
            #             {
            #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
            #             },
            #             {
            #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
            #               &quot;exempted_members&quot;: [
            #                 &quot;user:aliya@example.com&quot;
            #               ]
            #             }
            #           ]
            #         }
            #       ]
            #     }
            #
            # For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
            # logging. It also exempts jose@example.com from DATA_READ logging, and
            # aliya@example.com from DATA_WRITE logging.
          &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging.
              # For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
              # `allServices` is a special value that covers all services.
          &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
            { # Provides the configuration for logging a type of permissions.
                # Example:
                #
                #     {
                #       &quot;audit_log_configs&quot;: [
                #         {
                #           &quot;log_type&quot;: &quot;DATA_READ&quot;,
                #           &quot;exempted_members&quot;: [
                #             &quot;user:jose@example.com&quot;
                #           ]
                #         },
                #         {
                #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
                #         }
                #       ]
                #     }
                #
                # This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting
                # jose@example.com from DATA_READ logging.
              &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of
                  # permission.
                  # Follows the same format of Binding.members.
                &quot;A String&quot;,
              ],
              &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
            },
          ],
        },
      ],
      &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a
          # `condition` that determines how and when the `bindings` are applied. Each
          # of the `bindings` must contain at least one member.
        { # Associates `members` with a `role`.
          &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
          &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
              #
              # If the condition evaluates to `true`, then this binding applies to the
              # current request.
              #
              # If the condition evaluates to `false`, then this binding does not apply to
              # the current request. However, a different role binding might grant the same
              # role to one or more of the members in this binding.
              #
              # To learn which resources support conditions in their IAM policies, see the
              # [IAM
              # documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
              # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
              # are documented at https://github.com/google/cel-spec.
              #
              # Example (Comparison):
              #
              #     title: &quot;Summary size limit&quot;
              #     description: &quot;Determines if a summary is less than 100 chars&quot;
              #     expression: &quot;document.summary.size() &lt; 100&quot;
              #
              # Example (Equality):
              #
              #     title: &quot;Requestor is owner&quot;
              #     description: &quot;Determines if requestor is the document owner&quot;
              #     expression: &quot;document.owner == request.auth.claims.email&quot;
              #
              # Example (Logic):
              #
              #     title: &quot;Public documents&quot;
              #     description: &quot;Determine whether the document should be publicly visible&quot;
              #     expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot;
              #
              # Example (Data Manipulation):
              #
              #     title: &quot;Notification string&quot;
              #     description: &quot;Create a notification string with a timestamp.&quot;
              #     expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot;
              #
              # The exact variables and functions that may be referenced within an expression
              # are determined by the service that evaluates it. See the service
              # documentation for additional information.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
                # describes the expression, e.g. when hovered over it in a UI.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
                # syntax.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
                # its purpose. This can be used e.g. in UIs which allow to enter the
                # expression.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
                # reporting, e.g. a file name and a position in the file.
          },
          &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
              # `members` can have the following values:
              #
              # * `allUsers`: A special identifier that represents anyone who is
              #    on the internet; with or without a Google account.
              #
              # * `allAuthenticatedUsers`: A special identifier that represents anyone
              #    who is authenticated with a Google account or a service account.
              #
              # * `user:{emailid}`: An email address that represents a specific Google
              #    account. For example, `alice@example.com` .
              #
              #
              # * `serviceAccount:{emailid}`: An email address that represents a service
              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
              #
              # * `group:{emailid}`: An email address that represents a Google group.
              #    For example, `admins@example.com`.
              #
              # * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique
              #    identifier) representing a user that has been recently deleted. For
              #    example, `alice@example.com?uid=123456789012345678901`. If the user is
              #    recovered, this value reverts to `user:{emailid}` and the recovered user
              #    retains the role in the binding.
              #
              # * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus
              #    unique identifier) representing a service account that has been recently
              #    deleted. For example,
              #    `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
              #    If the service account is undeleted, this value reverts to
              #    `serviceAccount:{emailid}` and the undeleted service account retains the
              #    role in the binding.
              #
              # * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique
              #    identifier) representing a Google group that has been recently
              #    deleted. For example, `admins@example.com?uid=123456789012345678901`. If
              #    the group is recovered, this value reverts to `group:{emailid}` and the
              #    recovered group retains the role in the binding.
              #
              #
              # * `domain:{domain}`: The G Suite domain (primary) that represents all the
              #    users of that domain. For example, `google.com` or `example.com`.
              #
            &quot;A String&quot;,
          ],
        },
      ],
    },
  }


Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access
      # controls for Google Cloud resources.
      #
      #
      # A `Policy` is a collection of `bindings`. A `binding` binds one or more
      # `members` to a single `role`. Members can be user accounts, service accounts,
      # Google groups, and domains (such as G Suite). A `role` is a named list of
      # permissions; each `role` can be an IAM predefined role or a user-created
      # custom role.
      #
      # For some types of Google Cloud resources, a `binding` can also specify a
      # `condition`, which is a logical expression that allows access to a resource
      # only if the expression evaluates to `true`. A condition can add constraints
      # based on attributes of the request, the resource, or both. To learn which
      # resources support conditions in their IAM policies, see the
      # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
      #
      # **JSON example:**
      #
      #     {
      #       &quot;bindings&quot;: [
      #         {
      #           &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;,
      #           &quot;members&quot;: [
      #             &quot;user:mike@example.com&quot;,
      #             &quot;group:admins@example.com&quot;,
      #             &quot;domain:google.com&quot;,
      #             &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot;
      #           ]
      #         },
      #         {
      #           &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;,
      #           &quot;members&quot;: [
      #             &quot;user:eve@example.com&quot;
      #           ],
      #           &quot;condition&quot;: {
      #             &quot;title&quot;: &quot;expirable access&quot;,
      #             &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;,
      #             &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;,
      #           }
      #         }
      #       ],
      #       &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;,
      #       &quot;version&quot;: 3
      #     }
      #
      # **YAML example:**
      #
      #     bindings:
      #     - members:
      #       - user:mike@example.com
      #       - group:admins@example.com
      #       - domain:google.com
      #       - serviceAccount:my-project-id@appspot.gserviceaccount.com
      #       role: roles/resourcemanager.organizationAdmin
      #     - members:
      #       - user:eve@example.com
      #       role: roles/resourcemanager.organizationViewer
      #       condition:
      #         title: expirable access
      #         description: Does not grant access after Sep 2020
      #         expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)
      #     - etag: BwWWja0YfJA=
      #     - version: 3
      #
      # For a description of IAM and its features, see the
      # [IAM documentation](https://cloud.google.com/iam/docs/).
    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
        # prevent simultaneous updates of a policy from overwriting each other.
        # It is strongly suggested that systems make use of the `etag` in the
        # read-modify-write cycle to perform policy updates in order to avoid race
        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
        # systems are expected to put that etag in the request to `setIamPolicy` to
        # ensure that their change will be applied to the same version of the policy.
        #
        # **Important:** If you use IAM Conditions, you must include the `etag` field
        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
        # you to overwrite a version `3` policy with a version `1` policy, and all of
        # the conditions in the version `3` policy are lost.
    &quot;version&quot;: 42, # Specifies the format of the policy.
        #
        # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
        # are rejected.
        #
        # Any operation that affects conditional role bindings must specify version
        # `3`. This requirement applies to the following operations:
        #
        # * Getting a policy that includes a conditional role binding
        # * Adding a conditional role binding to a policy
        # * Changing a conditional role binding in a policy
        # * Removing any role binding, with or without a condition, from a policy
        #   that includes conditions
        #
        # **Important:** If you use IAM Conditions, you must include the `etag` field
        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
        # you to overwrite a version `3` policy with a version `1` policy, and all of
        # the conditions in the version `3` policy are lost.
        #
        # If a policy does not include any conditions, operations on that policy may
        # specify any valid version or leave the field unset.
        #
        # To learn which resources support conditions in their IAM policies, see the
        # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
    &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
      { # Specifies the audit configuration for a service.
          # The configuration determines which permission types are logged, and what
          # identities, if any, are exempted from logging.
          # An AuditConfig must have one or more AuditLogConfigs.
          #
          # If there are AuditConfigs for both `allServices` and a specific service,
          # the union of the two AuditConfigs is used for that service: the log_types
          # specified in each AuditConfig are enabled, and the exempted_members in each
          # AuditLogConfig are exempted.
          #
          # Example Policy with multiple AuditConfigs:
          #
          #     {
          #       &quot;audit_configs&quot;: [
          #         {
          #           &quot;service&quot;: &quot;allServices&quot;
          #           &quot;audit_log_configs&quot;: [
          #             {
          #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
          #               &quot;exempted_members&quot;: [
          #                 &quot;user:jose@example.com&quot;
          #               ]
          #             },
          #             {
          #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
          #             },
          #             {
          #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;,
          #             }
          #           ]
          #         },
          #         {
          #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;
          #           &quot;audit_log_configs&quot;: [
          #             {
          #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
          #             },
          #             {
          #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
          #               &quot;exempted_members&quot;: [
          #                 &quot;user:aliya@example.com&quot;
          #               ]
          #             }
          #           ]
          #         }
          #       ]
          #     }
          #
          # For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
          # logging. It also exempts jose@example.com from DATA_READ logging, and
          # aliya@example.com from DATA_WRITE logging.
        &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging.
            # For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
            # `allServices` is a special value that covers all services.
        &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
          { # Provides the configuration for logging a type of permissions.
              # Example:
              #
              #     {
              #       &quot;audit_log_configs&quot;: [
              #         {
              #           &quot;log_type&quot;: &quot;DATA_READ&quot;,
              #           &quot;exempted_members&quot;: [
              #             &quot;user:jose@example.com&quot;
              #           ]
              #         },
              #         {
              #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
              #         }
              #       ]
              #     }
              #
              # This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting
              # jose@example.com from DATA_READ logging.
            &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of
                # permission.
                # Follows the same format of Binding.members.
              &quot;A String&quot;,
            ],
            &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
          },
        ],
      },
    ],
    &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a
        # `condition` that determines how and when the `bindings` are applied. Each
        # of the `bindings` must contain at least one member.
      { # Associates `members` with a `role`.
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
            #
            # If the condition evaluates to `true`, then this binding applies to the
            # current request.
            #
            # If the condition evaluates to `false`, then this binding does not apply to
            # the current request. However, a different role binding might grant the same
            # role to one or more of the members in this binding.
            #
            # To learn which resources support conditions in their IAM policies, see the
            # [IAM
            # documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
            # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
            # are documented at https://github.com/google/cel-spec.
            #
            # Example (Comparison):
            #
            #     title: &quot;Summary size limit&quot;
            #     description: &quot;Determines if a summary is less than 100 chars&quot;
            #     expression: &quot;document.summary.size() &lt; 100&quot;
            #
            # Example (Equality):
            #
            #     title: &quot;Requestor is owner&quot;
            #     description: &quot;Determines if requestor is the document owner&quot;
            #     expression: &quot;document.owner == request.auth.claims.email&quot;
            #
            # Example (Logic):
            #
            #     title: &quot;Public documents&quot;
            #     description: &quot;Determine whether the document should be publicly visible&quot;
            #     expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot;
            #
            # Example (Data Manipulation):
            #
            #     title: &quot;Notification string&quot;
            #     description: &quot;Create a notification string with a timestamp.&quot;
            #     expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot;
            #
            # The exact variables and functions that may be referenced within an expression
            # are determined by the service that evaluates it. See the service
            # documentation for additional information.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
              # describes the expression, e.g. when hovered over it in a UI.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
              # syntax.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
              # its purpose. This can be used e.g. in UIs which allow to enter the
              # expression.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
              # reporting, e.g. a file name and a position in the file.
        },
        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
            # `members` can have the following values:
            #
            # * `allUsers`: A special identifier that represents anyone who is
            #    on the internet; with or without a Google account.
            #
            # * `allAuthenticatedUsers`: A special identifier that represents anyone
            #    who is authenticated with a Google account or a service account.
            #
            # * `user:{emailid}`: An email address that represents a specific Google
            #    account. For example, `alice@example.com` .
            #
            #
            # * `serviceAccount:{emailid}`: An email address that represents a service
            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
            #
            # * `group:{emailid}`: An email address that represents a Google group.
            #    For example, `admins@example.com`.
            #
            # * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique
            #    identifier) representing a user that has been recently deleted. For
            #    example, `alice@example.com?uid=123456789012345678901`. If the user is
            #    recovered, this value reverts to `user:{emailid}` and the recovered user
            #    retains the role in the binding.
            #
            # * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus
            #    unique identifier) representing a service account that has been recently
            #    deleted. For example,
            #    `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
            #    If the service account is undeleted, this value reverts to
            #    `serviceAccount:{emailid}` and the undeleted service account retains the
            #    role in the binding.
            #
            # * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique
            #    identifier) representing a Google group that has been recently
            #    deleted. For example, `admins@example.com?uid=123456789012345678901`. If
            #    the group is recovered, this value reverts to `group:{emailid}` and the
            #    recovered group retains the role in the binding.
            #
            #
            # * `domain:{domain}`: The G Suite domain (primary) that represents all the
            #    users of that domain. For example, `google.com` or `example.com`.
            #
          &quot;A String&quot;,
        ],
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None)</code>
  <pre>Returns permissions that a caller has on the specified resource.
If the resource does not exist, this will return an empty set of
permissions, not a `NOT_FOUND` error.

Note: This operation is designed to be used for building permission-aware
UIs and command-line tools, not for authorization checking. This operation
may &quot;fail open&quot; without warning.

Args:
  resource: string, REQUIRED: The resource for which the policy detail is being requested.
See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `TestIamPermissions` method.
    &quot;permissions&quot;: [ # The set of permissions to check for the `resource`. Permissions with
        # wildcards (such as &#x27;*&#x27; or &#x27;storage.*&#x27;) are not allowed. For more
        # information see
        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
      &quot;A String&quot;,
    ],
  }


Returns:
  An object of the form:

    { # Response message for `TestIamPermissions` method.
    &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is
        # allowed.
      &quot;A String&quot;,
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(projectId, datasetId, tableId, body=None)</code>
  <pre>Updates information in an existing table. The update method replaces the entire table resource, whereas the patch method only replaces fields that are provided in the submitted table resource.

Args:
  projectId: string, Project ID of the table to update (required)
  datasetId: string, Dataset ID of the table to update (required)
  tableId: string, Table ID of the table to update (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;view&quot;: { # [Optional] The view definition.
      &quot;useLegacySql&quot;: True or False, # Specifies whether to use BigQuery&#x27;s legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
      &quot;query&quot;: &quot;A String&quot;, # [Required] A query that BigQuery executes when the view is referenced.
      &quot;userDefinedFunctionResources&quot;: [ # Describes user-defined function resources used in the query.
        { # This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions
          &quot;inlineCode&quot;: &quot;A String&quot;, # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
          &quot;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
        },
      ],
    },
    &quot;numLongTermBytes&quot;: &quot;A String&quot;, # [Output-only] The number of bytes in the table that are considered &quot;long-term storage&quot;.
    &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change.
    &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys).
      &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;streamingBuffer&quot;: { # [Output-only] Contains information regarding this table&#x27;s streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
      &quot;estimatedBytes&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
      &quot;estimatedRows&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of rows currently in the streaming buffer.
      &quot;oldestEntryTime&quot;: &quot;A String&quot;, # [Output-only] Contains the timestamp of the oldest entry in the streaming buffer, in milliseconds since the epoch, if the streaming buffer is available.
    },
    &quot;numBytes&quot;: &quot;A String&quot;, # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
    &quot;location&quot;: &quot;A String&quot;, # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
    &quot;timePartitioning&quot;: { # Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
      &quot;requirePartitionFilter&quot;: True or False,
      &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
      &quot;expirationMs&quot;: &quot;A String&quot;, # [Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value.
      &quot;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
    },
    &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] A descriptive name for this table.
    &quot;labels&quot;: { # The labels associated with this table. You can use these to organize and group your tables. 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;numPhysicalBytes&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.
    &quot;externalDataConfiguration&quot;: { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
      &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
      &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
      &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
        &quot;A String&quot;,
      ],
      &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
        &quot;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
        &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
        &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
        &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
        &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
        &quot;allowQuotedNewlines&quot;: True or False, # [Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
      },
      &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
        &quot;readRowkeyAsString&quot;: True or False, # [Optional] If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.
        &quot;columnFamilies&quot;: [ # [Optional] List of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the &#x27;type&#x27; field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.
          {
            &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
            &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
            &quot;columns&quot;: [ # [Optional] Lists of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as .. Other columns can be accessed as a list through .Column field.
              {
                &quot;fieldName&quot;: &quot;A String&quot;, # [Optional] If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.
                &quot;qualifierString&quot;: &quot;A String&quot;,
                &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                &quot;qualifierEncoded&quot;: &quot;A String&quot;, # [Required] Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as field_name.
                &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set, only the latest version of value in this column are exposed. &#x27;onlyReadLatest&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;onlyReadLatest&#x27; is set at both levels.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
            &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
          },
        ],
        &quot;ignoreUnspecifiedColumnFamilies&quot;: True or False, # [Optional] If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.
      },
      &quot;schema&quot;: { # [Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
            &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
          },
        ],
      },
      &quot;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
      &quot;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
        &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
        &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
      },
      &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
      &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
        &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
        &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
      },
      &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
      &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
    },
    &quot;model&quot;: { # [Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run &#x27;PREDICT&#x27; queries.
      &quot;modelOptions&quot;: { # [Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.
        &quot;lossType&quot;: &quot;A String&quot;,
        &quot;modelType&quot;: &quot;A String&quot;,
        &quot;labels&quot;: [
          &quot;A String&quot;,
        ],
      },
      &quot;trainingRuns&quot;: [ # [Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query.
        {
          &quot;iterationResults&quot;: [ # [Output-only, Beta] List of each iteration results.
            {
              &quot;durationMs&quot;: &quot;A String&quot;, # [Output-only, Beta] Time taken to run the training iteration in milliseconds.
              &quot;trainingLoss&quot;: 3.14, # [Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type.
              &quot;evalLoss&quot;: 3.14, # [Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows.
              &quot;index&quot;: 42, # [Output-only, Beta] Index of the ML training iteration, starting from zero for each training run.
              &quot;learnRate&quot;: 3.14, # [Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant.
            },
          ],
          &quot;startTime&quot;: &quot;A String&quot;, # [Output-only, Beta] Training run start time in milliseconds since the epoch.
          &quot;trainingOptions&quot;: { # [Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.
            &quot;l1Reg&quot;: 3.14,
            &quot;maxIteration&quot;: &quot;A String&quot;,
            &quot;learnRate&quot;: 3.14,
            &quot;minRelProgress&quot;: 3.14,
            &quot;l2Reg&quot;: 3.14,
            &quot;warmStart&quot;: True or False,
            &quot;learnRateStrategy&quot;: &quot;A String&quot;,
            &quot;lineSearchInitLearnRate&quot;: 3.14,
            &quot;earlyStop&quot;: True or False,
          },
          &quot;state&quot;: &quot;A String&quot;, # [Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user.
        },
      ],
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
    &quot;expirationTime&quot;: &quot;A String&quot;, # [Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables 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 tables.
    &quot;kind&quot;: &quot;bigquery#table&quot;, # [Output-only] The type of the resource.
    &quot;description&quot;: &quot;A String&quot;, # [Optional] A user-friendly description of this table.
    &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was created, in milliseconds since the epoch.
    &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
      &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
        &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
        &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
        &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
      },
      &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
    },
    &quot;schema&quot;: { # [Optional] Describes the schema of this table.
      &quot;fields&quot;: [ # Describes the fields in a table.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
          &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
            &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
              &quot;A String&quot;,
            ],
          },
          &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
          &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
          &quot;policyTags&quot;: {
            &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
              &quot;A String&quot;,
            ],
          },
          &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
            # Object with schema name: TableFieldSchema
          ],
        },
      ],
    },
    &quot;id&quot;: &quot;A String&quot;, # [Output-only] An opaque ID uniquely identifying the table.
    &quot;requirePartitionFilter&quot;: false, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.
    &quot;materializedView&quot;: { # [Optional] Materialized view definition.
      &quot;query&quot;: &quot;A String&quot;, # [Required] A query whose result is persisted.
      &quot;enableRefresh&quot;: True or False, # [Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is &quot;true&quot;.
      &quot;refreshIntervalMs&quot;: &quot;A String&quot;, # [Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is &quot;1800000&quot; (30 minutes).
      &quot;lastRefreshTime&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The time when this materialized view was last modified, in milliseconds since the epoch.
    },
    &quot;tableReference&quot;: { # [Required] Reference describing the ID of this table.
      &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;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;lastModifiedTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
    &quot;type&quot;: &quot;A String&quot;, # [Output-only] Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.
    &quot;clustering&quot;: { # [Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered.
      &quot;fields&quot;: [ # [Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
        &quot;A String&quot;,
      ],
    },
    &quot;numRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
  }


Returns:
  An object of the form:

    {
      &quot;view&quot;: { # [Optional] The view definition.
        &quot;useLegacySql&quot;: True or False, # Specifies whether to use BigQuery&#x27;s legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
        &quot;query&quot;: &quot;A String&quot;, # [Required] A query that BigQuery executes when the view is referenced.
        &quot;userDefinedFunctionResources&quot;: [ # Describes user-defined function resources used in the query.
          { # This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions
            &quot;inlineCode&quot;: &quot;A String&quot;, # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
            &quot;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
          },
        ],
      },
      &quot;numLongTermBytes&quot;: &quot;A String&quot;, # [Output-only] The number of bytes in the table that are considered &quot;long-term storage&quot;.
      &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change.
      &quot;encryptionConfiguration&quot;: { # Custom encryption configuration (e.g., Cloud KMS keys).
        &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;streamingBuffer&quot;: { # [Output-only] Contains information regarding this table&#x27;s streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
        &quot;estimatedBytes&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
        &quot;estimatedRows&quot;: &quot;A String&quot;, # [Output-only] A lower-bound estimate of the number of rows currently in the streaming buffer.
        &quot;oldestEntryTime&quot;: &quot;A String&quot;, # [Output-only] Contains the timestamp of the oldest entry in the streaming buffer, in milliseconds since the epoch, if the streaming buffer is available.
      },
      &quot;numBytes&quot;: &quot;A String&quot;, # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
      &quot;location&quot;: &quot;A String&quot;, # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
      &quot;timePartitioning&quot;: { # Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;requirePartitionFilter&quot;: True or False,
        &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
        &quot;expirationMs&quot;: &quot;A String&quot;, # [Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value.
        &quot;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
      },
      &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] A descriptive name for this table.
      &quot;labels&quot;: { # The labels associated with this table. You can use these to organize and group your tables. 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;numPhysicalBytes&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.
      &quot;externalDataConfiguration&quot;: { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
        &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
        &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
        &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
          &quot;A String&quot;,
        ],
        &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
          &quot;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
          &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
          &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
          &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
          &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
          &quot;allowQuotedNewlines&quot;: True or False, # [Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
        },
        &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
          &quot;readRowkeyAsString&quot;: True or False, # [Optional] If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.
          &quot;columnFamilies&quot;: [ # [Optional] List of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the &#x27;type&#x27; field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.
            {
              &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
              &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
              &quot;columns&quot;: [ # [Optional] Lists of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as .. Other columns can be accessed as a list through .Column field.
                {
                  &quot;fieldName&quot;: &quot;A String&quot;, # [Optional] If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.
                  &quot;qualifierString&quot;: &quot;A String&quot;,
                  &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                  &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                  &quot;qualifierEncoded&quot;: &quot;A String&quot;, # [Required] Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as field_name.
                  &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set, only the latest version of value in this column are exposed. &#x27;onlyReadLatest&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;onlyReadLatest&#x27; is set at both levels.
                },
              ],
              &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
              &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
            },
          ],
          &quot;ignoreUnspecifiedColumnFamilies&quot;: True or False, # [Optional] If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.
        },
        &quot;schema&quot;: { # [Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats.
          &quot;fields&quot;: [ # Describes the fields in a table.
            {
              &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
              &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
              &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
              &quot;policyTags&quot;: {
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
            },
          ],
        },
        &quot;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
        &quot;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
          &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
          &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
        },
        &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
        &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
          &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
          &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
        },
        &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
        &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
      },
      &quot;model&quot;: { # [Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run &#x27;PREDICT&#x27; queries.
        &quot;modelOptions&quot;: { # [Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.
          &quot;lossType&quot;: &quot;A String&quot;,
          &quot;modelType&quot;: &quot;A String&quot;,
          &quot;labels&quot;: [
            &quot;A String&quot;,
          ],
        },
        &quot;trainingRuns&quot;: [ # [Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query.
          {
            &quot;iterationResults&quot;: [ # [Output-only, Beta] List of each iteration results.
              {
                &quot;durationMs&quot;: &quot;A String&quot;, # [Output-only, Beta] Time taken to run the training iteration in milliseconds.
                &quot;trainingLoss&quot;: 3.14, # [Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type.
                &quot;evalLoss&quot;: 3.14, # [Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows.
                &quot;index&quot;: 42, # [Output-only, Beta] Index of the ML training iteration, starting from zero for each training run.
                &quot;learnRate&quot;: 3.14, # [Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant.
              },
            ],
            &quot;startTime&quot;: &quot;A String&quot;, # [Output-only, Beta] Training run start time in milliseconds since the epoch.
            &quot;trainingOptions&quot;: { # [Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.
              &quot;l1Reg&quot;: 3.14,
              &quot;maxIteration&quot;: &quot;A String&quot;,
              &quot;learnRate&quot;: 3.14,
              &quot;minRelProgress&quot;: 3.14,
              &quot;l2Reg&quot;: 3.14,
              &quot;warmStart&quot;: True or False,
              &quot;learnRateStrategy&quot;: &quot;A String&quot;,
              &quot;lineSearchInitLearnRate&quot;: 3.14,
              &quot;earlyStop&quot;: True or False,
            },
            &quot;state&quot;: &quot;A String&quot;, # [Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user.
          },
        ],
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
      &quot;expirationTime&quot;: &quot;A String&quot;, # [Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables 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 tables.
      &quot;kind&quot;: &quot;bigquery#table&quot;, # [Output-only] The type of the resource.
      &quot;description&quot;: &quot;A String&quot;, # [Optional] A user-friendly description of this table.
      &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was created, in milliseconds since the epoch.
      &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
          &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
        },
        &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
      },
      &quot;schema&quot;: { # [Optional] Describes the schema of this table.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
            &quot;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            &quot;categories&quot;: { # [Optional] The categories attached to this field, used for field-level access control.
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/taxonomies/2/categories/3&quot;. At most 5 categories are allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &quot;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
          },
        ],
      },
      &quot;id&quot;: &quot;A String&quot;, # [Output-only] An opaque ID uniquely identifying the table.
      &quot;requirePartitionFilter&quot;: false, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.
      &quot;materializedView&quot;: { # [Optional] Materialized view definition.
        &quot;query&quot;: &quot;A String&quot;, # [Required] A query whose result is persisted.
        &quot;enableRefresh&quot;: True or False, # [Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is &quot;true&quot;.
        &quot;refreshIntervalMs&quot;: &quot;A String&quot;, # [Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is &quot;1800000&quot; (30 minutes).
        &quot;lastRefreshTime&quot;: &quot;A String&quot;, # [Output-only] [TrustedTester] The time when this materialized view was last modified, in milliseconds since the epoch.
      },
      &quot;tableReference&quot;: { # [Required] Reference describing the ID of this table.
        &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;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;lastModifiedTime&quot;: &quot;A String&quot;, # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
      &quot;type&quot;: &quot;A String&quot;, # [Output-only] Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered.
        &quot;fields&quot;: [ # [Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
          &quot;A String&quot;,
        ],
      },
      &quot;numRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
    }</pre>
</div>

</body></html>