<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.jobs.html">jobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(projectId, jobId, location=None)</a></code></p>
<p class="firstline">Requests that a job be cancelled. This call will return immediately, and the client will need to poll for the job status to see if the cancel completed successfully. Cancelled jobs may still incur costs.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, jobId, location=None)</a></code></p>
<p class="firstline">Requests that a job is deleted. This call will return when the job is deleted. This method is available in limited preview.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, jobId, location=None)</a></code></p>
<p class="firstline">Returns information about a specific job. Job information is available for a six month period after creation. Requires that you're the person who ran the job, or have the Is Owner project role.</p>
<p class="toc_element">
  <code><a href="#getQueryResults">getQueryResults(projectId, jobId, location=None, maxResults=None, pageToken=None, startIndex=None, timeoutMs=None)</a></code></p>
<p class="firstline">Retrieves the results of a query job.</p>
<p class="toc_element">
  <code><a href="#getQueryResults_next">getQueryResults_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="#insert">insert(projectId, body=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Starts a new asynchronous job. Requires the Can View project role.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, allUsers=None, maxCreationTime=None, maxResults=None, minCreationTime=None, pageToken=None, parentJobId=None, projection=None, stateFilter=None)</a></code></p>
<p class="firstline">Lists all jobs that you started in the specified project. Job information is available for a six month period after creation. The job list is sorted in reverse chronological order, by job creation time. Requires the Can View project role, or the Is Owner project role if you set the allUsers property.</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="#query">query(projectId, body=None)</a></code></p>
<p class="firstline">Runs a BigQuery SQL query synchronously and returns query results if the query completes within a specified timeout.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(projectId, jobId, location=None)</code>
  <pre>Requests that a job be cancelled. This call will return immediately, and the client will need to poll for the job status to see if the cancel completed successfully. Cancelled jobs may still incur costs.

Args:
  projectId: string, [Required] Project ID of the job to cancel (required)
  jobId: string, [Required] Job ID of the job to cancel (required)
  location: string, The geographic location of the job. Required except for US and EU. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.

Returns:
  An object of the form:

    {
  &quot;job&quot;: { # The final state of the job.
    &quot;configuration&quot;: { # [Required] Describes the job configuration.
      &quot;copy&quot;: { # [Pick one] Copies a table.
        &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
        &quot;destinationEncryptionConfiguration&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;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
        &quot;destinationTable&quot;: { # [Required] The destination table
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
        &quot;sourceTable&quot;: { # [Pick one] Source table to copy.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
          {
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
      },
      &quot;dryRun&quot;: True or False, # [Optional] If set, don&#x27;t actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn&#x27;t a dry run. Behavior of non-query jobs is undefined.
      &quot;extract&quot;: { # [Pick one] Configures an extract job.
        &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE. The default value is NONE. DEFLATE and SNAPPY are only supported for Avro. Not applicable when extracting models.
        &quot;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON, PARQUET or AVRO for tables and ML_TF_SAVED_MODEL or ML_XGBOOST_BOOSTER for models. The default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV. The default value for models is ML_TF_SAVED_MODEL.
        &quot;destinationUri&quot;: &quot;A String&quot;, # [Pick one] DEPRECATED: Use destinationUris instead, passing only one URI as necessary. The fully-qualified Google Cloud Storage URI where the extracted table should be written.
        &quot;destinationUris&quot;: [ # [Pick one] A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written.
          &quot;A String&quot;,
        ],
        &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] Delimiter to use between fields in the exported data. Default is &#x27;,&#x27;. Not applicable when extracting models.
        &quot;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
        &quot;sourceModel&quot;: { # A reference to the model being exported.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
          &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
        },
        &quot;sourceTable&quot;: { # A reference to the table being exported.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;useAvroLogicalTypes&quot;: True or False, # [Optional] If destinationFormat is set to &quot;AVRO&quot;, this flag indicates whether to enable extracting applicable column types (such as TIMESTAMP) to their corresponding AVRO logical types (timestamp-micros), instead of only using their raw types (avro-long). Not applicable when extracting models.
      },
      &quot;jobTimeoutMs&quot;: &quot;A String&quot;, # [Optional] Job timeout in milliseconds. If this time limit is exceeded, BigQuery may attempt to terminate the job.
      &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
      &quot;labels&quot;: { # The labels associated with this job. You can use these to organize and group your jobs. 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;load&quot;: { # [Pick one] Configures a load job.
        &quot;allowJaggedRows&quot;: True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. 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. Only applicable to CSV, ignored for other formats.
        &quot;allowQuotedNewlines&quot;: True or False, # Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
        &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
        &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
        &quot;decimalTargetTypes&quot;: [ # Defines the list of possible SQL data types to which the source decimal values are converted. This list and the precision and the scale parameters of the decimal field determine the target type. In the order of NUMERIC, BIGNUMERIC ([Preview](/products/#product-launch-stages)), and STRING, a type is picked if it is in the specified list and if it supports the precision and the scale. STRING supports all precision and scale values. If none of the listed types supports the precision and the scale, the type supporting the widest range in the specified list is picked, and if a value exceeds the supported range when reading the data, an error will be thrown. Example: Suppose the value of this field is [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. If (precision,scale) is: * (38,9) -&gt; NUMERIC; * (39,9) -&gt; BIGNUMERIC (NUMERIC cannot hold 30 integer digits); * (38,10) -&gt; BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); * (76,38) -&gt; BIGNUMERIC; * (77,38) -&gt; BIGNUMERIC (error if value exeeds supported range). This field cannot contain duplicate types. The order of the types in this field is ignored. For example, [&quot;BIGNUMERIC&quot;, &quot;NUMERIC&quot;] is the same as [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;] and NUMERIC always takes precedence over BIGNUMERIC. Defaults to [&quot;NUMERIC&quot;, &quot;STRING&quot;] for ORC and [&quot;NUMERIC&quot;] for the other file formats.
          &quot;A String&quot;,
        ],
        &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Required] The destination table to load the data into.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
          &quot;description&quot;: &quot;A String&quot;, # [Optional] The description for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current description is provided, the job will fail.
          &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] The friendly name for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current friendly name is provided, the job will fail.
          &quot;labels&quot;: { # [Optional] The labels associated with this table. You can use these to organize and group your tables. This will only be used if the destination table is newly created. If the table already exists and labels are different than the current labels are provided, the job will fail.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &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;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. 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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
          &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
          &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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
        &quot;jsonExtension&quot;: &quot;A String&quot;, # [Optional] If sourceFormat is set to newline-delimited JSON, indicates whether it should be processed as a JSON variant such as GeoJSON. For a sourceFormat other than JSON, omit this field. If the sourceFormat is newline-delimited JSON: - for newline-delimited GeoJSON: set to GEOJSON.
        &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV and JSON. The default value is 0, which requires that all records are valid.
        &quot;nullMarker&quot;: &quot;A String&quot;, # [Optional] Specifies a string that represents a null value in a CSV file. For example, if you specify &quot;\N&quot;, BigQuery interprets &quot;\N&quot; as a null value when loading a CSV file. The default value is the empty string. If you set this property to a custom value, BigQuery throws an error if an empty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as an empty value.
        &quot;parquetOptions&quot;: { # [Optional] Options to configure parquet support.
          &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
          &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
        },
        &quot;projectionFields&quot;: [ # If sourceFormat is set to &quot;DATASTORE_BACKUP&quot;, indicates which entity properties to load into BigQuery from a Cloud Datastore backup. Property names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties. If any named property isn&#x27;t found in the Cloud Datastore backup, an invalid error is returned in the job result.
          &quot;A String&quot;,
        ],
        &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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
          &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
            &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
            &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;schema&quot;: { # [Optional] The schema for the destination table. The schema can be omitted if the destination table already exists, or if you&#x27;re loading data from Google Cloud Datastore.
          &quot;fields&quot;: [ # Describes the fields in a table.
            {
              &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
              &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
              &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
              &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            },
          ],
        },
        &quot;schemaInline&quot;: &quot;A String&quot;, # [Deprecated] The inline schema. For CSV schemas, specify as &quot;Field1:Type1[,Field2:Type2]*&quot;. For example, &quot;foo:STRING, bar:INTEGER, baz:FLOAT&quot;.
        &quot;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
        &quot;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the load job if a schema is autodetected or supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
          &quot;A String&quot;,
        ],
        &quot;skipLeadingRows&quot;: 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
        &quot;sourceFormat&quot;: &quot;A String&quot;, # [Optional] The format of the data files. For CSV files, specify &quot;CSV&quot;. For datastore backups, specify &quot;DATASTORE_BACKUP&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro, specify &quot;AVRO&quot;. For parquet, specify &quot;PARQUET&quot;. For orc, specify &quot;ORC&quot;. The default value is CSV.
        &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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
          &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;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;requirePartitionFilter&quot;: True or False,
          &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
        },
        &quot;useAvroLogicalTypes&quot;: True or False, # [Optional] If sourceFormat is set to &quot;AVRO&quot;, indicates whether to enable interpreting logical types into their corresponding types (ie. TIMESTAMP), instead of only using their raw types (ie. INTEGER).
        &quot;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
      },
      &quot;query&quot;: { # [Pick one] Configures a query job.
        &quot;allowLargeResults&quot;: false, # [Optional] If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance. Requires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed. However, you must still set destinationTable when result size exceeds the allowed maximum response size.
        &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;connectionProperties&quot;: [ # Connection properties.
          {
            &quot;key&quot;: &quot;A String&quot;, # [Required] Name of the connection property to set.
            &quot;value&quot;: &quot;A String&quot;, # [Required] Value of the connection property.
          },
        ],
        &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
        &quot;createSession&quot;: True or False, # If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs query in non-session mode.
        &quot;defaultDataset&quot;: { # [Optional] Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
        },
        &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results. This property must be set for large results that exceed the maximum response size.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;flattenResults&quot;: true, # [Optional] If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results. allowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened.
        &quot;maximumBillingTier&quot;: 1, # [Optional] Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge). If unspecified, this will be set to your project default.
        &quot;maximumBytesBilled&quot;: &quot;A String&quot;, # [Optional] Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge). If unspecified, this will be set to your project default.
        &quot;parameterMode&quot;: &quot;A String&quot;, # Standard SQL only. Set to POSITIONAL to use positional (?) query parameters or to NAMED to use named (@myparam) query parameters in this query.
        &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
        &quot;priority&quot;: &quot;A String&quot;, # [Optional] Specifies a priority for the query. Possible values include INTERACTIVE and BATCH. The default value is INTERACTIVE.
        &quot;query&quot;: &quot;A String&quot;, # [Required] SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL.
        &quot;queryParameters&quot;: [ # Query parameters for standard SQL queries.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
            &quot;parameterType&quot;: { # [Required] The type of this parameter.
              &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
              &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                {
                  &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                  &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                  &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                },
              ],
              &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
            },
            &quot;parameterValue&quot;: { # [Required] The value of this parameter.
              &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                # Object with schema name: QueryParameterValue
              ],
              &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
                &quot;a_key&quot;: # Object with schema name: QueryParameterValue
              },
              &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
            },
          },
        ],
        &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
          &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
            &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
            &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;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the query job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
          &quot;A String&quot;,
        ],
        &quot;tableDefinitions&quot;: { # [Optional] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
          &quot;a_key&quot;: {
            &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
            &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
              &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;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;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;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;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;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;qualifierString&quot;: &quot;A String&quot;,
                      &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;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;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                  &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;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;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;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;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
            &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
              &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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
              &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
              &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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;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;parquetOptions&quot;: { # Additional properties to set if sourceFormat is set to Parquet.
              &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
              &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
            },
            &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;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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
                  &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                    # Object with schema name: TableFieldSchema
                  ],
                  &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
                  &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
                  &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                },
              ],
            },
            &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;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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
          &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;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;requirePartitionFilter&quot;: True or False,
          &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
        },
        &quot;useLegacySql&quot;: true, # Specifies whether to use BigQuery&#x27;s legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false.
        &quot;useQueryCache&quot;: true, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified. The default value is true.
        &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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
      },
    },
    &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of this resource.
    &quot;id&quot;: &quot;A String&quot;, # [Output-only] Opaque ID field of the job
    &quot;jobReference&quot;: { # [Optional] Reference describing the unique-per-user name of the job.
      &quot;jobId&quot;: &quot;A String&quot;, # [Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters.
      &quot;location&quot;: &quot;A String&quot;, # The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
      &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
    },
    &quot;kind&quot;: &quot;bigquery#job&quot;, # [Output-only] The type of the resource.
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
    &quot;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
      &quot;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
      &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] Creation time of this job, in milliseconds since the epoch. This field will be present on all jobs.
      &quot;endTime&quot;: &quot;A String&quot;, # [Output-only] End time of this job, in milliseconds since the epoch. This field will be present whenever a job is in the DONE state.
      &quot;extract&quot;: { # [Output-only] Statistics for an extract job.
        &quot;destinationUriFileCounts&quot;: [ # [Output-only] Number of files per destination URI or URI pattern specified in the extract configuration. These values will be in the same order as the URIs specified in the &#x27;destinationUris&#x27; field.
          &quot;A String&quot;,
        ],
        &quot;inputBytes&quot;: &quot;A String&quot;, # [Output-only] Number of user bytes extracted into the result. This is the byte count as computed by BigQuery for billing purposes.
      },
      &quot;load&quot;: { # [Output-only] Statistics for a load job.
        &quot;badRecords&quot;: &quot;A String&quot;, # [Output-only] The number of bad records encountered. Note that if the job has failed because of more bad records encountered than the maximum allowed in the load job configuration, then this number can be less than the total number of bad records present in the input data.
        &quot;inputFileBytes&quot;: &quot;A String&quot;, # [Output-only] Number of bytes of source data in a load job.
        &quot;inputFiles&quot;: &quot;A String&quot;, # [Output-only] Number of source files in a load job.
        &quot;outputBytes&quot;: &quot;A String&quot;, # [Output-only] Size of the loaded data in bytes. Note that while a load job is in the running state, this value may change.
        &quot;outputRows&quot;: &quot;A String&quot;, # [Output-only] Number of rows imported in a load job. Note that while an import job is in the running state, this value may change.
      },
      &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
      &quot;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
      &quot;query&quot;: { # [Output-only] Statistics for a query job.
        &quot;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
        &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
        &quot;ddlAffectedRowAccessPolicyCount&quot;: &quot;A String&quot;, # [Output-only] [Preview] The number of row access policies affected by a DDL statement. Present only for DROP ALL ROW ACCESS POLICIES queries.
        &quot;ddlOperationPerformed&quot;: &quot;A String&quot;, # The DDL operation performed, possibly dependent on the pre-existence of the DDL target. Possible values (new values might be added in the future): &quot;CREATE&quot;: The query created the DDL target. &quot;SKIP&quot;: No-op. Example cases: the query is CREATE TABLE IF NOT EXISTS while the table already exists, or the query is DROP TABLE IF EXISTS while the table does not exist. &quot;REPLACE&quot;: The query replaced the DDL target. Example case: the query is CREATE OR REPLACE TABLE, and the table already exists. &quot;DROP&quot;: The query deleted the DDL target.
        &quot;ddlTargetDataset&quot;: { # [Output-only] The DDL target dataset. Present only for CREATE/ALTER/DROP SCHEMA queries.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
        },
        &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
          &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
        },
        &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this row access policy.
          &quot;policyId&quot;: &quot;A String&quot;, # [Required] The ID of the row access policy. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
        },
        &quot;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
        &quot;modelTraining&quot;: { # [Output-only, Beta] Information about create model query job progress.
          &quot;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
          &quot;expectedTotalIterations&quot;: &quot;A String&quot;, # [Output-only, Beta] Expected number of iterations for the create model query job specified as num_iterations in the input query. The actual total number of iterations may be less than this number due to early stop.
        },
        &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
        &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
        &quot;numDmlAffectedRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows affected by a DML statement. Present only for DML statements INSERT, UPDATE or DELETE.
        &quot;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
          {
            &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
            &quot;computeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on CPU-bound tasks.
            &quot;computeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on CPU-bound tasks.
            &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
            &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
            &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
            &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
            &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
              &quot;A String&quot;,
            ],
            &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
            &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
            &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
            &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
            &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
            &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
            &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
            &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
            &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
            &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
            &quot;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
            &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
            &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
            &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
              {
                &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
                &quot;substeps&quot;: [ # Human-readable stage descriptions.
                  &quot;A String&quot;,
                ],
              },
            ],
            &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
            &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
            &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
            &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
            &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
            &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
            &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
            &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
          },
        ],
        &quot;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
          {
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
            &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
          },
        ],
        &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
          {
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
            &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
          },
        ],
        &quot;schema&quot;: { # [Output-only] The schema of the results. Present only for successful dry run of non-legacy SQL queries.
          &quot;fields&quot;: [ # Describes the fields in a table.
            {
              &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
              &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
              &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
              &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            },
          ],
        },
        &quot;statementType&quot;: &quot;A String&quot;, # The type of query statement, if valid. Possible values (new values might be added in the future): &quot;SELECT&quot;: SELECT query. &quot;INSERT&quot;: INSERT query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;UPDATE&quot;: UPDATE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;DELETE&quot;: DELETE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;MERGE&quot;: MERGE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;ALTER_TABLE&quot;: ALTER TABLE query. &quot;ALTER_VIEW&quot;: ALTER VIEW query. &quot;ASSERT&quot;: ASSERT condition AS &#x27;description&#x27;. &quot;CREATE_FUNCTION&quot;: CREATE FUNCTION query. &quot;CREATE_MODEL&quot;: CREATE [OR REPLACE] MODEL ... AS SELECT ... . &quot;CREATE_PROCEDURE&quot;: CREATE PROCEDURE query. &quot;CREATE_TABLE&quot;: CREATE [OR REPLACE] TABLE without AS SELECT. &quot;CREATE_TABLE_AS_SELECT&quot;: CREATE [OR REPLACE] TABLE ... AS SELECT ... . &quot;CREATE_VIEW&quot;: CREATE [OR REPLACE] VIEW ... AS SELECT ... . &quot;DROP_FUNCTION&quot; : DROP FUNCTION query. &quot;DROP_PROCEDURE&quot;: DROP PROCEDURE query. &quot;DROP_TABLE&quot;: DROP TABLE query. &quot;DROP_VIEW&quot;: DROP VIEW query.
        &quot;timeline&quot;: [ # [Output-only] [Beta] Describes a timeline of job execution.
          {
            &quot;activeUnits&quot;: &quot;A String&quot;, # Total number of units currently being processed by workers. This does not correspond directly to slot usage. This is the largest value observed since the last sample.
            &quot;completedUnits&quot;: &quot;A String&quot;, # Total parallel units of work completed by this query.
            &quot;elapsedMs&quot;: &quot;A String&quot;, # Milliseconds elapsed since the start of query execution.
            &quot;pendingUnits&quot;: &quot;A String&quot;, # Total parallel units of work remaining for the active stages.
            &quot;totalSlotMs&quot;: &quot;A String&quot;, # Cumulative slot-ms consumed by the query.
          },
        ],
        &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed for the job.
        &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
        &quot;totalBytesProcessedAccuracy&quot;: &quot;A String&quot;, # [Output-only] For dry-run jobs, totalBytesProcessed is an estimate and this field specifies the accuracy of the estimate. Possible values can be: UNKNOWN: accuracy of the estimate is unknown. PRECISE: estimate is precise. LOWER_BOUND: estimate is lower bound of what the query would cost. UPPER_BOUND: estimate is upper bound of what the query would cost.
        &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
        &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
        &quot;undeclaredQueryParameters&quot;: [ # Standard SQL only: list of undeclared query parameters detected during a dry run validation.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
            &quot;parameterType&quot;: { # [Required] The type of this parameter.
              &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
              &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                {
                  &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                  &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                  &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                },
              ],
              &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
            },
            &quot;parameterValue&quot;: { # [Required] The value of this parameter.
              &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                # Object with schema name: QueryParameterValue
              ],
              &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
                &quot;a_key&quot;: # Object with schema name: QueryParameterValue
              },
              &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
            },
          },
        ],
      },
      &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
        &quot;A String&quot;,
      ],
      &quot;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
          &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
        },
      ],
      &quot;reservation_id&quot;: &quot;A String&quot;, # [Output-only] Name of the primary reservation assigned to this job. Note that this could be different than reservations reported in the reservation usage field if parent reservations were used to execute this job.
      &quot;rowLevelSecurityStatistics&quot;: { # [Output-only] [Preview] Statistics for row-level security. Present only for query and extract jobs.
        &quot;rowLevelSecurityApplied&quot;: True or False, # [Output-only] [Preview] Whether any accessed data was protected by row access policies.
      },
      &quot;scriptStatistics&quot;: { # [Output-only] Statistics for a child job of a script.
        &quot;evaluationKind&quot;: &quot;A String&quot;, # [Output-only] Whether this child job was a statement or expression.
        &quot;stackFrames&quot;: [ # Stack trace showing the line/column/procedure name of each frame on the stack at the point where the current evaluation happened. The leaf frame is first, the primary script is last. Never empty.
          {
            &quot;endColumn&quot;: 42, # [Output-only] One-based end column.
            &quot;endLine&quot;: 42, # [Output-only] One-based end line.
            &quot;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
            &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
            &quot;startLine&quot;: 42, # [Output-only] One-based start line.
            &quot;text&quot;: &quot;A String&quot;, # [Output-only] Text of the current statement/expression.
          },
        ],
      },
      &quot;sessionInfoTemplate&quot;: { # [Output-only] [Preview] Information of the session if this job is part of one.
        &quot;sessionId&quot;: &quot;A String&quot;, # [Output-only] // [Preview] Id of the session.
      },
      &quot;startTime&quot;: &quot;A String&quot;, # [Output-only] Start time of this job, in milliseconds since the epoch. This field will be present when the job transitions from the PENDING state to either RUNNING or DONE.
      &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
      &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
      &quot;transactionInfoTemplate&quot;: { # [Output-only] [Alpha] Information of the multi-statement transaction if this job is part of one.
        &quot;transactionId&quot;: &quot;A String&quot;, # [Output-only] // [Alpha] Id of the transaction.
      },
    },
    &quot;status&quot;: { # [Output-only] The status of this job. Examine this value when polling an asynchronous job to see if the job is complete.
      &quot;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
      &quot;errors&quot;: [ # [Output-only] The first errors encountered during the running of the job. The final message includes the number of errors that caused the process to stop. Errors here do not necessarily mean that the job has completed or was unsuccessful.
        {
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
          &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
          &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
          &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
        },
      ],
      &quot;state&quot;: &quot;A String&quot;, # [Output-only] Running state of the job.
    },
    &quot;user_email&quot;: &quot;A String&quot;, # [Output-only] Email address of the user who ran the job.
  },
  &quot;kind&quot;: &quot;bigquery#jobCancelResponse&quot;, # The resource type of the response.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(projectId, jobId, location=None)</code>
  <pre>Requests that a job is deleted. This call will return when the job is deleted. This method is available in limited preview.

