<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="#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, startIndex=None, location=None, pageToken=None, timeoutMs=None, maxResults=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, stateFilter=None, projection=None, minCreationTime=None, parentJobId=None, allUsers=None, pageToken=None, maxCreationTime=None, maxResults=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;kind&quot;: &quot;bigquery#jobCancelResponse&quot;, # The resource type of the response.
    &quot;job&quot;: { # The final state of the job.
      &quot;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
        &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;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;load&quot;: { # [Output-only] Statistics for 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;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;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;extract&quot;: { # [Output-only] Statistics for an extract job.
          &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;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;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;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;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
        &quot;query&quot;: { # [Output-only] Statistics for a query job.
          &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
          &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed 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;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
            {
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;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;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
            {
              &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
              &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
              &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
                {
                  &quot;substeps&quot;: [ # Human-readable stage descriptions.
                    &quot;A String&quot;,
                  ],
                  &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
                },
              ],
              &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
              &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
              &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
              &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
              &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
              &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
              &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
              &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
              &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
              &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
              &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
              &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
              &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
              &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
              &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
              &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
              &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
              &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
              &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
              &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
                &quot;A String&quot;,
              ],
              &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;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
              &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
              &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
              &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
              &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
            },
          ],
          &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
          &quot;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                &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;policyTags&quot;: {
                  &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                    &quot;A String&quot;,
                  ],
                },
                &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                  # Object with schema name: TableFieldSchema
                ],
                &quot;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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
          &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
            {
              &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            },
          ],
          &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
          &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
          &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;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;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;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
          &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
            &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;modelTraining&quot;: { # [Output-only, Beta] Information about create model query 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;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
          },
          &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
          &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;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
                &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                  {
                    &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                    &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                    &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                  },
                ],
              },
              &quot;parameterValue&quot;: { # [Required] The value of this parameter.
                &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                  # Object with schema name: QueryParameterValue
                ],
                &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
              },
            },
          ],
          &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
          &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
          &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;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;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
              &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;endColumn&quot;: 42, # [Output-only] One-based end column.
              &quot;endLine&quot;: 42, # [Output-only] One-based end line.
              &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
            },
          ],
        },
        &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
        &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
        &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
        &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;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
        &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
          &quot;A String&quot;,
        ],
        &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;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
      &quot;id&quot;: &quot;A String&quot;, # [Output-only] Opaque ID field of the job
      &quot;configuration&quot;: { # [Required] Describes the job configuration.
        &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
        &quot;extract&quot;: { # [Pick one] Configures an extract job.
          &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;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;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
          &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;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;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON 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;sourceModel&quot;: { # A reference to the model being exported.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
            &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          },
          &quot;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;sourceTable&quot;: { # A reference to the table being exported.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
        },
        &quot;copy&quot;: { # [Pick one] Copies a table.
          &quot;destinationTable&quot;: { # [Required] The destination 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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
          &quot;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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
            {
              &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            },
          ],
          &quot;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;sourceTable&quot;: { # [Pick one] Source table to copy.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
          &quot;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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
          &quot;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
        },
        &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;query&quot;: { # [Pick one] Configures a query job.
          &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;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;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;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;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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
            &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
              &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
              &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
              &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
            },
            &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
          },
          &quot;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;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;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;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;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
              &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
                &quot;A String&quot;,
              ],
              &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
                &quot;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;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
                &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
                &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
                &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
                &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
              },
              &quot;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;qualifierString&quot;: &quot;A String&quot;,
                        &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                        &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                        &quot;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;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;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
                    &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                    &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
                    &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
                  },
                ],
                &quot;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
              &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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                    &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;policyTags&quot;: {
                      &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                      # Object with schema name: TableFieldSchema
                    ],
                    &quot;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
                &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
                &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
              },
              &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
              &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
                &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
                &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
              },
              &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
              &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
              &quot;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;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;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
            &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;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
            &quot;requirePartitionFilter&quot;: True or False,
            &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
          },
          &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
          &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;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;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
              &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;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;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
          &quot;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
                &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                  {
                    &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                    &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                    &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                  },
                ],
              },
              &quot;parameterValue&quot;: { # [Required] The value of this parameter.
                &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                  # Object with schema name: QueryParameterValue
                ],
                &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
              },
            },
          ],
          &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;load&quot;: { # [Pick one] Configures a load job.
          &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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
            &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
              &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
              &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
              &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
            },
            &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
          },
          &quot;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;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                &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;policyTags&quot;: {
                  &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                    &quot;A String&quot;,
                  ],
                },
                &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                  # Object with schema name: TableFieldSchema
                ],
                &quot;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;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
          &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;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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
            &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;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;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;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;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;destinationTable&quot;: { # [Required] The destination table to load the data into.
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
          &quot;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;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;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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
            &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
            &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
          },
          &quot;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
            &quot;requirePartitionFilter&quot;: True or False,
            &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
          },
          &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
        },
        &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;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;user_email&quot;: &quot;A String&quot;, # [Output-only] Email address of the user who ran the job.
      &quot;kind&quot;: &quot;bigquery#job&quot;, # [Output-only] The type of the resource.
      &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of this resource.
      &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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
        &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;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;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;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
            &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
            &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
            &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;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
          &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
          &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
          &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
        },
      },
    },
  }</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;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
      &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;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;load&quot;: { # [Output-only] Statistics for 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;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;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;extract&quot;: { # [Output-only] Statistics for an extract job.
        &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;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;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;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;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
      &quot;query&quot;: { # [Output-only] Statistics for a query job.
        &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
        &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed 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;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
          {
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;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;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
          {
            &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
            &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
            &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
              {
                &quot;substeps&quot;: [ # Human-readable stage descriptions.
                  &quot;A String&quot;,
                ],
                &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
              },
            ],
            &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
            &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
            &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
            &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
            &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
            &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
            &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
            &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
            &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
            &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
            &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
            &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
            &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
            &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
            &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
            &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
            &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
            &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
            &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
            &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
              &quot;A String&quot;,
            ],
            &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;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
            &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
            &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
            &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
            &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
          },
        ],
        &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
              &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;policyTags&quot;: {
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
              &quot;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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
        &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
          {
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
        ],
        &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
        &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
        &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;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;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;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
        &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
          &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;modelTraining&quot;: { # [Output-only, Beta] Information about create model query 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;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
        },
        &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
        &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;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
              &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                {
                  &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                  &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                  &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                },
              ],
            },
            &quot;parameterValue&quot;: { # [Required] The value of this parameter.
              &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                # Object with schema name: QueryParameterValue
              ],
              &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
            },
          },
        ],
        &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
        &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
        &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;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;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
            &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;endColumn&quot;: 42, # [Output-only] One-based end column.
            &quot;endLine&quot;: 42, # [Output-only] One-based end line.
            &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
          },
        ],
      },
      &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
      &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
      &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
      &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;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
      &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
        &quot;A String&quot;,
      ],
      &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;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
    &quot;id&quot;: &quot;A String&quot;, # [Output-only] Opaque ID field of the job
    &quot;configuration&quot;: { # [Required] Describes the job configuration.
      &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
      &quot;extract&quot;: { # [Pick one] Configures an extract job.
        &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;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;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
        &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;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;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON 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;sourceModel&quot;: { # A reference to the model being exported.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
          &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        },
        &quot;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;sourceTable&quot;: { # A reference to the table being exported.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
      },
      &quot;copy&quot;: { # [Pick one] Copies a table.
        &quot;destinationTable&quot;: { # [Required] The destination 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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
          {
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
        ],
        &quot;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;sourceTable&quot;: { # [Pick one] Source table to copy.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
        &quot;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
      },
      &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;query&quot;: { # [Pick one] Configures a query job.
        &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;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;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;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;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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
          &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
            &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
            &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
            &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          },
          &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
        },
        &quot;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;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;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;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;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
            &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
              &quot;A String&quot;,
            ],
            &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
              &quot;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;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
              &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
              &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
              &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
              &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
            },
            &quot;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;qualifierString&quot;: &quot;A String&quot;,
                      &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                      &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                      &quot;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;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;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
                  &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                  &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
                  &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
                },
              ],
              &quot;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
            &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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                  &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;policyTags&quot;: {
                    &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                    # Object with schema name: TableFieldSchema
                  ],
                  &quot;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
              &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
              &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
            },
            &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
            &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
              &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
              &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
            },
            &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
            &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
            &quot;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;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;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
          &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;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
          &quot;requirePartitionFilter&quot;: True or False,
          &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
        },
        &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
        &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;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;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
            &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;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;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
              &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                {
                  &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                  &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                  &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                },
              ],
            },
            &quot;parameterValue&quot;: { # [Required] The value of this parameter.
              &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                # Object with schema name: QueryParameterValue
              ],
              &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
            },
          },
        ],
        &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;load&quot;: { # [Pick one] Configures a load job.
        &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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
          &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
            &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
            &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
            &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          },
          &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
        },
        &quot;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;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
              &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;policyTags&quot;: {
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
              &quot;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;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
        &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;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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
          &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;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;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;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;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;destinationTable&quot;: { # [Required] The destination table to load the data into.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;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;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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
          &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
          &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
        },
        &quot;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
          &quot;requirePartitionFilter&quot;: True or False,
          &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
        },
        &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
      },
      &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;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;user_email&quot;: &quot;A String&quot;, # [Output-only] Email address of the user who ran the job.
    &quot;kind&quot;: &quot;bigquery#job&quot;, # [Output-only] The type of the resource.
    &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of this resource.
    &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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
      &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;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;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;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
          &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
          &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;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="getQueryResults">getQueryResults(projectId, jobId, startIndex=None, location=None, pageToken=None, timeoutMs=None, maxResults=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)
  startIndex: string, Zero-based index of the starting row
  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.
  pageToken: string, Page token, returned by a previous call, to request the next page of results
  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
  maxResults: integer, Maximum number of results to read

