:py:mod:`airflow.providers.google.cloud.sensors.bigquery_dts`
=============================================================

.. py:module:: airflow.providers.google.cloud.sensors.bigquery_dts

.. autoapi-nested-parse::

   This module contains a Google BigQuery Data Transfer Service sensor.



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.sensors.bigquery_dts.BigQueryDataTransferServiceTransferRunSensor




.. py:class:: BigQueryDataTransferServiceTransferRunSensor(*, run_id, transfer_config_id, expected_statuses = TransferState.SUCCEEDED, project_id = None, gcp_conn_id = 'google_cloud_default', retry = DEFAULT, request_timeout = None, metadata = (), location = None, impersonation_chain = None, **kwargs)

   Bases: :py:obj:`airflow.sensors.base.BaseSensorOperator`

   Waits for Data Transfer Service run to complete.

   .. seealso::
       For more information on how to use this sensor, take a look at the guide:
       :ref:`howto/operator:BigQueryDataTransferServiceTransferRunSensor`

   :param expected_statuses: The expected state of the operation.
       See:
       https://cloud.google.com/storage-transfer/docs/reference/rest/v1/transferOperations#Status
   :param run_id: ID of the transfer run.
   :param transfer_config_id: ID of transfer config to be used.
   :param project_id: The BigQuery project id where the transfer configuration should be
       created. If set to None or missing, the default project_id from the Google Cloud connection is used.
   :param retry: A retry object used to retry requests. If `None` is
       specified, requests will not be retried.
   :param request_timeout: The amount of time, in seconds, to wait for the request to
       complete. Note that if retry is specified, the timeout applies to each individual
       attempt.
   :param metadata: Additional metadata that is provided to the method.
   :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).

   :return: An ``google.cloud.bigquery_datatransfer_v1.types.TransferRun`` instance.

   .. py:attribute:: template_fields
      :annotation: :Sequence[str] = ['run_id', 'transfer_config_id', 'expected_statuses', 'project_id', 'impersonation_chain']

      

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

      Function that the sensors defined while deriving this class should
      override.