Args:
  projectId: string, Required. Project ID of the job to be deleted. (required)
  jobId: string, Required. Job ID of the job to be deleted. If this is a parent job which has child jobs, all child jobs will be deleted as well. Deletion of child jobs directly is not allowed. (required)
  location: string, The geographic location of the job. Required. See details at: https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, jobId, location=None)</code>
  <pre>Returns information about a specific job. Job information is available for a six month period after creation. Requires that you&#x27;re the person who ran the job, or have the Is Owner project role.

Args:
  projectId: string, [Required] Project ID of the requested job (required)
  jobId: string, [Required] Job ID of the requested job (required)
  location: string, The geographic location of the job. Required except for US and EU. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.

Returns:
  An object of the form:

    {
  &quot;configuration&quot;: { # [Required] Describes the job configuration.
    &quot;copy&quot;: { # [Pick one] Copies a table.
      &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;destinationEncryptionConfiguration&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;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
      &quot;destinationTable&quot;: { # [Required] The destination table
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
      &quot;sourceTable&quot;: { # [Pick one] Source table to copy.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
    &quot;dryRun&quot;: True or False, # [Optional] If set, don&#x27;t actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn&#x27;t a dry run. Behavior of non-query jobs is undefined.
    &quot;extract&quot;: { # [Pick one] Configures an extract job.
      &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE. The default value is NONE. DEFLATE and SNAPPY are only supported for Avro. Not applicable when extracting models.
      &quot;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON, PARQUET or AVRO for tables and ML_TF_SAVED_MODEL or ML_XGBOOST_BOOSTER for models. The default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV. The default value for models is ML_TF_SAVED_MODEL.
      &quot;destinationUri&quot;: &quot;A String&quot;, # [Pick one] DEPRECATED: Use destinationUris instead, passing only one URI as necessary. The fully-qualified Google Cloud Storage URI where the extracted table should be written.
      &quot;destinationUris&quot;: [ # [Pick one] A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written.
        &quot;A String&quot;,
      ],
      &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] Delimiter to use between fields in the exported data. Default is &#x27;,&#x27;. Not applicable when extracting models.
      &quot;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
      &quot;sourceModel&quot;: { # A reference to the model being exported.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
        &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
      },
      &quot;sourceTable&quot;: { # A reference to the table being exported.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;useAvroLogicalTypes&quot;: True or False, # [Optional] If destinationFormat is set to &quot;AVRO&quot;, this flag indicates whether to enable extracting applicable column types (such as TIMESTAMP) to their corresponding AVRO logical types (timestamp-micros), instead of only using their raw types (avro-long). Not applicable when extracting models.
    },
    &quot;jobTimeoutMs&quot;: &quot;A String&quot;, # [Optional] Job timeout in milliseconds. If this time limit is exceeded, BigQuery may attempt to terminate the job.
    &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
    &quot;labels&quot;: { # The labels associated with this job. You can use these to organize and group your jobs. 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;load&quot;: { # [Pick one] Configures a load job.
      &quot;allowJaggedRows&quot;: True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. 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. Only applicable to CSV, ignored for other formats.
      &quot;allowQuotedNewlines&quot;: True or False, # Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
      &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;decimalTargetTypes&quot;: [ # Defines the list of possible SQL data types to which the source decimal values are converted. This list and the precision and the scale parameters of the decimal field determine the target type. In the order of NUMERIC, BIGNUMERIC ([Preview](/products/#product-launch-stages)), and STRING, a type is picked if it is in the specified list and if it supports the precision and the scale. STRING supports all precision and scale values. If none of the listed types supports the precision and the scale, the type supporting the widest range in the specified list is picked, and if a value exceeds the supported range when reading the data, an error will be thrown. Example: Suppose the value of this field is [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. If (precision,scale) is: * (38,9) -&gt; NUMERIC; * (39,9) -&gt; BIGNUMERIC (NUMERIC cannot hold 30 integer digits); * (38,10) -&gt; BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); * (76,38) -&gt; BIGNUMERIC; * (77,38) -&gt; BIGNUMERIC (error if value exeeds supported range). This field cannot contain duplicate types. The order of the types in this field is ignored. For example, [&quot;BIGNUMERIC&quot;, &quot;NUMERIC&quot;] is the same as [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;] and NUMERIC always takes precedence over BIGNUMERIC. Defaults to [&quot;NUMERIC&quot;, &quot;STRING&quot;] for ORC and [&quot;NUMERIC&quot;] for the other file formats.
        &quot;A String&quot;,
      ],
      &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Required] The destination table to load the data into.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
        &quot;description&quot;: &quot;A String&quot;, # [Optional] The description for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current description is provided, the job will fail.
        &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] The friendly name for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current friendly name is provided, the job will fail.
        &quot;labels&quot;: { # [Optional] The labels associated with this table. You can use these to organize and group your tables. This will only be used if the destination table is newly created. If the table already exists and labels are different than the current labels are provided, the job will fail.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &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;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. 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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
        &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
        &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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
      &quot;jsonExtension&quot;: &quot;A String&quot;, # [Optional] If sourceFormat is set to newline-delimited JSON, indicates whether it should be processed as a JSON variant such as GeoJSON. For a sourceFormat other than JSON, omit this field. If the sourceFormat is newline-delimited JSON: - for newline-delimited GeoJSON: set to GEOJSON.
      &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV and JSON. The default value is 0, which requires that all records are valid.
      &quot;nullMarker&quot;: &quot;A String&quot;, # [Optional] Specifies a string that represents a null value in a CSV file. For example, if you specify &quot;\N&quot;, BigQuery interprets &quot;\N&quot; as a null value when loading a CSV file. The default value is the empty string. If you set this property to a custom value, BigQuery throws an error if an empty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as an empty value.
      &quot;parquetOptions&quot;: { # [Optional] Options to configure parquet support.
        &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
        &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
      },
      &quot;projectionFields&quot;: [ # If sourceFormat is set to &quot;DATASTORE_BACKUP&quot;, indicates which entity properties to load into BigQuery from a Cloud Datastore backup. Property names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties. If any named property isn&#x27;t found in the Cloud Datastore backup, an invalid error is returned in the job result.
        &quot;A String&quot;,
      ],
      &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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          &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;schema&quot;: { # [Optional] The schema for the destination table. The schema can be omitted if the destination table already exists, or if you&#x27;re loading data from Google Cloud Datastore.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
            &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
            &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
            &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;schemaInline&quot;: &quot;A String&quot;, # [Deprecated] The inline schema. For CSV schemas, specify as &quot;Field1:Type1[,Field2:Type2]*&quot;. For example, &quot;foo:STRING, bar:INTEGER, baz:FLOAT&quot;.
      &quot;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
      &quot;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the load job if a schema is autodetected or supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
        &quot;A String&quot;,
      ],
      &quot;skipLeadingRows&quot;: 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
      &quot;sourceFormat&quot;: &quot;A String&quot;, # [Optional] The format of the data files. For CSV files, specify &quot;CSV&quot;. For datastore backups, specify &quot;DATASTORE_BACKUP&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro, specify &quot;AVRO&quot;. For parquet, specify &quot;PARQUET&quot;. For orc, specify &quot;ORC&quot;. The default value is CSV.
      &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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;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;requirePartitionFilter&quot;: True or False,
        &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
      },
      &quot;useAvroLogicalTypes&quot;: True or False, # [Optional] If sourceFormat is set to &quot;AVRO&quot;, indicates whether to enable interpreting logical types into their corresponding types (ie. TIMESTAMP), instead of only using their raw types (ie. INTEGER).
      &quot;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
    &quot;query&quot;: { # [Pick one] Configures a query job.
      &quot;allowLargeResults&quot;: false, # [Optional] If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance. Requires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed. However, you must still set destinationTable when result size exceeds the allowed maximum response size.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;connectionProperties&quot;: [ # Connection properties.
        {
          &quot;key&quot;: &quot;A String&quot;, # [Required] Name of the connection property to set.
          &quot;value&quot;: &quot;A String&quot;, # [Required] Value of the connection property.
        },
      ],
      &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;createSession&quot;: True or False, # If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs query in non-session mode.
      &quot;defaultDataset&quot;: { # [Optional] Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
      },
      &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results. This property must be set for large results that exceed the maximum response size.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;flattenResults&quot;: true, # [Optional] If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results. allowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened.
      &quot;maximumBillingTier&quot;: 1, # [Optional] Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge). If unspecified, this will be set to your project default.
      &quot;maximumBytesBilled&quot;: &quot;A String&quot;, # [Optional] Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge). If unspecified, this will be set to your project default.
      &quot;parameterMode&quot;: &quot;A String&quot;, # Standard SQL only. Set to POSITIONAL to use positional (?) query parameters or to NAMED to use named (@myparam) query parameters in this query.
      &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
      &quot;priority&quot;: &quot;A String&quot;, # [Optional] Specifies a priority for the query. Possible values include INTERACTIVE and BATCH. The default value is INTERACTIVE.
      &quot;query&quot;: &quot;A String&quot;, # [Required] SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL.
      &quot;queryParameters&quot;: [ # Query parameters for standard SQL queries.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
          &quot;parameterType&quot;: { # [Required] The type of this parameter.
            &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
            &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
              {
                &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
          },
          &quot;parameterValue&quot;: { # [Required] The value of this parameter.
            &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
              # Object with schema name: QueryParameterValue
            ],
            &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
              &quot;a_key&quot;: # Object with schema name: QueryParameterValue
            },
            &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
          },
        },
      ],
      &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          &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;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the query job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
        &quot;A String&quot;,
      ],
      &quot;tableDefinitions&quot;: { # [Optional] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
        &quot;a_key&quot;: {
          &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
          &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
            &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;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;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;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;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;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;qualifierString&quot;: &quot;A String&quot;,
                    &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;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;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                &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;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;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;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;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
          &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
            &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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
            &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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;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;parquetOptions&quot;: { # Additional properties to set if sourceFormat is set to Parquet.
            &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
            &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
          },
          &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;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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
                &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                  # Object with schema name: TableFieldSchema
                ],
                &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
                &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
                &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &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;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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;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;requirePartitionFilter&quot;: True or False,
        &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
      },
      &quot;useLegacySql&quot;: true, # Specifies whether to use BigQuery&#x27;s legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false.
      &quot;useQueryCache&quot;: true, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified. The default value is true.
      &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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
  },
  &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of this resource.
  &quot;id&quot;: &quot;A String&quot;, # [Output-only] Opaque ID field of the job
  &quot;jobReference&quot;: { # [Optional] Reference describing the unique-per-user name of the job.
    &quot;jobId&quot;: &quot;A String&quot;, # [Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters.
    &quot;location&quot;: &quot;A String&quot;, # The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
    &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
  },
  &quot;kind&quot;: &quot;bigquery#job&quot;, # [Output-only] The type of the resource.
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
  &quot;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
    &quot;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
    &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] Creation time of this job, in milliseconds since the epoch. This field will be present on all jobs.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output-only] End time of this job, in milliseconds since the epoch. This field will be present whenever a job is in the DONE state.
    &quot;extract&quot;: { # [Output-only] Statistics for an extract job.
      &quot;destinationUriFileCounts&quot;: [ # [Output-only] Number of files per destination URI or URI pattern specified in the extract configuration. These values will be in the same order as the URIs specified in the &#x27;destinationUris&#x27; field.
        &quot;A String&quot;,
      ],
      &quot;inputBytes&quot;: &quot;A String&quot;, # [Output-only] Number of user bytes extracted into the result. This is the byte count as computed by BigQuery for billing purposes.
    },
    &quot;load&quot;: { # [Output-only] Statistics for a load job.
      &quot;badRecords&quot;: &quot;A String&quot;, # [Output-only] The number of bad records encountered. Note that if the job has failed because of more bad records encountered than the maximum allowed in the load job configuration, then this number can be less than the total number of bad records present in the input data.
      &quot;inputFileBytes&quot;: &quot;A String&quot;, # [Output-only] Number of bytes of source data in a load job.
      &quot;inputFiles&quot;: &quot;A String&quot;, # [Output-only] Number of source files in a load job.
      &quot;outputBytes&quot;: &quot;A String&quot;, # [Output-only] Size of the loaded data in bytes. Note that while a load job is in the running state, this value may change.
      &quot;outputRows&quot;: &quot;A String&quot;, # [Output-only] Number of rows imported in a load job. Note that while an import job is in the running state, this value may change.
    },
    &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
    &quot;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
    &quot;query&quot;: { # [Output-only] Statistics for a query job.
      &quot;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
      &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
      &quot;ddlAffectedRowAccessPolicyCount&quot;: &quot;A String&quot;, # [Output-only] [Preview] The number of row access policies affected by a DDL statement. Present only for DROP ALL ROW ACCESS POLICIES queries.
      &quot;ddlOperationPerformed&quot;: &quot;A String&quot;, # The DDL operation performed, possibly dependent on the pre-existence of the DDL target. Possible values (new values might be added in the future): &quot;CREATE&quot;: The query created the DDL target. &quot;SKIP&quot;: No-op. Example cases: the query is CREATE TABLE IF NOT EXISTS while the table already exists, or the query is DROP TABLE IF EXISTS while the table does not exist. &quot;REPLACE&quot;: The query replaced the DDL target. Example case: the query is CREATE OR REPLACE TABLE, and the table already exists. &quot;DROP&quot;: The query deleted the DDL target.
      &quot;ddlTargetDataset&quot;: { # [Output-only] The DDL target dataset. Present only for CREATE/ALTER/DROP SCHEMA queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
      },
      &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
        &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
      },
      &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this row access policy.
        &quot;policyId&quot;: &quot;A String&quot;, # [Required] The ID of the row access policy. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
        &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
      },
      &quot;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
      &quot;modelTraining&quot;: { # [Output-only, Beta] Information about create model query job progress.
        &quot;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
        &quot;expectedTotalIterations&quot;: &quot;A String&quot;, # [Output-only, Beta] Expected number of iterations for the create model query job specified as num_iterations in the input query. The actual total number of iterations may be less than this number due to early stop.
      },
      &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
      &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
      &quot;numDmlAffectedRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows affected by a DML statement. Present only for DML statements INSERT, UPDATE or DELETE.
      &quot;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
        {
          &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
          &quot;computeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on CPU-bound tasks.
          &quot;computeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on CPU-bound tasks.
          &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
          &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
          &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
          &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
          &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
            &quot;A String&quot;,
          ],
          &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
          &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
          &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
          &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
          &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
          &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
          &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
          &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
          &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
          &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
          &quot;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
          &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
          &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
          &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
            {
              &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
              &quot;substeps&quot;: [ # Human-readable stage descriptions.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
          &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
          &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
          &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
          &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
          &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
          &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
          &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
        },
      ],
      &quot;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
          &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
        },
      ],
      &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
          &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
        },
      ],
      &quot;schema&quot;: { # [Output-only] The schema of the results. Present only for successful dry run of non-legacy SQL queries.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
            &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
            &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
            &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;statementType&quot;: &quot;A String&quot;, # The type of query statement, if valid. Possible values (new values might be added in the future): &quot;SELECT&quot;: SELECT query. &quot;INSERT&quot;: INSERT query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;UPDATE&quot;: UPDATE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;DELETE&quot;: DELETE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;MERGE&quot;: MERGE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;ALTER_TABLE&quot;: ALTER TABLE query. &quot;ALTER_VIEW&quot;: ALTER VIEW query. &quot;ASSERT&quot;: ASSERT condition AS &#x27;description&#x27;. &quot;CREATE_FUNCTION&quot;: CREATE FUNCTION query. &quot;CREATE_MODEL&quot;: CREATE [OR REPLACE] MODEL ... AS SELECT ... . &quot;CREATE_PROCEDURE&quot;: CREATE PROCEDURE query. &quot;CREATE_TABLE&quot;: CREATE [OR REPLACE] TABLE without AS SELECT. &quot;CREATE_TABLE_AS_SELECT&quot;: CREATE [OR REPLACE] TABLE ... AS SELECT ... . &quot;CREATE_VIEW&quot;: CREATE [OR REPLACE] VIEW ... AS SELECT ... . &quot;DROP_FUNCTION&quot; : DROP FUNCTION query. &quot;DROP_PROCEDURE&quot;: DROP PROCEDURE query. &quot;DROP_TABLE&quot;: DROP TABLE query. &quot;DROP_VIEW&quot;: DROP VIEW query.
      &quot;timeline&quot;: [ # [Output-only] [Beta] Describes a timeline of job execution.
        {
          &quot;activeUnits&quot;: &quot;A String&quot;, # Total number of units currently being processed by workers. This does not correspond directly to slot usage. This is the largest value observed since the last sample.
          &quot;completedUnits&quot;: &quot;A String&quot;, # Total parallel units of work completed by this query.
          &quot;elapsedMs&quot;: &quot;A String&quot;, # Milliseconds elapsed since the start of query execution.
          &quot;pendingUnits&quot;: &quot;A String&quot;, # Total parallel units of work remaining for the active stages.
          &quot;totalSlotMs&quot;: &quot;A String&quot;, # Cumulative slot-ms consumed by the query.
        },
      ],
      &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed for the job.
      &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
      &quot;totalBytesProcessedAccuracy&quot;: &quot;A String&quot;, # [Output-only] For dry-run jobs, totalBytesProcessed is an estimate and this field specifies the accuracy of the estimate. Possible values can be: UNKNOWN: accuracy of the estimate is unknown. PRECISE: estimate is precise. LOWER_BOUND: estimate is lower bound of what the query would cost. UPPER_BOUND: estimate is upper bound of what the query would cost.
      &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
      &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
      &quot;undeclaredQueryParameters&quot;: [ # Standard SQL only: list of undeclared query parameters detected during a dry run validation.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
          &quot;parameterType&quot;: { # [Required] The type of this parameter.
            &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
            &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
              {
                &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
          },
          &quot;parameterValue&quot;: { # [Required] The value of this parameter.
            &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
              # Object with schema name: QueryParameterValue
            ],
            &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
              &quot;a_key&quot;: # Object with schema name: QueryParameterValue
            },
            &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
          },
        },
      ],
    },
    &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
      &quot;A String&quot;,
    ],
    &quot;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
      {
        &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
        &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
      },
    ],
    &quot;reservation_id&quot;: &quot;A String&quot;, # [Output-only] Name of the primary reservation assigned to this job. Note that this could be different than reservations reported in the reservation usage field if parent reservations were used to execute this job.
    &quot;rowLevelSecurityStatistics&quot;: { # [Output-only] [Preview] Statistics for row-level security. Present only for query and extract jobs.
      &quot;rowLevelSecurityApplied&quot;: True or False, # [Output-only] [Preview] Whether any accessed data was protected by row access policies.
    },
    &quot;scriptStatistics&quot;: { # [Output-only] Statistics for a child job of a script.
      &quot;evaluationKind&quot;: &quot;A String&quot;, # [Output-only] Whether this child job was a statement or expression.
      &quot;stackFrames&quot;: [ # Stack trace showing the line/column/procedure name of each frame on the stack at the point where the current evaluation happened. The leaf frame is first, the primary script is last. Never empty.
        {
          &quot;endColumn&quot;: 42, # [Output-only] One-based end column.
          &quot;endLine&quot;: 42, # [Output-only] One-based end line.
          &quot;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
          &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
          &quot;startLine&quot;: 42, # [Output-only] One-based start line.
          &quot;text&quot;: &quot;A String&quot;, # [Output-only] Text of the current statement/expression.
        },
      ],
    },
    &quot;sessionInfoTemplate&quot;: { # [Output-only] [Preview] Information of the session if this job is part of one.
      &quot;sessionId&quot;: &quot;A String&quot;, # [Output-only] // [Preview] Id of the session.
    },
    &quot;startTime&quot;: &quot;A String&quot;, # [Output-only] Start time of this job, in milliseconds since the epoch. This field will be present when the job transitions from the PENDING state to either RUNNING or DONE.
    &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
    &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
    &quot;transactionInfoTemplate&quot;: { # [Output-only] [Alpha] Information of the multi-statement transaction if this job is part of one.
      &quot;transactionId&quot;: &quot;A String&quot;, # [Output-only] // [Alpha] Id of the transaction.
    },
  },
  &quot;status&quot;: { # [Output-only] The status of this job. Examine this value when polling an asynchronous job to see if the job is complete.
    &quot;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
      &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
      &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
      &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
      &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
    },
    &quot;errors&quot;: [ # [Output-only] The first errors encountered during the running of the job. The final message includes the number of errors that caused the process to stop. Errors here do not necessarily mean that the job has completed or was unsuccessful.
      {
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
    ],
    &quot;state&quot;: &quot;A String&quot;, # [Output-only] Running state of the job.
  },
  &quot;user_email&quot;: &quot;A String&quot;, # [Output-only] Email address of the user who ran the job.
}</pre>
</div>