Returns:
  An object of the form:

    {
    &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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
      &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;cacheHit&quot;: True or False, # Whether the query result was fetched from the query cache.
    &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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
          &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;policyTags&quot;: {
            &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
              &quot;A String&quot;,
            ],
          },
          &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
            # Object with schema name: TableFieldSchema
          ],
          &quot;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;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;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
    ],
    &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # The total number of bytes processed for this query.
    &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;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;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.
    &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;pageToken&quot;: &quot;A String&quot;, # A token used for paging results.
    &quot;kind&quot;: &quot;bigquery#getQueryResultsResponse&quot;, # The resource type of the response.
    &quot;etag&quot;: &quot;A String&quot;, # A hash of this response.
  }</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;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
    &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;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;load&quot;: { # [Output-only] Statistics for 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;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;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;extract&quot;: { # [Output-only] Statistics for an extract job.
      &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;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;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;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;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
    &quot;query&quot;: { # [Output-only] Statistics for a query job.
      &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
      &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed 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;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
        {
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;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;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
        {
          &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
          &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
          &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
            {
              &quot;substeps&quot;: [ # Human-readable stage descriptions.
                &quot;A String&quot;,
              ],
              &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
            },
          ],
          &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
          &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
          &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
          &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
          &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
          &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
          &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
          &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
          &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
          &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
          &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
          &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
          &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
          &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
          &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
          &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
          &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
          &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
          &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
          &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
            &quot;A String&quot;,
          ],
          &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;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
          &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
          &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
          &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
          &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
        },
      ],
      &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
        &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
      },
      &quot;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &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;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
            &quot;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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
      &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
        {
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
      ],
      &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
      &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
      &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;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;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;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
      &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
        &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
        &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;modelTraining&quot;: { # [Output-only, Beta] Information about create model query 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;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
      },
      &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
      &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;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
            &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
              {
                &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
              },
            ],
          },
          &quot;parameterValue&quot;: { # [Required] The value of this parameter.
            &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
              # Object with schema name: QueryParameterValue
            ],
            &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
          },
        },
      ],
      &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
      &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
      &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;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;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
          &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;endColumn&quot;: 42, # [Output-only] One-based end column.
          &quot;endLine&quot;: 42, # [Output-only] One-based end line.
          &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
        },
      ],
    },
    &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
    &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
    &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
    &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;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
    &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
      &quot;A String&quot;,
    ],
    &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;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
  &quot;id&quot;: &quot;A String&quot;, # [Output-only] Opaque ID field of the job
  &quot;configuration&quot;: { # [Required] Describes the job configuration.
    &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
    &quot;extract&quot;: { # [Pick one] Configures an extract job.
      &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;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;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
      &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;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;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON 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;sourceModel&quot;: { # A reference to the model being exported.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
        &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
      },
      &quot;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;sourceTable&quot;: { # A reference to the table being exported.
        &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
      },
    },
    &quot;copy&quot;: { # [Pick one] Copies a table.
      &quot;destinationTable&quot;: { # [Required] The destination 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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
      },
      &quot;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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
        {
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
      ],
      &quot;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;sourceTable&quot;: { # [Pick one] Source table to copy.
        &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
      },
      &quot;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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
      &quot;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
    },
    &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;query&quot;: { # [Pick one] Configures a query job.
      &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;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;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;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;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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
          &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
        },
        &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
      },
      &quot;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;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;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;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;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
          &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
            &quot;A String&quot;,
          ],
          &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
            &quot;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;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
            &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
            &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
            &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
            &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
          },
          &quot;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;qualifierString&quot;: &quot;A String&quot;,
                    &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                    &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                    &quot;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;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;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
                &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
                &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
              },
            ],
            &quot;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
          &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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                &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;policyTags&quot;: {
                  &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                    &quot;A String&quot;,
                  ],
                },
                &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                  # Object with schema name: TableFieldSchema
                ],
                &quot;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
            &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
            &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
          },
          &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
          &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
            &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
            &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
          },
          &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
          &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
          &quot;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;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;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
        &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;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
        &quot;requirePartitionFilter&quot;: True or False,
        &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
      },
      &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
      &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;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;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
          &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;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;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
      },
      &quot;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
            &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
              {
                &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
              },
            ],
          },
          &quot;parameterValue&quot;: { # [Required] The value of this parameter.
            &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
              # Object with schema name: QueryParameterValue
            ],
            &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
          },
        },
      ],
      &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;load&quot;: { # [Pick one] Configures a load job.
      &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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
        &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
          &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
          &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
          &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
        },
        &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
      },
      &quot;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;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
            &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;policyTags&quot;: {
              &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                &quot;A String&quot;,
              ],
            },
            &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
              # Object with schema name: TableFieldSchema
            ],
            &quot;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;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
      &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;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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
        &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;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;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;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;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;destinationTable&quot;: { # [Required] The destination table to load the data into.
        &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
        &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
      },
      &quot;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;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;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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
        &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
        &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
      },
      &quot;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
        &quot;requirePartitionFilter&quot;: True or False,
        &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
      },
      &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
    },
    &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;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;user_email&quot;: &quot;A String&quot;, # [Output-only] Email address of the user who ran the job.
  &quot;kind&quot;: &quot;bigquery#job&quot;, # [Output-only] The type of the resource.
  &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of this resource.
  &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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
    &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;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;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;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &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;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
      &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
      &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
      &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
      &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
    },
  },
}

  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;statistics&quot;: { # [Output-only] Information about the job, including starting time and ending time of the job.
      &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;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;load&quot;: { # [Output-only] Statistics for 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;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;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;extract&quot;: { # [Output-only] Statistics for an extract job.
        &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;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;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;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;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
      &quot;query&quot;: { # [Output-only] Statistics for a query job.
        &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
        &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed 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;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
          {
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;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;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
          {
            &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
            &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
            &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
              {
                &quot;substeps&quot;: [ # Human-readable stage descriptions.
                  &quot;A String&quot;,
                ],
                &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
              },
            ],
            &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
            &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
            &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
            &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
            &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
            &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
            &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
            &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
            &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
            &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
            &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
            &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
            &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
            &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
            &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
            &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
            &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
            &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
            &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
            &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
              &quot;A String&quot;,
            ],
            &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;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
            &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
            &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
            &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
            &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
          },
        ],
        &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
              &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;policyTags&quot;: {
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
              &quot;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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
        &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
          {
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
        ],
        &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
        &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
        &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;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;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;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
        &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
          &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;modelTraining&quot;: { # [Output-only, Beta] Information about create model query 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;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
        },
        &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
        &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;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
              &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                {
                  &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                  &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                  &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                },
              ],
            },
            &quot;parameterValue&quot;: { # [Required] The value of this parameter.
              &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                # Object with schema name: QueryParameterValue
              ],
              &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
            },
          },
        ],
        &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
        &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
        &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;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;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
            &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;endColumn&quot;: 42, # [Output-only] One-based end column.
            &quot;endLine&quot;: 42, # [Output-only] One-based end line.
            &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
          },
        ],
      },
      &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
      &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
      &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
      &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;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
      &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
        &quot;A String&quot;,
      ],
      &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;selfLink&quot;: &quot;A String&quot;, # [Output-only] A URL that can be used to access this resource again.
    &quot;id&quot;: &quot;A String&quot;, # [Output-only] Opaque ID field of the job
    &quot;configuration&quot;: { # [Required] Describes the job configuration.
      &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
      &quot;extract&quot;: { # [Pick one] Configures an extract job.
        &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;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;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
        &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;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;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON 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;sourceModel&quot;: { # A reference to the model being exported.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
          &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
        },
        &quot;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;sourceTable&quot;: { # A reference to the table being exported.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
      },
      &quot;copy&quot;: { # [Pick one] Copies a table.
        &quot;destinationTable&quot;: { # [Required] The destination 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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
          {
            &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
            &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
          },
        ],
        &quot;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;sourceTable&quot;: { # [Pick one] Source table to copy.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
        &quot;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
      },
      &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;query&quot;: { # [Pick one] Configures a query job.
        &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;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;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;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;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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
          &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
            &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
            &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
            &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          },
          &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
        },
        &quot;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;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;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;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;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
            &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
              &quot;A String&quot;,
            ],
            &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
              &quot;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;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
              &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
              &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
              &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
              &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
            },
            &quot;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;qualifierString&quot;: &quot;A String&quot;,
                      &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                      &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                      &quot;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;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;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
                  &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                  &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
                  &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
                },
              ],
              &quot;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
            &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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                  &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;policyTags&quot;: {
                    &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                    # Object with schema name: TableFieldSchema
                  ],
                  &quot;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
              &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
              &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
            },
            &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
            &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
              &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
              &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
            },
            &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
            &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
            &quot;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;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;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
          &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;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
          &quot;requirePartitionFilter&quot;: True or False,
          &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
        },
        &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
        &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;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;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
            &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;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;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
              &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                {
                  &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                  &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                  &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                },
              ],
            },
            &quot;parameterValue&quot;: { # [Required] The value of this parameter.
              &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                # Object with schema name: QueryParameterValue
              ],
              &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
            },
          },
        ],
        &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;load&quot;: { # [Pick one] Configures a load job.
        &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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
          &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
            &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
            &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
            &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
          },
          &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
        },
        &quot;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;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
              &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;policyTags&quot;: {
                &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                  &quot;A String&quot;,
                ],
              },
              &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                # Object with schema name: TableFieldSchema
              ],
              &quot;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;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
        &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;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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
          &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;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;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;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;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;destinationTable&quot;: { # [Required] The destination table to load the data into.
          &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
          &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
          &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
        },
        &quot;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;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;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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
          &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
          &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
        },
        &quot;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
          &quot;requirePartitionFilter&quot;: True or False,
          &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
        },
        &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
      },
      &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;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;user_email&quot;: &quot;A String&quot;, # [Output-only] Email address of the user who ran the job.
    &quot;kind&quot;: &quot;bigquery#job&quot;, # [Output-only] The type of the resource.
    &quot;etag&quot;: &quot;A String&quot;, # [Output-only] A hash of this resource.
    &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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
      &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;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;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;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
          &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
          &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;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, stateFilter=None, projection=None, minCreationTime=None, parentJobId=None, allUsers=None, pageToken=None, maxCreationTime=None, maxResults=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)
  stateFilter: string, Filter for job state (repeated)
    Allowed values
      done - Finished jobs
      pending - Pending jobs
      running - Running jobs
  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
  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
  parentJobId: string, If set, retrieves only jobs whose parent is this job. Otherwise, retrieves only jobs which have no parent
  allUsers: boolean, Whether to display jobs owned by all users in the project. Default false
  pageToken: string, Page token, returned by a previous call, to request the next page of results
  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

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to request the next page of results.
    &quot;kind&quot;: &quot;bigquery#jobList&quot;, # The resource type of the response.
    &quot;etag&quot;: &quot;A String&quot;, # A hash of this page of results.
    &quot;jobs&quot;: [ # List of jobs that were requested.
      {
        &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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
          &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;status&quot;: { # [Full-projection-only] Describes the state of the job.
          &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;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
              &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
              &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
              &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;errorResult&quot;: { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
            &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
            &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
            &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
            &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
          },
        },
        &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;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;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;load&quot;: { # [Output-only] Statistics for 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;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;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;extract&quot;: { # [Output-only] Statistics for an extract job.
            &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;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;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;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;completionRatio&quot;: 3.14, # [TrustedTester] [Output-only] Job progress (0.0 -&gt; 1.0) for LOAD and EXTRACT jobs.
          &quot;query&quot;: { # [Output-only] Statistics for a query job.
            &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
            &quot;totalBytesBilled&quot;: &quot;A String&quot;, # [Output-only] Total bytes billed 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;referencedRoutines&quot;: [ # [Output-only] Referenced routines (persistent user-defined functions and stored procedures) for the job.
              {
                &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
                &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;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;queryPlan&quot;: [ # [Output-only] Describes execution plan for the query.
              {
                &quot;name&quot;: &quot;A String&quot;, # Human-readable name for stage.
                &quot;computeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on CPU-bound tasks.
                &quot;steps&quot;: [ # List of operations within the stage in dependency order (approximately chronological).
                  {
                    &quot;substeps&quot;: [ # Human-readable stage descriptions.
                      &quot;A String&quot;,
                    ],
                    &quot;kind&quot;: &quot;A String&quot;, # Machine-readable operation type.
                  },
                ],
                &quot;startMs&quot;: &quot;A String&quot;, # Stage start time represented as milliseconds since epoch.
                &quot;writeMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent on writing output.
                &quot;shuffleOutputBytesSpilled&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle and spilled to disk.
                &quot;readMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent reading input.
                &quot;waitMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent waiting to be scheduled.
                &quot;recordsRead&quot;: &quot;A String&quot;, # Number of records read into the stage.
                &quot;writeMsAvg&quot;: &quot;A String&quot;, # Milliseconds the average shard spent on writing output.
                &quot;waitRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent waiting to be scheduled.
                &quot;waitMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent waiting to be scheduled.
                &quot;writeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on writing output.
                &quot;computeRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent on CPU-bound tasks.
                &quot;completedParallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments completed.
                &quot;recordsWritten&quot;: &quot;A String&quot;, # Number of records written by the stage.
                &quot;waitRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent waiting to be scheduled.
                &quot;readRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent reading input.
                &quot;readRatioAvg&quot;: 3.14, # Relative amount of time the average shard spent reading input.
                &quot;id&quot;: &quot;A String&quot;, # Unique ID for stage within plan.
                &quot;writeRatioMax&quot;: 3.14, # Relative amount of time the slowest shard spent on writing output.
                &quot;endMs&quot;: &quot;A String&quot;, # Stage end time represented as milliseconds since epoch.
                &quot;inputStages&quot;: [ # IDs for stages that are inputs to this stage.
                  &quot;A String&quot;,
                ],
                &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;slotMs&quot;: &quot;A String&quot;, # Slot-milliseconds used by the stage.
                &quot;readMsMax&quot;: &quot;A String&quot;, # Milliseconds the slowest shard spent reading input.
                &quot;shuffleOutputBytes&quot;: &quot;A String&quot;, # Total number of bytes written to shuffle.
                &quot;parallelInputs&quot;: &quot;A String&quot;, # Number of parallel input segments to be processed.
                &quot;status&quot;: &quot;A String&quot;, # Current status for the stage.
              },
            ],
            &quot;ddlTargetRoutine&quot;: { # The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this routine.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset 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;ddlTargetTable&quot;: { # [Output-only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries.
              &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            },
            &quot;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                  &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;policyTags&quot;: {
                    &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                    # Object with schema name: TableFieldSchema
                  ],
                  &quot;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;estimatedBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] The original estimate of bytes processed for the job.
            &quot;referencedTables&quot;: [ # [Output-only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list.
              {
                &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
                &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
                &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
              },
            ],
            &quot;modelTrainingCurrentIteration&quot;: 42, # [Output-only, Beta] Deprecated; do not use.
            &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] Total bytes processed for the job.
            &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;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;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;billingTier&quot;: 42, # [Output-only] Billing tier for the job.
            &quot;ddlTargetRowAccessPolicy&quot;: { # [Output-only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries.
              &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table containing this row access policy.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this row access policy.
              &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;modelTraining&quot;: { # [Output-only, Beta] Information about create model query 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;currentIteration&quot;: 42, # [Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress.
            },
            &quot;cacheHit&quot;: True or False, # [Output-only] Whether the query result was fetched from the query cache.
            &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;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
                  &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                    {
                      &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                      &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                      &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                    },
                  ],
                },
                &quot;parameterValue&quot;: { # [Required] The value of this parameter.
                  &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                    # Object with schema name: QueryParameterValue
                  ],
                  &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
                },
              },
            ],
            &quot;totalPartitionsProcessed&quot;: &quot;A String&quot;, # [Output-only] Total number of partitions processed from all partitioned tables referenced in the job.
            &quot;modelTrainingExpectedTotalIteration&quot;: &quot;A String&quot;, # [Output-only, Beta] Deprecated; do not use.
            &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;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;procedureId&quot;: &quot;A String&quot;, # [Output-only] Name of the active procedure, empty if in a top-level script.
                &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;endColumn&quot;: 42, # [Output-only] One-based end column.
                &quot;endLine&quot;: 42, # [Output-only] One-based end line.
                &quot;startColumn&quot;: 42, # [Output-only] One-based start column.
              },
            ],
          },
          &quot;totalBytesProcessed&quot;: &quot;A String&quot;, # [Output-only] [Deprecated] Use the bytes processed in the query statistics instead.
          &quot;numChildJobs&quot;: &quot;A String&quot;, # [Output-only] Number of child jobs executed.
          &quot;totalSlotMs&quot;: &quot;A String&quot;, # [Output-only] Slot-milliseconds for the job.
          &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;parentJobId&quot;: &quot;A String&quot;, # [Output-only] If this is a child job, the id of the parent.
          &quot;quotaDeferments&quot;: [ # [Output-only] Quotas which delayed this job&#x27;s start time.
            &quot;A String&quot;,
          ],
          &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;id&quot;: &quot;A String&quot;, # Unique opaque ID of the job.
        &quot;configuration&quot;: { # [Full-projection-only] Specifies the job configuration.
          &quot;jobType&quot;: &quot;A String&quot;, # [Output-only] The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN.
          &quot;extract&quot;: { # [Pick one] Configures an extract job.
            &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;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;printHeader&quot;: true, # [Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models.
            &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;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;destinationFormat&quot;: &quot;A String&quot;, # [Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON 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;sourceModel&quot;: { # A reference to the model being exported.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this model.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this model.
              &quot;modelId&quot;: &quot;A String&quot;, # [Required] The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
            },
            &quot;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;sourceTable&quot;: { # A reference to the table being exported.
              &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            },
          },
          &quot;copy&quot;: { # [Pick one] Copies a table.
            &quot;destinationTable&quot;: { # [Required] The destination 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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            },
            &quot;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;sourceTables&quot;: [ # [Pick one] Source tables to copy.
              {
                &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
                &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
                &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
              },
            ],
            &quot;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;sourceTable&quot;: { # [Pick one] Source table to copy.
              &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            },
            &quot;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;operationType&quot;: &quot;A String&quot;, # [Optional] Supported operation types in table copy job.
            &quot;destinationExpirationTime&quot;: &quot;&quot;, # [Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed.
          },
          &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;query&quot;: { # [Pick one] Configures a query job.
            &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;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;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;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;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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
              &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
                &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
                &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
                &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
              },
              &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
            },
            &quot;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;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;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;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;maxBadRecords&quot;: 42, # [Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
                &quot;sourceUris&quot;: [ # [Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one &#x27;*&#x27; wildcard character and it must come after the &#x27;bucket&#x27; name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the &#x27;*&#x27; wildcard character is not allowed.
                  &quot;A String&quot;,
                ],
                &quot;csvOptions&quot;: { # Additional properties to set if sourceFormat is set to CSV.
                  &quot;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;quote&quot;: &quot;&quot;&quot;, # [Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote (&#x27;&quot;&#x27;). If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.
                  &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
                  &quot;allowJaggedRows&quot;: True or False, # [Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.
                  &quot;fieldDelimiter&quot;: &quot;A String&quot;, # [Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence &quot;\t&quot; to specify a tab separator. The default value is a comma (&#x27;,&#x27;).
                  &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
                },
                &quot;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;qualifierString&quot;: &quot;A String&quot;,
                          &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. &#x27;encoding&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;encoding&#x27; is set at both levels.
                          &quot;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. &#x27;type&#x27; can also be set at the column family level. However, the setting at this level takes precedence if &#x27;type&#x27; is set at both levels.
                          &quot;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;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;type&quot;: &quot;A String&quot;, # [Optional] The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive) - BYTES STRING INTEGER FLOAT BOOLEAN Default type is BYTES. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a type for it.
                      &quot;familyId&quot;: &quot;A String&quot;, # Identifier of the column family.
                      &quot;onlyReadLatest&quot;: True or False, # [Optional] If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying a different setting for that column.
                      &quot;encoding&quot;: &quot;A String&quot;, # [Optional] The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in &#x27;columns&#x27; and specifying an encoding for it.
                    },
                  ],
                  &quot;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;connectionId&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] Connection for external data source.
                &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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                      &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;policyTags&quot;: {
                        &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                        # Object with schema name: TableFieldSchema
                      ],
                      &quot;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
                  &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
                  &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
                },
                &quot;autodetect&quot;: True or False, # Try to detect schema and format options automatically. Any option specified explicitly will be honored.
                &quot;googleSheetsOptions&quot;: { # [Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS.
                  &quot;range&quot;: &quot;A String&quot;, # [Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20
                  &quot;skipLeadingRows&quot;: &quot;A String&quot;, # [Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N &gt; 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema.
                },
                &quot;ignoreUnknownValues&quot;: True or False, # [Optional] Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don&#x27;t match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored.
                &quot;sourceFormat&quot;: &quot;A String&quot;, # [Required] The data format. For CSV files, specify &quot;CSV&quot;. For Google sheets, specify &quot;GOOGLE_SHEETS&quot;. For newline-delimited JSON, specify &quot;NEWLINE_DELIMITED_JSON&quot;. For Avro files, specify &quot;AVRO&quot;. For Google Cloud Datastore backups, specify &quot;DATASTORE_BACKUP&quot;. [Beta] For Google Cloud Bigtable, specify &quot;BIGTABLE&quot;.
                &quot;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;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;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
              &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;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
              &quot;requirePartitionFilter&quot;: True or False,
              &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
            },
            &quot;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
            &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;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;resourceUri&quot;: &quot;A String&quot;, # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
                &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;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;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            },
            &quot;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
                  &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
                    {
                      &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
                      &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
                      &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
                    },
                  ],
                },
                &quot;parameterValue&quot;: { # [Required] The value of this parameter.
                  &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
                    # Object with schema name: QueryParameterValue
                  ],
                  &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
                },
              },
            ],
            &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;load&quot;: { # [Pick one] Configures a load job.
            &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;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;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;rangePartitioning&quot;: { # [TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified.
              &quot;range&quot;: { # [TrustedTester] [Required] Defines the ranges for range partitioning.
                &quot;interval&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The width of each interval.
                &quot;start&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The start of range partitioning, inclusive.
                &quot;end&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The end of range partitioning, exclusive.
              },
              &quot;field&quot;: &quot;A String&quot;, # [TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64.
            },
            &quot;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;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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
                  &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;policyTags&quot;: {
                    &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                    # Object with schema name: TableFieldSchema
                  ],
                  &quot;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;schemaInlineFormat&quot;: &quot;A String&quot;, # [Deprecated] The format of the schemaInline property.
            &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;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;destinationTableProperties&quot;: { # [Beta] [Optional] Properties with which to create the destination table if it is new.
              &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;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;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;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;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;destinationTable&quot;: { # [Required] The destination table to load the data into.
              &quot;tableId&quot;: &quot;A String&quot;, # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
              &quot;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this table.
              &quot;datasetId&quot;: &quot;A String&quot;, # [Required] The ID of the dataset containing this table.
            },
            &quot;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;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;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;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;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;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;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;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;hivePartitioningOptions&quot;: { # [Optional, Trusted Tester] Options to configure hive partitioning support.
              &quot;sourceUriPrefix&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter).
              &quot;mode&quot;: &quot;A String&quot;, # [Optional, Trusted Tester] When set, what mode of hive partitioning to use when reading data. Two modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet.
            },
            &quot;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;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;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;type&quot;: &quot;A String&quot;, # [Required] The only type supported is DAY, which will generate one partition per day.
              &quot;requirePartitionFilter&quot;: True or False,
              &quot;field&quot;: &quot;A String&quot;, # [Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either &#x27;_PARTITIONTIME&#x27; as TIMESTAMP type, or &#x27;_PARTITIONDATE&#x27; as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.
            },
            &quot;autodetect&quot;: True or False, # [Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
          },
          &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;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;user_email&quot;: &quot;A String&quot;, # [Full-projection-only] Email address of the user who ran the job.
        &quot;errorResult&quot;: { # A result object that will be present only if the job has failed.
          &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
          &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
          &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
        },
        &quot;kind&quot;: &quot;bigquery#job&quot;, # The resource type.
      },
    ],
  }</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;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;type&quot;: &quot;A String&quot;, # [Required] The top level type of this field.
          &quot;structTypes&quot;: [ # [Optional] The types of the fields of this struct, in order, if this is a struct.
            {
              &quot;type&quot;: # Object with schema name: QueryParameterType # [Required] The type of this field.
              &quot;name&quot;: &quot;A String&quot;, # [Optional] The name of this field.
              &quot;description&quot;: &quot;A String&quot;, # [Optional] Human-oriented description of the field.
            },
          ],
        },
        &quot;parameterValue&quot;: { # [Required] The value of this parameter.
          &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;arrayValues&quot;: [ # [Optional] The array values, if this is an array type.
            # Object with schema name: QueryParameterValue
          ],
          &quot;value&quot;: &quot;A String&quot;, # [Optional] The value of this value, if a simple scalar type.
        },
      },
    ],
    &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;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;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;kind&quot;: &quot;bigquery#queryRequest&quot;, # The resource type of the request.
    &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;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;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;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.
    &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;projectId&quot;: &quot;A String&quot;, # [Optional] The ID of the project containing this dataset.
      &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;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;preserveNulls&quot;: True or False, # [Deprecated] This property is deprecated.
    &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;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;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;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.
  }


Returns:
  An object of the form:

    {
    &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;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;mode&quot;: &quot;A String&quot;, # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
          &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;policyTags&quot;: {
            &quot;names&quot;: [ # A list of category resource names. For example, &quot;projects/1/location/eu/taxonomies/2/policyTags/3&quot;. At most 1 policy tag is allowed.
              &quot;A String&quot;,
            ],
          },
          &quot;fields&quot;: [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
            # Object with schema name: TableFieldSchema
          ],
          &quot;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;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;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;message&quot;: &quot;A String&quot;, # A human-readable description of the error.
        &quot;location&quot;: &quot;A String&quot;, # Specifies where the error occurred, if present.
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information. This property is internal to Google and should not be used.
        &quot;reason&quot;: &quot;A String&quot;, # A short error code that summarizes the error.
      },
    ],
    &quot;pageToken&quot;: &quot;A String&quot;, # A token used for paging results.
    &quot;kind&quot;: &quot;bigquery#queryResponse&quot;, # The resource type.
    &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;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;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.
    &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;projectId&quot;: &quot;A String&quot;, # [Required] The ID of the project containing this job.
      &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;cacheHit&quot;: True or False, # Whether the query result was fetched from the query cache.
  }</pre>
</div>

</body></html>