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

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

.. autoapi-nested-parse::

   This module contains a Google Bigquery sensor.



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.sensors.bigquery.BigQueryTableExistenceSensor
   airflow.providers.google.cloud.sensors.bigquery.BigQueryTablePartitionExistenceSensor




.. py:class:: BigQueryTableExistenceSensor(*, project_id, dataset_id, table_id, gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None, **kwargs)

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

   Checks for the existence of a table in Google Bigquery.

   :param project_id: The Google cloud project in which to look for the table.
       The connection supplied to the hook must provide
       access to the specified project.
   :param dataset_id: The name of the dataset in which to look for the table.
       storage bucket.
   :param table_id: The name of the table to check the existence of.
   :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 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] = ['project_id', 'dataset_id', 'table_id', 'impersonation_chain']

      

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

      

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

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



.. py:class:: BigQueryTablePartitionExistenceSensor(*, project_id, dataset_id, table_id, partition_id, gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None, **kwargs)

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

   Checks for the existence of a partition within a table in Google Bigquery.

   :param project_id: The Google cloud project in which to look for the table.
       The connection supplied to the hook must provide
       access to the specified project.
   :param dataset_id: The name of the dataset in which to look for the table.
       storage bucket.
   :param table_id: The name of the table to check the existence of.
   :param partition_id: The name of the partition to check the existence of.
   :param gcp_conn_id: (Optional) The connection ID used to connect to Google Cloud.
   :param delegate_to: The account to impersonate, if any.
       For this to work, the service account making the request must
       have domain-wide delegation enabled.
   :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] = ['project_id', 'dataset_id', 'table_id', 'partition_id', 'impersonation_chain']

      

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

      

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

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



