:py:mod:`airflow.providers.google.cloud.transfers.bigquery_to_bigquery`
=======================================================================

.. py:module:: airflow.providers.google.cloud.transfers.bigquery_to_bigquery

.. autoapi-nested-parse::

   This module contains Google BigQuery to BigQuery operator.



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.transfers.bigquery_to_bigquery.BigQueryToBigQueryOperator




.. py:class:: BigQueryToBigQueryOperator(*, source_project_dataset_tables, destination_project_dataset_table, write_disposition = 'WRITE_EMPTY', create_disposition = 'CREATE_IF_NEEDED', gcp_conn_id = 'google_cloud_default', delegate_to = None, labels = None, encryption_configuration = None, location = None, impersonation_chain = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   Copies data from one BigQuery table to another.

   .. seealso::
       For more details about these parameters:
       https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.copy

   :param source_project_dataset_tables: One or more
       dotted ``(project:|project.)<dataset>.<table>`` BigQuery tables to use as the
       source data. If ``<project>`` is not included, project will be the
       project defined in the connection json. Use a list if there are multiple
       source tables. (templated)
   :param destination_project_dataset_table: The destination BigQuery
       table. Format is: ``(project:|project.)<dataset>.<table>`` (templated)
   :param write_disposition: The write disposition if the table already exists.
   :param create_disposition: The create disposition if the table doesn't exist.
   :param gcp_conn_id: (Optional) The connection ID used to connect to Google Cloud.
   :param delegate_to: The account to impersonate using domain-wide delegation of authority,
       if any. For this to work, the service account making the request must have
       domain-wide delegation enabled.
   :param labels: a dictionary containing labels for the job/query,
       passed to BigQuery
   :param encryption_configuration: [Optional] Custom encryption configuration (e.g., Cloud KMS keys).
       **Example**: ::

           encryption_configuration = {
               "kmsKeyName": "projects/testp/locations/us/keyRings/test-kr/cryptoKeys/test-key"
           }
   :param location: The location used for the operation.
   :param impersonation_chain: Optional service account to impersonate using short-term
       credentials, or chained list of accounts required to get the access_token
       of the last account in the list, which will be impersonated in the request.
       If set as a string, the account must grant the originating account
       the Service Account Token Creator IAM role.
       If set as a sequence, the identities from the list must grant
       Service Account Token Creator IAM role to the directly preceding identity, with first
       account from the list granting this role to the originating account (templated).

   .. py:attribute:: template_fields
      :annotation: :Sequence[str] = ['source_project_dataset_tables', 'destination_project_dataset_table', 'labels', 'impersonation_chain']

      

   .. py:attribute:: template_ext
      :annotation: :Sequence[str] = ['.sql']

      

   .. py:attribute:: ui_color
      :annotation: = #e6f0e4

      

   .. py:attribute:: operator_extra_links
      

      

   .. py:method:: execute(self, context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