<div class="method">
    <code class="details" id="getQueryResults">getQueryResults(projectId, jobId, location=None, maxResults=None, pageToken=None, startIndex=None, timeoutMs=None)</code>
  <pre>Retrieves the results of a query job.

Args:
  projectId: string, [Required] Project ID of the query job (required)
  jobId: string, [Required] Job ID of the query job (required)
  location: string, The geographic location where the job should run. Required except for US and EU. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
  maxResults: integer, Maximum number of results to read
  pageToken: string, Page token, returned by a previous call, to request the next page of results
  startIndex: string, Zero-based index of the starting row
  timeoutMs: integer, How long to wait for the query to complete, in milliseconds, before returning. Default is 10 seconds. If the timeout passes before the job completes, the &#x27;jobComplete&#x27; field in the response will be false

Returns:
  An object of the form:

    {
  &quot;cacheHit&quot;: True or False, # Whether the query result was fetched from the query cache.
  &quot;errors&quot;: [ # [Output-only] The first errors or warnings encountered during the running of the job. The final message includes the number of errors that caused the process to stop. Errors here do not necessarily mean that the job has completed or was unsuccessful.
    {
      &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
      &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
      &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
      &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # A hash of this response.
  &quot;jobComplete&quot;: True or False, # Whether the query has completed or not. If rows or totalRows are present, this will always be true. If this is false, totalRows will not be available.
  &quot;jobReference&quot;: { # Reference to the BigQuery Job that was created to run the query. This field will be present even if the original request timed out, in which case GetQueryResults can be used to read the results once the query has completed. Since this API only returns the first page of results, subsequent pages can be fetched via the same mechanism (GetQueryResults).
    &quot;jobId&quot;: &quot;A String&quot;, # [Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters.
    &quot;location&quot;: &quot;A String&quot;, # The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
    &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
  },
  &quot;kind&quot;: &quot;bigquery#getQueryResultsResponse&quot;, # The resource type of the response.
  &quot;numDmlAffectedRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows affected by a DML statement. Present only for DML statements INSERT, UPDATE or DELETE.
  &quot;pageToken&quot;: &quot;A String&quot;, # A token used for paging results.
  &quot;rows&quot;: [ # An object with as many results as can be contained within the maximum permitted reply size. To get any additional rows, you can call GetQueryResults and specify the jobReference returned above. Present only when the query completes successfully.
    {
      &quot;f&quot;: [ # Represents a single row in the result set, consisting of one or more fields.
        {
          &quot;v&quot;: &quot;&quot;,
        },
      ],
    },
  ],
  &quot;schema&quot;: { # The schema of the results. Present only when the query completes successfully.
    &quot;fields&quot;: [ # Describes the fields in a table.
      {
        &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
        &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
          # Object with schema name: TableFieldSchema
        ],
        &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
        &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
        &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
      },
    ],
  },
  &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # The total number of bytes processed for this query.
  &quot;totalRows&quot;: &quot;A String&quot;, # The total number of rows in the complete query result set, which can be more than the number of rows in this single page of results. Present only when the query completes successfully.
}</pre>
</div>

<div class="method">
    <code class="details" id="getQueryResults_next">getQueryResults_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="insert">insert(projectId, body=None, media_body=None, media_mime_type=None)</code>
  <pre>Starts a new asynchronous job. Requires the Can View project role.

Args:
  projectId: string, Project ID of the project that will be billed for the job (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;configuration&quot;: { # [Required] Describes the job configuration.
    &quot;copy&quot;: { # [Pick one] Copies a table.
      &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;destinationEncryptionConfiguration&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;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
      &quot;destinationTable&quot;: { # [Required] The destination table
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
      &quot;sourceTable&quot;: { # [Pick one] Source table to copy.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
    &quot;dryRun&quot;: True or False, # [Optional] If set, don&#x27;t actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn&#x27;t a dry run. Behavior of non-query jobs is undefined.
    &quot;extract&quot;: { # [Pick one] Configures an extract job.
      &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE. The default value is NONE. DEFLATE and SNAPPY are only supported for Avro. Not applicable when extracting models.
      &quot;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON, PARQUET or AVRO for tables and ML_TF_SAVED_MODEL or ML_XGBOOST_BOOSTER for models. The default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV. The default value for models is ML_TF_SAVED_MODEL.
      &quot;destinationUri&quot;: &quot;A String&quot;, # [Pick one] DEPRECATED: Use destinationUris instead, passing only one URI as necessary. The fully-qualified Google Cloud Storage URI where the extracted table should be written.
      &quot;destinationUris&quot;: [ # [Pick one] A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written.
        &quot;A String&quot;,
      ],
      &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] Delimiter to use between fields in the exported data. Default is &#x27;,&#x27;. Not applicable when extracting models.
      &quot;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
      &quot;sourceModel&quot;: { # A reference to the model being exported.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
        &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
      },
      &quot;sourceTable&quot;: { # A reference to the table being exported.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;useAvroLogicalTypes&quot;: True or False, # [Optional] If destinationFormat is set to &quot;AVRO&quot;, this flag indicates whether to enable extracting applicable column types (such as TIMESTAMP) to their corresponding AVRO logical types (timestamp-micros), instead of only using their raw types (avro-long). Not applicable when extracting models.
    },
    &quot;jobTimeoutMs&quot;: &quot;A String&quot;, # [Optional] Job timeout in milliseconds. If this time limit is exceeded, BigQuery may attempt to terminate the job.
    &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
    &quot;labels&quot;: { # The labels associated with this job. You can use these to organize and group your jobs. 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;load&quot;: { # [Pick one] Configures a load job.
      &quot;allowJaggedRows&quot;: True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. 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. Only applicable to CSV, ignored for other formats.
      &quot;allowQuotedNewlines&quot;: True or False, # Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
      &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;decimalTargetTypes&quot;: [ # Defines the list of possible SQL data types to which the source decimal values are converted. This list and the precision and the scale parameters of the decimal field determine the target type. In the order of NUMERIC, BIGNUMERIC ([Preview](/products/#product-launch-stages)), and STRING, a type is picked if it is in the specified list and if it supports the precision and the scale. STRING supports all precision and scale values. If none of the listed types supports the precision and the scale, the type supporting the widest range in the specified list is picked, and if a value exceeds the supported range when reading the data, an error will be thrown. Example: Suppose the value of this field is [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. If (precision,scale) is: * (38,9) -&gt; NUMERIC; * (39,9) -&gt; BIGNUMERIC (NUMERIC cannot hold 30 integer digits); * (38,10) -&gt; BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); * (76,38) -&gt; BIGNUMERIC; * (77,38) -&gt; BIGNUMERIC (error if value exeeds supported range). This field cannot contain duplicate types. The order of the types in this field is ignored. For example, [&quot;BIGNUMERIC&quot;, &quot;NUMERIC&quot;] is the same as [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;] and NUMERIC always takes precedence over BIGNUMERIC. Defaults to [&quot;NUMERIC&quot;, &quot;STRING&quot;] for ORC and [&quot;NUMERIC&quot;] for the other file formats.
        &quot;A String&quot;,
      ],
      &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Required] The destination table to load the data into.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
        &quot;description&quot;: &quot;A String&quot;, # [Optional] The description for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current description is provided, the job will fail.
        &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] The friendly name for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current friendly name is provided, the job will fail.
        &quot;labels&quot;: { # [Optional] The labels associated with this table. You can use these to organize and group your tables. This will only be used if the destination table is newly created. If the table already exists and labels are different than the current labels are provided, the job will fail.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &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;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. 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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
        &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
        &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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
      &quot;jsonExtension&quot;: &quot;A String&quot;, # [Optional] If sourceFormat is set to newline-delimited JSON, indicates whether it should be processed as a JSON variant such as GeoJSON. For a sourceFormat other than JSON, omit this field. If the sourceFormat is newline-delimited JSON: - for newline-delimited GeoJSON: set to GEOJSON.
      &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV and JSON. The default value is 0, which requires that all records are valid.
      &quot;nullMarker&quot;: &quot;A String&quot;, # [Optional] Specifies a string that represents a null value in a CSV file. For example, if you specify &quot;\N&quot;, BigQuery interprets &quot;\N&quot; as a null value when loading a CSV file. The default value is the empty string. If you set this property to a custom value, BigQuery throws an error if an empty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as an empty value.
      &quot;parquetOptions&quot;: { # [Optional] Options to configure parquet support.
        &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
        &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
      },
      &quot;projectionFields&quot;: [ # If sourceFormat is set to &quot;DATASTORE_BACKUP&quot;, indicates which entity properties to load into BigQuery from a Cloud Datastore backup. Property names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties. If any named property isn&#x27;t found in the Cloud Datastore backup, an invalid error is returned in the job result.
        &quot;A String&quot;,
      ],
      &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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          &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;schema&quot;: { # [Optional] The schema for the destination table. The schema can be omitted if the destination table already exists, or if you&#x27;re loading data from Google Cloud Datastore.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
            &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
            &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
            &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;schemaInline&quot;: &quot;A String&quot;, # [Deprecated] The inline schema. For CSV schemas, specify as &quot;Field1:Type1[,Field2:Type2]*&quot;. For example, &quot;foo:STRING, bar:INTEGER, baz:FLOAT&quot;.
      &quot;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
      &quot;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the load job if a schema is autodetected or supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
        &quot;A String&quot;,
      ],
      &quot;skipLeadingRows&quot;: 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
      &quot;sourceFormat&quot;: &quot;A String&quot;, # [Optional] The format of the data files. For CSV files, specify &quot;CSV&quot;. For datastore backups, specify &quot;DATASTORE_BACKUP&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro, specify &quot;AVRO&quot;. For parquet, specify &quot;PARQUET&quot;. For orc, specify &quot;ORC&quot;. The default value is CSV.
      &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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;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;requirePartitionFilter&quot;: True or False,
        &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
      },
      &quot;useAvroLogicalTypes&quot;: True or False, # [Optional] If sourceFormat is set to &quot;AVRO&quot;, indicates whether to enable interpreting logical types into their corresponding types (ie. TIMESTAMP), instead of only using their raw types (ie. INTEGER).
      &quot;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
    &quot;query&quot;: { # [Pick one] Configures a query job.
      &quot;allowLargeResults&quot;: false, # [Optional] If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance. Requires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed. However, you must still set destinationTable when result size exceeds the allowed maximum response size.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;connectionProperties&quot;: [ # Connection properties.
        {
          &quot;key&quot;: &quot;A String&quot;, # [Required] Name of the connection property to set.
          &quot;value&quot;: &quot;A String&quot;, # [Required] Value of the connection property.
        },
      ],
      &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;createSession&quot;: True or False, # If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs query in non-session mode.
      &quot;defaultDataset&quot;: { # [Optional] Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
      },
      &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results. This property must be set for large results that exceed the maximum response size.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;flattenResults&quot;: true, # [Optional] If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results. allowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened.
      &quot;maximumBillingTier&quot;: 1, # [Optional] Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge). If unspecified, this will be set to your project default.
      &quot;maximumBytesBilled&quot;: &quot;A String&quot;, # [Optional] Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge). If unspecified, this will be set to your project default.
      &quot;parameterMode&quot;: &quot;A String&quot;, # Standard SQL only. Set to POSITIONAL to use positional (?) query parameters or to NAMED to use named (@myparam) query parameters in this query.
      &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
      &quot;priority&quot;: &quot;A String&quot;, # [Optional] Specifies a priority for the query. Possible values include INTERACTIVE and BATCH. The default value is INTERACTIVE.
      &quot;query&quot;: &quot;A String&quot;, # [Required] SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL.
      &quot;queryParameters&quot;: [ # Query parameters for standard SQL queries.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
          &quot;parameterType&quot;: { # [Required] The type of this parameter.
            &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
            &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
              {
                &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
          },
          &quot;parameterValue&quot;: { # [Required] The value of this parameter.
            &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
              # Object with schema name: QueryParameterValue
            ],
            &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
              &quot;a_key&quot;: # Object with schema name: QueryParameterValue
            },
            &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
          },
        },
      ],
      &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          &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;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the query job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
        &quot;A String&quot;,
      ],
      &quot;tableDefinitions&quot;: { # [Optional] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
        &quot;a_key&quot;: {
          &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
          &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
            &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;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;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;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;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;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;qualifierString&quot;: &quot;A String&quot;,
                    &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;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;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                &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;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;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;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;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
          &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
            &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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
            &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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;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;parquetOptions&quot;: { # Additional properties to set if sourceFormat is set to Parquet.
            &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
            &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
          },
          &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;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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
                &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                  # Object with schema name: TableFieldSchema
                ],
                &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
                &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
                &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &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;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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;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;requirePartitionFilter&quot;: True or False,
        &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
      },
      &quot;useLegacySql&quot;: true, # Specifies whether to use BigQuery&#x27;s legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false.
      &quot;useQueryCache&quot;: true, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified. The default value is true.
      &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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
  },
  &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of this resource.
  &quot;id&quot;: &quot;A String&quot;, # [Output-only] Opaque ID field of the job
  &quot;jobReference&quot;: { # [Optional] Reference describing the unique-per-user name of the job.
    &quot;jobId&quot;: &quot;A String&quot;, # [Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters.
    &quot;location&quot;: &quot;A String&quot;, # The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
    &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
  },
  &quot;kind&quot;: &quot;bigquery#job&quot;, # [Output-only] The type of the resource.
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
  &quot;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
    &quot;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
    &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] Creation time of this job, in milliseconds since the epoch. This field will be present on all jobs.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output-only] End time of this job, in milliseconds since the epoch. This field will be present whenever a job is in the DONE state.
    &quot;extract&quot;: { # [Output-only] Statistics for an extract job.
      &quot;destinationUriFileCounts&quot;: [ # [Output-only] Number of files per destination URI or URI pattern specified in the extract configuration. These values will be in the same order as the URIs specified in the &#x27;destinationUris&#x27; field.
        &quot;A String&quot;,
      ],
      &quot;inputBytes&quot;: &quot;A String&quot;, # [Output-only] Number of user bytes extracted into the result. This is the byte count as computed by BigQuery for billing purposes.
    },
    &quot;load&quot;: { # [Output-only] Statistics for a load job.
      &quot;badRecords&quot;: &quot;A String&quot;, # [Output-only] The number of bad records encountered. Note that if the job has failed because of more bad records encountered than the maximum allowed in the load job configuration, then this number can be less than the total number of bad records present in the input data.
      &quot;inputFileBytes&quot;: &quot;A String&quot;, # [Output-only] Number of bytes of source data in a load job.
      &quot;inputFiles&quot;: &quot;A String&quot;, # [Output-only] Number of source files in a load job.
      &quot;outputBytes&quot;: &quot;A String&quot;, # [Output-only] Size of the loaded data in bytes. Note that while a load job is in the running state, this value may change.
      &quot;outputRows&quot;: &quot;A String&quot;, # [Output-only] Number of rows imported in a load job. Note that while an import job is in the running state, this value may change.
    },
    &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
    &quot;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
    &quot;query&quot;: { # [Output-only] Statistics for a query job.
      &quot;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
      &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
      &quot;ddlAffectedRowAccessPolicyCount&quot;: &quot;A String&quot;, # [Output-only] [Preview] The number of row access policies affected by a DDL statement. Present only for DROP ALL ROW ACCESS POLICIES queries.
      &quot;ddlOperationPerformed&quot;: &quot;A String&quot;, # The DDL operation performed, possibly dependent on the pre-existence of the DDL target. Possible values (new values might be added in the future): &quot;CREATE&quot;: The query created the DDL target. &quot;SKIP&quot;: No-op. Example cases: the query is CREATE TABLE IF NOT EXISTS while the table already exists, or the query is DROP TABLE IF EXISTS while the table does not exist. &quot;REPLACE&quot;: The query replaced the DDL target. Example case: the query is CREATE OR REPLACE TABLE, and the table already exists. &quot;DROP&quot;: The query deleted the DDL target.
      &quot;ddlTargetDataset&quot;: { # [Output-only] The DDL target dataset. Present only for CREATE/ALTER/DROP SCHEMA queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
      },
      &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
        &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
      },
      &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this row access policy.
        &quot;policyId&quot;: &quot;A String&quot;, # [Required] The ID of the row access policy. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
        &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
      },
      &quot;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
      &quot;modelTraining&quot;: { # [Output-only, Beta] Information about create model query job progress.
        &quot;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
        &quot;expectedTotalIterations&quot;: &quot;A String&quot;, # [Output-only, Beta] Expected number of iterations for the create model query job specified as num_iterations in the input query. The actual total number of iterations may be less than this number due to early stop.
      },
      &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
      &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
      &quot;numDmlAffectedRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows affected by a DML statement. Present only for DML statements INSERT, UPDATE or DELETE.
      &quot;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
        {
          &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
          &quot;computeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on CPU-bound tasks.
          &quot;computeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on CPU-bound tasks.
          &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
          &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
          &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
          &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
          &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
            &quot;A String&quot;,
          ],
          &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
          &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
          &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
          &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
          &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
          &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
          &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
          &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
          &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
          &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
          &quot;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
          &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
          &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
          &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
            {
              &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
              &quot;substeps&quot;: [ # Human-readable stage descriptions.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
          &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
          &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
          &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
          &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
          &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
          &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
          &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
        },
      ],
      &quot;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
          &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
        },
      ],
      &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
          &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
        },
      ],
      &quot;schema&quot;: { # [Output-only] The schema of the results. Present only for successful dry run of non-legacy SQL queries.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
            &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
            &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
            &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;statementType&quot;: &quot;A String&quot;, # The type of query statement, if valid. Possible values (new values might be added in the future): &quot;SELECT&quot;: SELECT query. &quot;INSERT&quot;: INSERT query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;UPDATE&quot;: UPDATE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;DELETE&quot;: DELETE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;MERGE&quot;: MERGE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;ALTER_TABLE&quot;: ALTER TABLE query. &quot;ALTER_VIEW&quot;: ALTER VIEW query. &quot;ASSERT&quot;: ASSERT condition AS &#x27;description&#x27;. &quot;CREATE_FUNCTION&quot;: CREATE FUNCTION query. &quot;CREATE_MODEL&quot;: CREATE [OR REPLACE] MODEL ... AS SELECT ... . &quot;CREATE_PROCEDURE&quot;: CREATE PROCEDURE query. &quot;CREATE_TABLE&quot;: CREATE [OR REPLACE] TABLE without AS SELECT. &quot;CREATE_TABLE_AS_SELECT&quot;: CREATE [OR REPLACE] TABLE ... AS SELECT ... . &quot;CREATE_VIEW&quot;: CREATE [OR REPLACE] VIEW ... AS SELECT ... . &quot;DROP_FUNCTION&quot; : DROP FUNCTION query. &quot;DROP_PROCEDURE&quot;: DROP PROCEDURE query. &quot;DROP_TABLE&quot;: DROP TABLE query. &quot;DROP_VIEW&quot;: DROP VIEW query.
      &quot;timeline&quot;: [ # [Output-only] [Beta] Describes a timeline of job execution.
        {
          &quot;activeUnits&quot;: &quot;A String&quot;, # Total number of units currently being processed by workers. This does not correspond directly to slot usage. This is the largest value observed since the last sample.
          &quot;completedUnits&quot;: &quot;A String&quot;, # Total parallel units of work completed by this query.
          &quot;elapsedMs&quot;: &quot;A String&quot;, # Milliseconds elapsed since the start of query execution.
          &quot;pendingUnits&quot;: &quot;A String&quot;, # Total parallel units of work remaining for the active stages.
          &quot;totalSlotMs&quot;: &quot;A String&quot;, # Cumulative slot-ms consumed by the query.
        },
      ],
      &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed for the job.
      &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
      &quot;totalBytesProcessedAccuracy&quot;: &quot;A String&quot;, # [Output-only] For dry-run jobs, totalBytesProcessed is an estimate and this field specifies the accuracy of the estimate. Possible values can be: UNKNOWN: accuracy of the estimate is unknown. PRECISE: estimate is precise. LOWER_BOUND: estimate is lower bound of what the query would cost. UPPER_BOUND: estimate is upper bound of what the query would cost.
      &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
      &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
      &quot;undeclaredQueryParameters&quot;: [ # Standard SQL only: list of undeclared query parameters detected during a dry run validation.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
          &quot;parameterType&quot;: { # [Required] The type of this parameter.
            &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
            &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
              {
                &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
          },
          &quot;parameterValue&quot;: { # [Required] The value of this parameter.
            &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
              # Object with schema name: QueryParameterValue
            ],
            &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
              &quot;a_key&quot;: # Object with schema name: QueryParameterValue
            },
            &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
          },
        },
      ],
    },
    &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
      &quot;A String&quot;,
    ],
    &quot;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
      {
        &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
        &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
      },
    ],
    &quot;reservation_id&quot;: &quot;A String&quot;, # [Output-only] Name of the primary reservation assigned to this job. Note that this could be different than reservations reported in the reservation usage field if parent reservations were used to execute this job.
    &quot;rowLevelSecurityStatistics&quot;: { # [Output-only] [Preview] Statistics for row-level security. Present only for query and extract jobs.
      &quot;rowLevelSecurityApplied&quot;: True or False, # [Output-only] [Preview] Whether any accessed data was protected by row access policies.
    },
    &quot;scriptStatistics&quot;: { # [Output-only] Statistics for a child job of a script.
      &quot;evaluationKind&quot;: &quot;A String&quot;, # [Output-only] Whether this child job was a statement or expression.
      &quot;stackFrames&quot;: [ # Stack trace showing the line/column/procedure name of each frame on the stack at the point where the current evaluation happened. The leaf frame is first, the primary script is last. Never empty.
        {
          &quot;endColumn&quot;: 42, # [Output-only] One-based end column.
          &quot;endLine&quot;: 42, # [Output-only] One-based end line.
          &quot;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
          &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
          &quot;startLine&quot;: 42, # [Output-only] One-based start line.
          &quot;text&quot;: &quot;A String&quot;, # [Output-only] Text of the current statement/expression.
        },
      ],
    },
    &quot;sessionInfoTemplate&quot;: { # [Output-only] [Preview] Information of the session if this job is part of one.
      &quot;sessionId&quot;: &quot;A String&quot;, # [Output-only] // [Preview] Id of the session.
    },
    &quot;startTime&quot;: &quot;A String&quot;, # [Output-only] Start time of this job, in milliseconds since the epoch. This field will be present when the job transitions from the PENDING state to either RUNNING or DONE.
    &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
    &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
    &quot;transactionInfoTemplate&quot;: { # [Output-only] [Alpha] Information of the multi-statement transaction if this job is part of one.
      &quot;transactionId&quot;: &quot;A String&quot;, # [Output-only] // [Alpha] Id of the transaction.
    },
  },
  &quot;status&quot;: { # [Output-only] The status of this job. Examine this value when polling an asynchronous job to see if the job is complete.
    &quot;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
      &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
      &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
      &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
      &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
    },
    &quot;errors&quot;: [ # [Output-only] The first errors encountered during the running of the job. The final message includes the number of errors that caused the process to stop. Errors here do not necessarily mean that the job has completed or was unsuccessful.
      {
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
    ],
    &quot;state&quot;: &quot;A String&quot;, # [Output-only] Running state of the job.
  },
  &quot;user_email&quot;: &quot;A String&quot;, # [Output-only] Email address of the user who ran the job.
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    {
  &quot;configuration&quot;: { # [Required] Describes the job configuration.
    &quot;copy&quot;: { # [Pick one] Copies a table.
      &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;destinationEncryptionConfiguration&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;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
      &quot;destinationTable&quot;: { # [Required] The destination table
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
      &quot;sourceTable&quot;: { # [Pick one] Source table to copy.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
    &quot;dryRun&quot;: True or False, # [Optional] If set, don&#x27;t actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn&#x27;t a dry run. Behavior of non-query jobs is undefined.
    &quot;extract&quot;: { # [Pick one] Configures an extract job.
      &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE. The default value is NONE. DEFLATE and SNAPPY are only supported for Avro. Not applicable when extracting models.
      &quot;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON, PARQUET or AVRO for tables and ML_TF_SAVED_MODEL or ML_XGBOOST_BOOSTER for models. The default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV. The default value for models is ML_TF_SAVED_MODEL.
      &quot;destinationUri&quot;: &quot;A String&quot;, # [Pick one] DEPRECATED: Use destinationUris instead, passing only one URI as necessary. The fully-qualified Google Cloud Storage URI where the extracted table should be written.
      &quot;destinationUris&quot;: [ # [Pick one] A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written.
        &quot;A String&quot;,
      ],
      &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] Delimiter to use between fields in the exported data. Default is &#x27;,&#x27;. Not applicable when extracting models.
      &quot;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
      &quot;sourceModel&quot;: { # A reference to the model being exported.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
        &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
      },
      &quot;sourceTable&quot;: { # A reference to the table being exported.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;useAvroLogicalTypes&quot;: True or False, # [Optional] If destinationFormat is set to &quot;AVRO&quot;, this flag indicates whether to enable extracting applicable column types (such as TIMESTAMP) to their corresponding AVRO logical types (timestamp-micros), instead of only using their raw types (avro-long). Not applicable when extracting models.
    },
    &quot;jobTimeoutMs&quot;: &quot;A String&quot;, # [Optional] Job timeout in milliseconds. If this time limit is exceeded, BigQuery may attempt to terminate the job.
    &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
    &quot;labels&quot;: { # The labels associated with this job. You can use these to organize and group your jobs. 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;load&quot;: { # [Pick one] Configures a load job.
      &quot;allowJaggedRows&quot;: True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. 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. Only applicable to CSV, ignored for other formats.
      &quot;allowQuotedNewlines&quot;: True or False, # Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
      &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;decimalTargetTypes&quot;: [ # Defines the list of possible SQL data types to which the source decimal values are converted. This list and the precision and the scale parameters of the decimal field determine the target type. In the order of NUMERIC, BIGNUMERIC ([Preview](/products/#product-launch-stages)), and STRING, a type is picked if it is in the specified list and if it supports the precision and the scale. STRING supports all precision and scale values. If none of the listed types supports the precision and the scale, the type supporting the widest range in the specified list is picked, and if a value exceeds the supported range when reading the data, an error will be thrown. Example: Suppose the value of this field is [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. If (precision,scale) is: * (38,9) -&gt; NUMERIC; * (39,9) -&gt; BIGNUMERIC (NUMERIC cannot hold 30 integer digits); * (38,10) -&gt; BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); * (76,38) -&gt; BIGNUMERIC; * (77,38) -&gt; BIGNUMERIC (error if value exeeds supported range). This field cannot contain duplicate types. The order of the types in this field is ignored. For example, [&quot;BIGNUMERIC&quot;, &quot;NUMERIC&quot;] is the same as [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;] and NUMERIC always takes precedence over BIGNUMERIC. Defaults to [&quot;NUMERIC&quot;, &quot;STRING&quot;] for ORC and [&quot;NUMERIC&quot;] for the other file formats.
        &quot;A String&quot;,
      ],
      &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Required] The destination table to load the data into.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
        &quot;description&quot;: &quot;A String&quot;, # [Optional] The description for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current description is provided, the job will fail.
        &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] The friendly name for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current friendly name is provided, the job will fail.
        &quot;labels&quot;: { # [Optional] The labels associated with this table. You can use these to organize and group your tables. This will only be used if the destination table is newly created. If the table already exists and labels are different than the current labels are provided, the job will fail.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &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;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. 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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
        &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
        &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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
      &quot;jsonExtension&quot;: &quot;A String&quot;, # [Optional] If sourceFormat is set to newline-delimited JSON, indicates whether it should be processed as a JSON variant such as GeoJSON. For a sourceFormat other than JSON, omit this field. If the sourceFormat is newline-delimited JSON: - for newline-delimited GeoJSON: set to GEOJSON.
      &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV and JSON. The default value is 0, which requires that all records are valid.
      &quot;nullMarker&quot;: &quot;A String&quot;, # [Optional] Specifies a string that represents a null value in a CSV file. For example, if you specify &quot;\N&quot;, BigQuery interprets &quot;\N&quot; as a null value when loading a CSV file. The default value is the empty string. If you set this property to a custom value, BigQuery throws an error if an empty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as an empty value.
      &quot;parquetOptions&quot;: { # [Optional] Options to configure parquet support.
        &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
        &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
      },
      &quot;projectionFields&quot;: [ # If sourceFormat is set to &quot;DATASTORE_BACKUP&quot;, indicates which entity properties to load into BigQuery from a Cloud Datastore backup. Property names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties. If any named property isn&#x27;t found in the Cloud Datastore backup, an invalid error is returned in the job result.
        &quot;A String&quot;,
      ],
      &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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          &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;schema&quot;: { # [Optional] The schema for the destination table. The schema can be omitted if the destination table already exists, or if you&#x27;re loading data from Google Cloud Datastore.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
            &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
            &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
            &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;schemaInline&quot;: &quot;A String&quot;, # [Deprecated] The inline schema. For CSV schemas, specify as &quot;Field1:Type1[,Field2:Type2]*&quot;. For example, &quot;foo:STRING, bar:INTEGER, baz:FLOAT&quot;.
      &quot;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
      &quot;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the load job if a schema is autodetected or supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
        &quot;A String&quot;,
      ],
      &quot;skipLeadingRows&quot;: 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
      &quot;sourceFormat&quot;: &quot;A String&quot;, # [Optional] The format of the data files. For CSV files, specify &quot;CSV&quot;. For datastore backups, specify &quot;DATASTORE_BACKUP&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro, specify &quot;AVRO&quot;. For parquet, specify &quot;PARQUET&quot;. For orc, specify &quot;ORC&quot;. The default value is CSV.
      &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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;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;requirePartitionFilter&quot;: True or False,
        &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
      },
      &quot;useAvroLogicalTypes&quot;: True or False, # [Optional] If sourceFormat is set to &quot;AVRO&quot;, indicates whether to enable interpreting logical types into their corresponding types (ie. TIMESTAMP), instead of only using their raw types (ie. INTEGER).
      &quot;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
    &quot;query&quot;: { # [Pick one] Configures a query job.
      &quot;allowLargeResults&quot;: false, # [Optional] If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance. Requires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed. However, you must still set destinationTable when result size exceeds the allowed maximum response size.
      &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;connectionProperties&quot;: [ # Connection properties.
        {
          &quot;key&quot;: &quot;A String&quot;, # [Required] Name of the connection property to set.
          &quot;value&quot;: &quot;A String&quot;, # [Required] Value of the connection property.
        },
      ],
      &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
      &quot;createSession&quot;: True or False, # If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs query in non-session mode.
      &quot;defaultDataset&quot;: { # [Optional] Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
      },
      &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results. This property must be set for large results that exceed the maximum response size.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;flattenResults&quot;: true, # [Optional] If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results. allowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened.
      &quot;maximumBillingTier&quot;: 1, # [Optional] Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge). If unspecified, this will be set to your project default.
      &quot;maximumBytesBilled&quot;: &quot;A String&quot;, # [Optional] Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge). If unspecified, this will be set to your project default.
      &quot;parameterMode&quot;: &quot;A String&quot;, # Standard SQL only. Set to POSITIONAL to use positional (?) query parameters or to NAMED to use named (@myparam) query parameters in this query.
      &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
      &quot;priority&quot;: &quot;A String&quot;, # [Optional] Specifies a priority for the query. Possible values include INTERACTIVE and BATCH. The default value is INTERACTIVE.
      &quot;query&quot;: &quot;A String&quot;, # [Required] SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL.
      &quot;queryParameters&quot;: [ # Query parameters for standard SQL queries.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
          &quot;parameterType&quot;: { # [Required] The type of this parameter.
            &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
            &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
              {
                &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
          },
          &quot;parameterValue&quot;: { # [Required] The value of this parameter.
            &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
              # Object with schema name: QueryParameterValue
            ],
            &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
              &quot;a_key&quot;: # Object with schema name: QueryParameterValue
            },
            &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
          },
        },
      ],
      &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          &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;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the query job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
        &quot;A String&quot;,
      ],
      &quot;tableDefinitions&quot;: { # [Optional] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
        &quot;a_key&quot;: {
          &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
          &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
            &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;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;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;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;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;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;qualifierString&quot;: &quot;A String&quot;,
                    &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;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;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                &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;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;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;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;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
          &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
            &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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
            &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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;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;parquetOptions&quot;: { # Additional properties to set if sourceFormat is set to Parquet.
            &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
            &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
          },
          &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;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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
                &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                  # Object with schema name: TableFieldSchema
                ],
                &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
                &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
                &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &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;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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
        &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;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;requirePartitionFilter&quot;: True or False,
        &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
      },
      &quot;useLegacySql&quot;: true, # Specifies whether to use BigQuery&#x27;s legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false.
      &quot;useQueryCache&quot;: true, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified. The default value is true.
      &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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
    },
  },
  &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of this resource.
  &quot;id&quot;: &quot;A String&quot;, # [Output-only] Opaque ID field of the job
  &quot;jobReference&quot;: { # [Optional] Reference describing the unique-per-user name of the job.
    &quot;jobId&quot;: &quot;A String&quot;, # [Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters.
    &quot;location&quot;: &quot;A String&quot;, # The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
    &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
  },
  &quot;kind&quot;: &quot;bigquery#job&quot;, # [Output-only] The type of the resource.
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
  &quot;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
    &quot;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
    &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] Creation time of this job, in milliseconds since the epoch. This field will be present on all jobs.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output-only] End time of this job, in milliseconds since the epoch. This field will be present whenever a job is in the DONE state.
    &quot;extract&quot;: { # [Output-only] Statistics for an extract job.
      &quot;destinationUriFileCounts&quot;: [ # [Output-only] Number of files per destination URI or URI pattern specified in the extract configuration. These values will be in the same order as the URIs specified in the &#x27;destinationUris&#x27; field.
        &quot;A String&quot;,
      ],
      &quot;inputBytes&quot;: &quot;A String&quot;, # [Output-only] Number of user bytes extracted into the result. This is the byte count as computed by BigQuery for billing purposes.
    },
    &quot;load&quot;: { # [Output-only] Statistics for a load job.
      &quot;badRecords&quot;: &quot;A String&quot;, # [Output-only] The number of bad records encountered. Note that if the job has failed because of more bad records encountered than the maximum allowed in the load job configuration, then this number can be less than the total number of bad records present in the input data.
      &quot;inputFileBytes&quot;: &quot;A String&quot;, # [Output-only] Number of bytes of source data in a load job.
      &quot;inputFiles&quot;: &quot;A String&quot;, # [Output-only] Number of source files in a load job.
      &quot;outputBytes&quot;: &quot;A String&quot;, # [Output-only] Size of the loaded data in bytes. Note that while a load job is in the running state, this value may change.
      &quot;outputRows&quot;: &quot;A String&quot;, # [Output-only] Number of rows imported in a load job. Note that while an import job is in the running state, this value may change.
    },
    &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
    &quot;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
    &quot;query&quot;: { # [Output-only] Statistics for a query job.
      &quot;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
      &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
      &quot;ddlAffectedRowAccessPolicyCount&quot;: &quot;A String&quot;, # [Output-only] [Preview] The number of row access policies affected by a DDL statement. Present only for DROP ALL ROW ACCESS POLICIES queries.
      &quot;ddlOperationPerformed&quot;: &quot;A String&quot;, # The DDL operation performed, possibly dependent on the pre-existence of the DDL target. Possible values (new values might be added in the future): &quot;CREATE&quot;: The query created the DDL target. &quot;SKIP&quot;: No-op. Example cases: the query is CREATE TABLE IF NOT EXISTS while the table already exists, or the query is DROP TABLE IF EXISTS while the table does not exist. &quot;REPLACE&quot;: The query replaced the DDL target. Example case: the query is CREATE OR REPLACE TABLE, and the table already exists. &quot;DROP&quot;: The query deleted the DDL target.
      &quot;ddlTargetDataset&quot;: { # [Output-only] The DDL target dataset. Present only for CREATE/ALTER/DROP SCHEMA queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
      },
      &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
        &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
      },
      &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this row access policy.
        &quot;policyId&quot;: &quot;A String&quot;, # [Required] The ID of the row access policy. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
        &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
      },
      &quot;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
      &quot;modelTraining&quot;: { # [Output-only, Beta] Information about create model query job progress.
        &quot;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
        &quot;expectedTotalIterations&quot;: &quot;A String&quot;, # [Output-only, Beta] Expected number of iterations for the create model query job specified as num_iterations in the input query. The actual total number of iterations may be less than this number due to early stop.
      },
      &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
      &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
      &quot;numDmlAffectedRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows affected by a DML statement. Present only for DML statements INSERT, UPDATE or DELETE.
      &quot;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
        {
          &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
          &quot;computeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on CPU-bound tasks.
          &quot;computeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on CPU-bound tasks.
          &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
          &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
          &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
          &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
          &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
            &quot;A String&quot;,
          ],
          &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
          &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
          &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
          &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
          &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
          &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
          &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
          &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
          &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
          &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
          &quot;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
          &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
          &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
          &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
            {
              &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
              &quot;substeps&quot;: [ # Human-readable stage descriptions.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
          &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
          &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
          &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
          &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
          &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
          &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
          &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
        },
      ],
      &quot;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
          &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
        },
      ],
      &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
        {
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
          &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
        },
      ],
      &quot;schema&quot;: { # [Output-only] The schema of the results. Present only for successful dry run of non-legacy SQL queries.
        &quot;fields&quot;: [ # Describes the fields in a table.
          {
            &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
            &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
            &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
            &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;statementType&quot;: &quot;A String&quot;, # The type of query statement, if valid. Possible values (new values might be added in the future): &quot;SELECT&quot;: SELECT query. &quot;INSERT&quot;: INSERT query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;UPDATE&quot;: UPDATE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;DELETE&quot;: DELETE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;MERGE&quot;: MERGE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;ALTER_TABLE&quot;: ALTER TABLE query. &quot;ALTER_VIEW&quot;: ALTER VIEW query. &quot;ASSERT&quot;: ASSERT condition AS &#x27;description&#x27;. &quot;CREATE_FUNCTION&quot;: CREATE FUNCTION query. &quot;CREATE_MODEL&quot;: CREATE [OR REPLACE] MODEL ... AS SELECT ... . &quot;CREATE_PROCEDURE&quot;: CREATE PROCEDURE query. &quot;CREATE_TABLE&quot;: CREATE [OR REPLACE] TABLE without AS SELECT. &quot;CREATE_TABLE_AS_SELECT&quot;: CREATE [OR REPLACE] TABLE ... AS SELECT ... . &quot;CREATE_VIEW&quot;: CREATE [OR REPLACE] VIEW ... AS SELECT ... . &quot;DROP_FUNCTION&quot; : DROP FUNCTION query. &quot;DROP_PROCEDURE&quot;: DROP PROCEDURE query. &quot;DROP_TABLE&quot;: DROP TABLE query. &quot;DROP_VIEW&quot;: DROP VIEW query.
      &quot;timeline&quot;: [ # [Output-only] [Beta] Describes a timeline of job execution.
        {
          &quot;activeUnits&quot;: &quot;A String&quot;, # Total number of units currently being processed by workers. This does not correspond directly to slot usage. This is the largest value observed since the last sample.
          &quot;completedUnits&quot;: &quot;A String&quot;, # Total parallel units of work completed by this query.
          &quot;elapsedMs&quot;: &quot;A String&quot;, # Milliseconds elapsed since the start of query execution.
          &quot;pendingUnits&quot;: &quot;A String&quot;, # Total parallel units of work remaining for the active stages.
          &quot;totalSlotMs&quot;: &quot;A String&quot;, # Cumulative slot-ms consumed by the query.
        },
      ],
      &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed for the job.
      &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
      &quot;totalBytesProcessedAccuracy&quot;: &quot;A String&quot;, # [Output-only] For dry-run jobs, totalBytesProcessed is an estimate and this field specifies the accuracy of the estimate. Possible values can be: UNKNOWN: accuracy of the estimate is unknown. PRECISE: estimate is precise. LOWER_BOUND: estimate is lower bound of what the query would cost. UPPER_BOUND: estimate is upper bound of what the query would cost.
      &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
      &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
      &quot;undeclaredQueryParameters&quot;: [ # Standard SQL only: list of undeclared query parameters detected during a dry run validation.
        {
          &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
          &quot;parameterType&quot;: { # [Required] The type of this parameter.
            &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
            &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
              {
                &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
          },
          &quot;parameterValue&quot;: { # [Required] The value of this parameter.
            &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
              # Object with schema name: QueryParameterValue
            ],
            &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
              &quot;a_key&quot;: # Object with schema name: QueryParameterValue
            },
            &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
          },
        },
      ],
    },
    &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
      &quot;A String&quot;,
    ],
    &quot;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
      {
        &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
        &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
      },
    ],
    &quot;reservation_id&quot;: &quot;A String&quot;, # [Output-only] Name of the primary reservation assigned to this job. Note that this could be different than reservations reported in the reservation usage field if parent reservations were used to execute this job.
    &quot;rowLevelSecurityStatistics&quot;: { # [Output-only] [Preview] Statistics for row-level security. Present only for query and extract jobs.
      &quot;rowLevelSecurityApplied&quot;: True or False, # [Output-only] [Preview] Whether any accessed data was protected by row access policies.
    },
    &quot;scriptStatistics&quot;: { # [Output-only] Statistics for a child job of a script.
      &quot;evaluationKind&quot;: &quot;A String&quot;, # [Output-only] Whether this child job was a statement or expression.
      &quot;stackFrames&quot;: [ # Stack trace showing the line/column/procedure name of each frame on the stack at the point where the current evaluation happened. The leaf frame is first, the primary script is last. Never empty.
        {
          &quot;endColumn&quot;: 42, # [Output-only] One-based end column.
          &quot;endLine&quot;: 42, # [Output-only] One-based end line.
          &quot;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
          &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
          &quot;startLine&quot;: 42, # [Output-only] One-based start line.
          &quot;text&quot;: &quot;A String&quot;, # [Output-only] Text of the current statement/expression.
        },
      ],
    },
    &quot;sessionInfoTemplate&quot;: { # [Output-only] [Preview] Information of the session if this job is part of one.
      &quot;sessionId&quot;: &quot;A String&quot;, # [Output-only] // [Preview] Id of the session.
    },
    &quot;startTime&quot;: &quot;A String&quot;, # [Output-only] Start time of this job, in milliseconds since the epoch. This field will be present when the job transitions from the PENDING state to either RUNNING or DONE.
    &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
    &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
    &quot;transactionInfoTemplate&quot;: { # [Output-only] [Alpha] Information of the multi-statement transaction if this job is part of one.
      &quot;transactionId&quot;: &quot;A String&quot;, # [Output-only] // [Alpha] Id of the transaction.
    },
  },
  &quot;status&quot;: { # [Output-only] The status of this job. Examine this value when polling an asynchronous job to see if the job is complete.
    &quot;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
      &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
      &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
      &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
      &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
    },
    &quot;errors&quot;: [ # [Output-only] The first errors encountered during the running of the job. The final message includes the number of errors that caused the process to stop. Errors here do not necessarily mean that the job has completed or was unsuccessful.
      {
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
    ],
    &quot;state&quot;: &quot;A String&quot;, # [Output-only] Running state of the job.
  },
  &quot;user_email&quot;: &quot;A String&quot;, # [Output-only] Email address of the user who ran the job.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, allUsers=None, maxCreationTime=None, maxResults=None, minCreationTime=None, pageToken=None, parentJobId=None, projection=None, stateFilter=None)</code>
  <pre>Lists all jobs that you started in the specified project. Job information is available for a six month period after creation. The job list is sorted in reverse chronological order, by job creation time. Requires the Can View project role, or the Is Owner project role if you set the allUsers property.

