<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="#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;: [ # [Trusted Tester] 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, 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. For example: suppose decimal_target_type = [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. Then 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). For duplicated types in this field, only one will be considered and the rest will be ignored. 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.
          &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, Trusted Tester] 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;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            },
          ],
        },
        &quot;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;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, Trusted Tester] 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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                },
              ],
            },
            &quot;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
            },
          ],
        },
        &quot;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;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="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;: [ # [Trusted Tester] 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, 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. For example: suppose decimal_target_type = [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. Then 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). For duplicated types in this field, only one will be considered and the rest will be ignored. 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.
        &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, Trusted Tester] 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;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;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;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, Trusted Tester] 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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &quot;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
      },
    ],
  },
  &quot;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;: [ # [Trusted Tester] 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, 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. For example: suppose decimal_target_type = [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. Then 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). For duplicated types in this field, only one will be considered and the rest will be ignored. 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.
        &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, Trusted Tester] 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;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;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;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, Trusted Tester] 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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &quot;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;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;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;: [ # [Trusted Tester] 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, 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. For example: suppose decimal_target_type = [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. Then 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). For duplicated types in this field, only one will be considered and the rest will be ignored. 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.
        &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, Trusted Tester] 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;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;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;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, Trusted Tester] 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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &quot;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
          },
        ],
      },
      &quot;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;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;: [ # [Trusted Tester] 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, 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. For example: suppose decimal_target_type = [&quot;NUMERIC&quot;, &quot;BIGNUMERIC&quot;]. Then 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). For duplicated types in this field, only one will be considered and the rest will be ignored. 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.
            &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, Trusted Tester] 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;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &quot;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;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, Trusted Tester] 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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                  },
                ],
              },
              &quot;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
              },
            ],
          },
          &quot;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;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;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;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 128 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;type&quot;: &quot;A String&quot;, # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
      },
    ],
  },
  &quot;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>