Args:
  projectId: string, Project ID of the jobs to list (required)
  allUsers: boolean, Whether to display jobs owned by all users in the project. Default false
  maxCreationTime: string, Max value for job creation time, in milliseconds since the POSIX epoch. If set, only jobs created before or at this timestamp are returned
  maxResults: integer, Maximum number of results to return
  minCreationTime: string, Min value for job creation time, in milliseconds since the POSIX epoch. If set, only jobs created after or at this timestamp are returned
  pageToken: string, Page token, returned by a previous call, to request the next page of results
  parentJobId: string, If set, retrieves only jobs whose parent is this job. Otherwise, retrieves only jobs which have no parent
  projection: string, Restrict information returned to a set of selected fields
    Allowed values
      full - Includes all job data
      minimal - Does not include the job configuration
  stateFilter: string, Filter for job state (repeated)
    Allowed values
      done - Finished jobs
      pending - Pending jobs
      running - Running jobs

Returns:
  An object of the form:

    {
  &quot;etag&quot;: &quot;A String&quot;, # A hash of this page of results.
  &quot;jobs&quot;: [ # List of jobs that were requested.
    {
      &quot;configuration&quot;: { # [Full-projection-only] Specifies the job configuration.
        &quot;copy&quot;: { # [Pick one] Copies a table.
          &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
          &quot;destinationEncryptionConfiguration&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;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
          &quot;destinationTable&quot;: { # [Required] The destination table
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
          &quot;sourceTable&quot;: { # [Pick one] Source table to copy.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
            {
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
        },
        &quot;dryRun&quot;: True or False, # [Optional] If set, don&#x27;t actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn&#x27;t a dry run. Behavior of non-query jobs is undefined.
        &quot;extract&quot;: { # [Pick one] Configures an extract job.
          &quot;compression&quot;: &quot;A String&quot;, # [Optional] The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE. The default value is NONE. DEFLATE and SNAPPY are only supported for Avro. Not applicable when extracting models.
          &quot;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON, PARQUET or AVRO for tables and ML_TF_SAVED_MODEL or ML_XGBOOST_BOOSTER for models. The default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV. The default value for models is ML_TF_SAVED_MODEL.
          &quot;destinationUri&quot;: &quot;A String&quot;, # [Pick one] DEPRECATED: Use destinationUris instead, passing only one URI as necessary. The fully-qualified Google Cloud Storage URI where the extracted table should be written.
          &quot;destinationUris&quot;: [ # [Pick one] A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written.
            &quot;A String&quot;,
          ],
          &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] Delimiter to use between fields in the exported data. Default is &#x27;,&#x27;. Not applicable when extracting models.
          &quot;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
          &quot;sourceModel&quot;: { # A reference to the model being exported.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
            &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
          },
          &quot;sourceTable&quot;: { # A reference to the table being exported.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;useAvroLogicalTypes&quot;: True or False, # [Optional] If destinationFormat is set to &quot;AVRO&quot;, this flag indicates whether to enable extracting applicable column types (such as TIMESTAMP) to their corresponding AVRO logical types (timestamp-micros), instead of only using their raw types (avro-long). Not applicable when extracting models.
        },
        &quot;jobTimeoutMs&quot;: &quot;A String&quot;, # [Optional] Job timeout in milliseconds. If this time limit is exceeded, BigQuery may attempt to terminate the job.
        &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
        &quot;labels&quot;: { # The labels associated with this job. You can use these to organize and group your jobs. 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;load&quot;: { # [Pick one] Configures a load job.
          &quot;allowJaggedRows&quot;: True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. 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. Only applicable to CSV, ignored for other formats.
          &quot;allowQuotedNewlines&quot;: True or False, # Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.
          &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
          &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
          &quot;decimalTargetTypes&quot;: [ # Defines the list of possible SQL data types to which the source decimal values are converted. This list and the precision and the scale parameters of the decimal field determine the target type. In the order of NUMERIC, BIGNUMERIC ([Preview](/products/#product-launch-stages)), and STRING, a type is picked if it is in the specified list and if it supports the precision and the scale. STRING supports all precision and scale values. If none of the listed types supports the precision and the scale, the type supporting the widest range in the specified list is picked, and if a value exceeds the supported range when reading the data, an error will be thrown. Example: Suppose the value of this field is [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. If (precision,scale) is: * (38,9) -&gt; NUMERIC; * (39,9) -&gt; BIGNUMERIC (NUMERIC cannot hold 30 integer digits); * (38,10) -&gt; BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); * (76,38) -&gt; BIGNUMERIC; * (77,38) -&gt; BIGNUMERIC (error if value exeeds supported range). This field cannot contain duplicate types. The order of the types in this field is ignored. For example, [&quot;BIGNUMERIC&quot;, &quot;NUMERIC&quot;] is the same as [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;] and NUMERIC always takes precedence over BIGNUMERIC. Defaults to [&quot;NUMERIC&quot;, &quot;STRING&quot;] for ORC and [&quot;NUMERIC&quot;] for the other file formats.
            &quot;A String&quot;,
          ],
          &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Required] The destination table to load the data into.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
            &quot;description&quot;: &quot;A String&quot;, # [Optional] The description for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current description is provided, the job will fail.
            &quot;friendlyName&quot;: &quot;A String&quot;, # [Optional] The friendly name for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current friendly name is provided, the job will fail.
            &quot;labels&quot;: { # [Optional] The labels associated with this table. You can use these to organize and group your tables. This will only be used if the destination table is newly created. If the table already exists and labels are different than the current labels are provided, the job will fail.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &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;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. 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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
            &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
            &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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
          &quot;jsonExtension&quot;: &quot;A String&quot;, # [Optional] If sourceFormat is set to newline-delimited JSON, indicates whether it should be processed as a JSON variant such as GeoJSON. For a sourceFormat other than JSON, omit this field. If the sourceFormat is newline-delimited JSON: - for newline-delimited GeoJSON: set to GEOJSON.
          &quot;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV and JSON. The default value is 0, which requires that all records are valid.
          &quot;nullMarker&quot;: &quot;A String&quot;, # [Optional] Specifies a string that represents a null value in a CSV file. For example, if you specify &quot;\N&quot;, BigQuery interprets &quot;\N&quot; as a null value when loading a CSV file. The default value is the empty string. If you set this property to a custom value, BigQuery throws an error if an empty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as an empty value.
          &quot;parquetOptions&quot;: { # [Optional] Options to configure parquet support.
            &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
            &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
          },
          &quot;projectionFields&quot;: [ # If sourceFormat is set to &quot;DATASTORE_BACKUP&quot;, indicates which entity properties to load into BigQuery from a Cloud Datastore backup. Property names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties. If any named property isn&#x27;t found in the Cloud Datastore backup, an invalid error is returned in the job result.
            &quot;A String&quot;,
          ],
          &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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
            &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
              &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
              &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;schema&quot;: { # [Optional] The schema for the destination table. The schema can be omitted if the destination table already exists, or if you&#x27;re loading data from Google Cloud Datastore.
            &quot;fields&quot;: [ # Describes the fields in a table.
              {
                &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
                &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                  # Object with schema name: TableFieldSchema
                ],
                &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
                &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
                &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &quot;schemaInline&quot;: &quot;A String&quot;, # [Deprecated] The inline schema. For CSV schemas, specify as &quot;Field1:Type1[,Field2:Type2]*&quot;. For example, &quot;foo:STRING, bar:INTEGER, baz:FLOAT&quot;.
          &quot;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
          &quot;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the load job if a schema is autodetected or supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
            &quot;A String&quot;,
          ],
          &quot;skipLeadingRows&quot;: 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
          &quot;sourceFormat&quot;: &quot;A String&quot;, # [Optional] The format of the data files. For CSV files, specify &quot;CSV&quot;. For datastore backups, specify &quot;DATASTORE_BACKUP&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro, specify &quot;AVRO&quot;. For parquet, specify &quot;PARQUET&quot;. For orc, specify &quot;ORC&quot;. The default value is CSV.
          &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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
            &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;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;requirePartitionFilter&quot;: True or False,
            &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
          },
          &quot;useAvroLogicalTypes&quot;: True or False, # [Optional] If sourceFormat is set to &quot;AVRO&quot;, indicates whether to enable interpreting logical types into their corresponding types (ie. TIMESTAMP), instead of only using their raw types (ie. INTEGER).
          &quot;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
        },
        &quot;query&quot;: { # [Pick one] Configures a query job.
          &quot;allowLargeResults&quot;: false, # [Optional] If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance. Requires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed. However, you must still set destinationTable when result size exceeds the allowed maximum response size.
          &quot;clustering&quot;: { # [Beta] Clustering specification for the destination table. Must be specified with time-based 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;connectionProperties&quot;: [ # Connection properties.
            {
              &quot;key&quot;: &quot;A String&quot;, # [Required] Name of the connection property to set.
              &quot;value&quot;: &quot;A String&quot;, # [Required] Value of the connection property.
            },
          ],
          &quot;createDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a &#x27;notFound&#x27; error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion.
          &quot;createSession&quot;: True or False, # If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs query in non-session mode.
          &quot;defaultDataset&quot;: { # [Optional] Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
          },
          &quot;destinationEncryptionConfiguration&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;destinationTable&quot;: { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results. This property must be set for large results that exceed the maximum response size.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;flattenResults&quot;: true, # [Optional] If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results. allowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened.
          &quot;maximumBillingTier&quot;: 1, # [Optional] Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge). If unspecified, this will be set to your project default.
          &quot;maximumBytesBilled&quot;: &quot;A String&quot;, # [Optional] Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge). If unspecified, this will be set to your project default.
          &quot;parameterMode&quot;: &quot;A String&quot;, # Standard SQL only. Set to POSITIONAL to use positional (?) query parameters or to NAMED to use named (@myparam) query parameters in this query.
          &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
          &quot;priority&quot;: &quot;A String&quot;, # [Optional] Specifies a priority for the query. Possible values include INTERACTIVE and BATCH. The default value is INTERACTIVE.
          &quot;query&quot;: &quot;A String&quot;, # [Required] SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL.
          &quot;queryParameters&quot;: [ # Query parameters for standard SQL queries.
            {
              &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
              &quot;parameterType&quot;: { # [Required] The type of this parameter.
                &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
                &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                  {
                    &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                    &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                    &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                  },
                ],
                &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
              },
              &quot;parameterValue&quot;: { # [Required] The value of this parameter.
                &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                  # Object with schema name: QueryParameterValue
                ],
                &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
                  &quot;a_key&quot;: # Object with schema name: QueryParameterValue
                },
                &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
              },
            },
          ],
          &quot;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
            &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;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
              &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
              &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;schemaUpdateOptions&quot;: [ # Allows the schema of the destination table to be updated as a side effect of the query job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
            &quot;A String&quot;,
          ],
          &quot;tableDefinitions&quot;: { # [Optional] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
            &quot;a_key&quot;: {
              &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
              &quot;bigtableOptions&quot;: { # [Optional] Additional options if sourceFormat is set to BIGTABLE.
                &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;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;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;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;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;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;qualifierString&quot;: &quot;A String&quot;,
                        &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;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;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                    &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;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;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;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;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
              &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
                &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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional] Options to configure hive partitioning support.
                &quot;mode&quot;: &quot;A String&quot;, # [Optional] When set, what mode of hive partitioning to use when reading data. The following 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. (3) CUSTOM: partition key schema is encoded in the source URI prefix. 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;requirePartitionFilter&quot;: True or False, # [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail.
                &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional] 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;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;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;parquetOptions&quot;: { # Additional properties to set if sourceFormat is set to Parquet.
                &quot;enableListInference&quot;: True or False, # [Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type.
                &quot;enumAsString&quot;: True or False, # [Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.
              },
              &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;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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
                    &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                      # Object with schema name: TableFieldSchema
                    ],
                    &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
                    &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
                    &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                  },
                ],
              },
              &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;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;timePartitioning&quot;: { # Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified.
            &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;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;requirePartitionFilter&quot;: True or False,
            &quot;type&quot;: &quot;A String&quot;, # [Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY.
          },
          &quot;useLegacySql&quot;: true, # Specifies whether to use BigQuery&#x27;s legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false.
          &quot;useQueryCache&quot;: true, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified. The default value is true.
          &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;writeDisposition&quot;: &quot;A String&quot;, # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a &#x27;duplicate&#x27; error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
        },
      },
      &quot;errorResult&quot;: { # A result object that will be present only if the job has failed.
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
      &quot;id&quot;: &quot;A String&quot;, # Unique opaque ID of the job.
      &quot;jobReference&quot;: { # Job reference uniquely identifying the job.
        &quot;jobId&quot;: &quot;A String&quot;, # [Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters.
        &quot;location&quot;: &quot;A String&quot;, # The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
      },
      &quot;kind&quot;: &quot;bigquery#job&quot;, # The resource type.
      &quot;state&quot;: &quot;A String&quot;, # Running state of the job. When the state is DONE, errorResult can be checked to determine whether the job succeeded or failed.
      &quot;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
        &quot;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
        &quot;creationTime&quot;: &quot;A String&quot;, # [Output-only] Creation time of this job, in milliseconds since the epoch. This field will be present on all jobs.
        &quot;endTime&quot;: &quot;A String&quot;, # [Output-only] End time of this job, in milliseconds since the epoch. This field will be present whenever a job is in the DONE state.
        &quot;extract&quot;: { # [Output-only] Statistics for an extract job.
          &quot;destinationUriFileCounts&quot;: [ # [Output-only] Number of files per destination URI or URI pattern specified in the extract configuration. These values will be in the same order as the URIs specified in the &#x27;destinationUris&#x27; field.
            &quot;A String&quot;,
          ],
          &quot;inputBytes&quot;: &quot;A String&quot;, # [Output-only] Number of user bytes extracted into the result. This is the byte count as computed by BigQuery for billing purposes.
        },
        &quot;load&quot;: { # [Output-only] Statistics for a load job.
          &quot;badRecords&quot;: &quot;A String&quot;, # [Output-only] The number of bad records encountered. Note that if the job has failed because of more bad records encountered than the maximum allowed in the load job configuration, then this number can be less than the total number of bad records present in the input data.
          &quot;inputFileBytes&quot;: &quot;A String&quot;, # [Output-only] Number of bytes of source data in a load job.
          &quot;inputFiles&quot;: &quot;A String&quot;, # [Output-only] Number of source files in a load job.
          &quot;outputBytes&quot;: &quot;A String&quot;, # [Output-only] Size of the loaded data in bytes. Note that while a load job is in the running state, this value may change.
          &quot;outputRows&quot;: &quot;A String&quot;, # [Output-only] Number of rows imported in a load job. Note that while an import job is in the running state, this value may change.
        },
        &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
        &quot;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
        &quot;query&quot;: { # [Output-only] Statistics for a query job.
          &quot;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
          &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
          &quot;ddlAffectedRowAccessPolicyCount&quot;: &quot;A String&quot;, # [Output-only] [Preview] The number of row access policies affected by a DDL statement. Present only for DROP ALL ROW ACCESS POLICIES queries.
          &quot;ddlOperationPerformed&quot;: &quot;A String&quot;, # The DDL operation performed, possibly dependent on the pre-existence of the DDL target. Possible values (new values might be added in the future): &quot;CREATE&quot;: The query created the DDL target. &quot;SKIP&quot;: No-op. Example cases: the query is CREATE TABLE IF NOT EXISTS while the table already exists, or the query is DROP TABLE IF EXISTS while the table does not exist. &quot;REPLACE&quot;: The query replaced the DDL target. Example case: the query is CREATE OR REPLACE TABLE, and the table already exists. &quot;DROP&quot;: The query deleted the DDL target.
          &quot;ddlTargetDataset&quot;: { # [Output-only] The DDL target dataset. Present only for CREATE/ALTER/DROP SCHEMA queries.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
          },
          &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
            &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
          },
          &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this row access policy.
            &quot;policyId&quot;: &quot;A String&quot;, # [Required] The ID of the row access policy. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
          },
          &quot;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
          &quot;modelTraining&quot;: { # [Output-only, Beta] Information about create model query job progress.
            &quot;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
            &quot;expectedTotalIterations&quot;: &quot;A String&quot;, # [Output-only, Beta] Expected number of iterations for the create model query job specified as num_iterations in the input query. The actual total number of iterations may be less than this number due to early stop.
          },
          &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
          &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
          &quot;numDmlAffectedRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows affected by a DML statement. Present only for DML statements INSERT, UPDATE or DELETE.
          &quot;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
            {
              &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
              &quot;computeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on CPU-bound tasks.
              &quot;computeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on CPU-bound tasks.
              &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
              &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
              &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
              &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
              &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
                &quot;A String&quot;,
              ],
              &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
              &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
              &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
              &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
              &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
              &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
              &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
              &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
              &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
              &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
              &quot;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
              &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
              &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
              &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
                {
                  &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
                  &quot;substeps&quot;: [ # Human-readable stage descriptions.
                    &quot;A String&quot;,
                  ],
                },
              ],
              &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
              &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
              &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
              &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
              &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
              &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
              &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
              &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
            },
          ],
          &quot;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
            {
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this routine.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
              &quot;routineId&quot;: &quot;A String&quot;, # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.
            },
          ],
          &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
            {
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project 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;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
            {
              &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
              &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
            },
          ],
          &quot;schema&quot;: { # [Output-only] The schema of the results. Present only for successful dry run of non-legacy SQL queries.
            &quot;fields&quot;: [ # Describes the fields in a table.
              {
                &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
                &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                  # Object with schema name: TableFieldSchema
                ],
                &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
                &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
                &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &quot;statementType&quot;: &quot;A String&quot;, # The type of query statement, if valid. Possible values (new values might be added in the future): &quot;SELECT&quot;: SELECT query. &quot;INSERT&quot;: INSERT query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;UPDATE&quot;: UPDATE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;DELETE&quot;: DELETE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;MERGE&quot;: MERGE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. &quot;ALTER_TABLE&quot;: ALTER TABLE query. &quot;ALTER_VIEW&quot;: ALTER VIEW query. &quot;ASSERT&quot;: ASSERT condition AS &#x27;description&#x27;. &quot;CREATE_FUNCTION&quot;: CREATE FUNCTION query. &quot;CREATE_MODEL&quot;: CREATE [OR REPLACE] MODEL ... AS SELECT ... . &quot;CREATE_PROCEDURE&quot;: CREATE PROCEDURE query. &quot;CREATE_TABLE&quot;: CREATE [OR REPLACE] TABLE without AS SELECT. &quot;CREATE_TABLE_AS_SELECT&quot;: CREATE [OR REPLACE] TABLE ... AS SELECT ... . &quot;CREATE_VIEW&quot;: CREATE [OR REPLACE] VIEW ... AS SELECT ... . &quot;DROP_FUNCTION&quot; : DROP FUNCTION query. &quot;DROP_PROCEDURE&quot;: DROP PROCEDURE query. &quot;DROP_TABLE&quot;: DROP TABLE query. &quot;DROP_VIEW&quot;: DROP VIEW query.
          &quot;timeline&quot;: [ # [Output-only] [Beta] Describes a timeline of job execution.
            {
              &quot;activeUnits&quot;: &quot;A String&quot;, # Total number of units currently being processed by workers. This does not correspond directly to slot usage. This is the largest value observed since the last sample.
              &quot;completedUnits&quot;: &quot;A String&quot;, # Total parallel units of work completed by this query.
              &quot;elapsedMs&quot;: &quot;A String&quot;, # Milliseconds elapsed since the start of query execution.
              &quot;pendingUnits&quot;: &quot;A String&quot;, # Total parallel units of work remaining for the active stages.
              &quot;totalSlotMs&quot;: &quot;A String&quot;, # Cumulative slot-ms consumed by the query.
            },
          ],
          &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed for the job.
          &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
          &quot;totalBytesProcessedAccuracy&quot;: &quot;A String&quot;, # [Output-only] For dry-run jobs, totalBytesProcessed is an estimate and this field specifies the accuracy of the estimate. Possible values can be: UNKNOWN: accuracy of the estimate is unknown. PRECISE: estimate is precise. LOWER_BOUND: estimate is lower bound of what the query would cost. UPPER_BOUND: estimate is upper bound of what the query would cost.
          &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
          &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
          &quot;undeclaredQueryParameters&quot;: [ # Standard SQL only: list of undeclared query parameters detected during a dry run validation.
            {
              &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
              &quot;parameterType&quot;: { # [Required] The type of this parameter.
                &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
                &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                  {
                    &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                    &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                    &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                  },
                ],
                &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
              },
              &quot;parameterValue&quot;: { # [Required] The value of this parameter.
                &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                  # Object with schema name: QueryParameterValue
                ],
                &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
                  &quot;a_key&quot;: # Object with schema name: QueryParameterValue
                },
                &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
              },
            },
          ],
        },
        &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
          &quot;A String&quot;,
        ],
        &quot;reservationUsage&quot;: [ # [Output-only] Job resource usage breakdown by reservation.
          {
            &quot;name&quot;: &quot;A String&quot;, # [Output-only] Reservation name or &quot;unreserved&quot; for on-demand resources usage.
            &quot;slotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds the job spent in the given reservation.
          },
        ],
        &quot;reservation_id&quot;: &quot;A String&quot;, # [Output-only] Name of the primary reservation assigned to this job. Note that this could be different than reservations reported in the reservation usage field if parent reservations were used to execute this job.
        &quot;rowLevelSecurityStatistics&quot;: { # [Output-only] [Preview] Statistics for row-level security. Present only for query and extract jobs.
          &quot;rowLevelSecurityApplied&quot;: True or False, # [Output-only] [Preview] Whether any accessed data was protected by row access policies.
        },
        &quot;scriptStatistics&quot;: { # [Output-only] Statistics for a child job of a script.
          &quot;evaluationKind&quot;: &quot;A String&quot;, # [Output-only] Whether this child job was a statement or expression.
          &quot;stackFrames&quot;: [ # Stack trace showing the line/column/procedure name of each frame on the stack at the point where the current evaluation happened. The leaf frame is first, the primary script is last. Never empty.
            {
              &quot;endColumn&quot;: 42, # [Output-only] One-based end column.
              &quot;endLine&quot;: 42, # [Output-only] One-based end line.
              &quot;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
              &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
              &quot;startLine&quot;: 42, # [Output-only] One-based start line.
              &quot;text&quot;: &quot;A String&quot;, # [Output-only] Text of the current statement/expression.
            },
          ],
        },
        &quot;sessionInfoTemplate&quot;: { # [Output-only] [Preview] Information of the session if this job is part of one.
          &quot;sessionId&quot;: &quot;A String&quot;, # [Output-only] // [Preview] Id of the session.
        },
        &quot;startTime&quot;: &quot;A String&quot;, # [Output-only] Start time of this job, in milliseconds since the epoch. This field will be present when the job transitions from the PENDING state to either RUNNING or DONE.
        &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
        &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
        &quot;transactionInfoTemplate&quot;: { # [Output-only] [Alpha] Information of the multi-statement transaction if this job is part of one.
          &quot;transactionId&quot;: &quot;A String&quot;, # [Output-only] // [Alpha] Id of the transaction.
        },
      },
      &quot;status&quot;: { # [Full-projection-only] Describes the state of the job.
        &quot;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
          &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
          &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
          &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
        },
        &quot;errors&quot;: [ # [Output-only] The first errors encountered during the running of the job. The final message includes the number of errors that caused the process to stop. Errors here do not necessarily mean that the job has completed or was unsuccessful.
          {
            &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
            &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
            &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
            &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
          },
        ],
        &quot;state&quot;: &quot;A String&quot;, # [Output-only] Running state of the job.
      },
      &quot;user_email&quot;: &quot;A String&quot;, # [Full-projection-only] Email address of the user who ran the job.
    },
  ],
  &quot;kind&quot;: &quot;bigquery#jobList&quot;, # The resource type of the response.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to request the next page of results.
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="query">query(projectId, body=None)</code>
  <pre>Runs a BigQuery SQL query synchronously and returns query results if the query completes within a specified timeout.

Args:
  projectId: string, Project ID of the project billed for the query (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;connectionProperties&quot;: [ # Connection properties.
    {
      &quot;key&quot;: &quot;A String&quot;, # [Required] Name of the connection property to set.
      &quot;value&quot;: &quot;A String&quot;, # [Required] Value of the connection property.
    },
  ],
  &quot;createSession&quot;: True or False, # If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs query in non-session mode.
  &quot;defaultDataset&quot;: { # [Optional] Specifies the default datasetId and projectId to assume for any unqualified table names in the query. If not set, all table names in the query string must be qualified in the format &#x27;datasetId.tableId&#x27;.
    &quot;datasetId&quot;: &quot;A String&quot;, # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
    &quot;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
  },
  &quot;dryRun&quot;: True or False, # [Optional] If set to true, BigQuery doesn&#x27;t run the job. Instead, if the query is valid, BigQuery returns statistics about the job such as how many bytes would be processed. If the query is invalid, an error returns. The default value is false.
  &quot;kind&quot;: &quot;bigquery#queryRequest&quot;, # The resource type of the request.
  &quot;labels&quot;: { # The labels associated with this job. You can use these to organize and group your jobs. 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;location&quot;: &quot;A String&quot;, # The geographic location where the job should run. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
  &quot;maxResults&quot;: 42, # [Optional] The maximum number of rows of data to return per page of results. Setting this flag to a small value such as 1000 and then paging through results might improve reliability when the query result set is large. In addition to this limit, responses are also limited to 10 MB. By default, there is no maximum row count, and only the byte limit applies.
  &quot;maximumBytesBilled&quot;: &quot;A String&quot;, # [Optional] Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge). If unspecified, this will be set to your project default.
  &quot;parameterMode&quot;: &quot;A String&quot;, # Standard SQL only. Set to POSITIONAL to use positional (?) query parameters or to NAMED to use named (@myparam) query parameters in this query.
  &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
  &quot;query&quot;: &quot;A String&quot;, # [Required] A query string, following the BigQuery query syntax, of the query to execute. Example: &quot;SELECT count(f1) FROM [myProjectId:myDatasetId.myTableId]&quot;.
  &quot;queryParameters&quot;: [ # Query parameters for Standard SQL queries.
    {
      &quot;name&quot;: &quot;A String&quot;, # [Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query.
      &quot;parameterType&quot;: { # [Required] The type of this parameter.
        &quot;arrayType&quot;: # Object with schema name: QueryParameterType # [Optional] The type of the array&#x27;s elements, if this is an array.
        &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
          {
            &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
            &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
            &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
          },
        ],
        &quot;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
      },
      &quot;parameterValue&quot;: { # [Required] The value of this parameter.
        &quot;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
          # Object with schema name: QueryParameterValue
        ],
        &quot;structValues&quot;: { # [Optional] The struct field values, in order of the struct type&#x27;s declaration.
          &quot;a_key&quot;: # Object with schema name: QueryParameterValue
        },
        &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
      },
    },
  ],
  &quot;requestId&quot;: &quot;A String&quot;, # A unique user provided identifier to ensure idempotent behavior for queries. Note that this is different from the job_id. It has the following properties: 1. It is case-sensitive, limited to up to 36 ASCII characters. A UUID is recommended. 2. Read only queries can ignore this token since they are nullipotent by definition. 3. For the purposes of idempotency ensured by the request_id, a request is considered duplicate of another only if they have the same request_id and are actually duplicates. When determining whether a request is a duplicate of the previous request, all parameters in the request that may affect the behavior are considered. For example, query, connection_properties, query_parameters, use_legacy_sql are parameters that affect the result and are considered when determining whether a request is a duplicate, but properties like timeout_ms don&#x27;t affect the result and are thus not considered. Dry run query requests are never considered duplicate of another request. 4. When a duplicate mutating query request is detected, it returns: a. the results of the mutation if it completes successfully within the timeout. b. the running operation if it is still in progress at the end of the timeout. 5. Its lifetime is limited to 15 minutes. In other words, if two requests are sent with the same request_id, but more than 15 minutes apart, idempotency is not guaranteed.
  &quot;timeoutMs&quot;: 42, # [Optional] How long to wait for the query to complete, in milliseconds, before the request times out and returns. Note that this is only a timeout for the request, not the query. If the query takes longer to run than the timeout value, the call returns without any results and with the &#x27;jobComplete&#x27; flag set to false. You can call GetQueryResults() to wait for the query to complete and read the results. The default value is 10000 milliseconds (10 seconds).
  &quot;useLegacySql&quot;: true, # Specifies whether to use BigQuery&#x27;s legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery&#x27;s standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false.
  &quot;useQueryCache&quot;: true, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. The default value is true.
}


Returns:
  An object of the form:

    {
  &quot;cacheHit&quot;: True or False, # Whether the query result was fetched from the query cache.
  &quot;errors&quot;: [ # [Output-only] The first errors or warnings encountered during the running of the job. The final message includes the number of errors that caused the process to stop. Errors here do not necessarily mean that the job has completed or was unsuccessful.
    {
      &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
      &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
      &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
      &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
    },
  ],
  &quot;jobComplete&quot;: True or False, # Whether the query has completed or not. If rows or totalRows are present, this will always be true. If this is false, totalRows will not be available.
  &quot;jobReference&quot;: { # Reference to the Job that was created to run the query. This field will be present even if the original request timed out, in which case GetQueryResults can be used to read the results once the query has completed. Since this API only returns the first page of results, subsequent pages can be fetched via the same mechanism (GetQueryResults).
    &quot;jobId&quot;: &quot;A String&quot;, # [Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters.
    &quot;location&quot;: &quot;A String&quot;, # The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location.
    &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
  },
  &quot;kind&quot;: &quot;bigquery#queryResponse&quot;, # The resource type.
  &quot;numDmlAffectedRows&quot;: &quot;A String&quot;, # [Output-only] The number of rows affected by a DML statement. Present only for DML statements INSERT, UPDATE or DELETE.
  &quot;pageToken&quot;: &quot;A String&quot;, # A token used for paging results.
  &quot;rows&quot;: [ # An object with as many results as can be contained within the maximum permitted reply size. To get any additional rows, you can call GetQueryResults and specify the jobReference returned above.
    {
      &quot;f&quot;: [ # Represents a single row in the result set, consisting of one or more fields.
        {
          &quot;v&quot;: &quot;&quot;,
        },
      ],
    },
  ],
  &quot;schema&quot;: { # The schema of the results. Present only when the query completes successfully.
    &quot;fields&quot;: [ # Describes the fields in a table.
      {
        &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;description&quot;: &quot;A String&quot;, # [Optional] The field description. The maximum length is 1,024 characters.
        &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
          # Object with schema name: TableFieldSchema
        ],
        &quot;maxLength&quot;: &quot;A String&quot;, # [Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = &quot;STRING&quot;, then max_length represents the maximum UTF-8 length of strings in this field. If type = &quot;BYTES&quot;, then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ &quot;STRING&quot; and ≠ &quot;BYTES&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;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 300 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;precision&quot;: &quot;A String&quot;, # [Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ &quot;NUMERIC&quot; and ≠ &quot;BIGNUMERIC&quot;. If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = &quot;NUMERIC&quot;: 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = &quot;NUMERIC&quot;: 1 ≤ precision ≤ 29. - If type = &quot;BIGNUMERIC&quot;: 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid.
        &quot;scale&quot;: &quot;A String&quot;, # [Optional] See documentation for precision.
        &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), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
      },
    ],
  },
  &quot;sessionInfoTemplate&quot;: { # [Output-only] [Preview] Information of the session if this job is part of one.
    &quot;sessionId&quot;: &quot;A String&quot;, # [Output-only] // [Preview] Id of the session.
  },
  &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # The total number of bytes processed for this query. If this query was a dry run, this is the number of bytes that would be processed if the query were run.
  &quot;totalRows&quot;: &quot;A String&quot;, # The total number of rows in the complete query result set, which can be more than the number of rows in this single page of results.
}</pre>
</div>

</body></html>