:py:mod:`airflow.providers.snowflake.operators.snowflake`
=========================================================

.. py:module:: airflow.providers.snowflake.operators.snowflake


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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.snowflake.operators.snowflake.SnowflakeOperator
   airflow.providers.snowflake.operators.snowflake.SnowflakeCheckOperator
   airflow.providers.snowflake.operators.snowflake.SnowflakeValueCheckOperator
   airflow.providers.snowflake.operators.snowflake.SnowflakeIntervalCheckOperator



Functions
~~~~~~~~~

.. autoapisummary::

   airflow.providers.snowflake.operators.snowflake.get_db_hook



.. py:function:: get_db_hook(self)

   Create and return SnowflakeHook.

   :return: a SnowflakeHook instance.
   :rtype: SnowflakeHook


.. py:class:: SnowflakeOperator(*, sql, snowflake_conn_id = 'snowflake_default', parameters = None, autocommit = True, do_xcom_push = True, warehouse = None, database = None, role = None, schema = None, authenticator = None, session_parameters = None, **kwargs)

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

   Executes SQL code in a Snowflake database

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

   :param snowflake_conn_id: Reference to
       :ref:`Snowflake connection id<howto/connection:snowflake>`
   :param sql: the SQL code to be executed as a single string, or
       a list of str (sql statements), or a reference to a template file.
       Template references are recognized by str ending in '.sql'
   :param autocommit: if True, each command is automatically committed.
       (default value: True)
   :param parameters: (optional) the parameters to render the SQL query with.
   :param warehouse: name of warehouse (will overwrite any warehouse
       defined in the connection's extra JSON)
   :param database: name of database (will overwrite database defined
       in connection)
   :param schema: name of schema (will overwrite schema defined in
       connection)
   :param role: name of role (will overwrite any role defined in
       connection's extra JSON)
   :param authenticator: authenticator for Snowflake.
       'snowflake' (default) to use the internal Snowflake authenticator
       'externalbrowser' to authenticate using your web browser and
       Okta, ADFS or any other SAML 2.0-compliant identify provider
       (IdP) that has been defined for your account
       'https://<your_okta_account_name>.okta.com' to authenticate
       through native Okta.
   :param session_parameters: You can set session-level parameters at
       the time you connect to Snowflake

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

      

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

      

   .. py:attribute:: template_fields_renderers
      

      

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

      

   .. py:method:: get_db_hook(self)


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

      Run query on snowflake



.. py:class:: SnowflakeCheckOperator(*, sql, snowflake_conn_id = 'snowflake_default', parameters = None, autocommit = True, do_xcom_push = True, warehouse = None, database = None, role = None, schema = None, authenticator = None, session_parameters = None, **kwargs)

   Bases: :py:obj:`airflow.operators.sql.SQLCheckOperator`

   Performs a check against Snowflake. The ``SnowflakeCheckOperator`` expects
   a sql query that will return a single row. Each value on that
   first row is evaluated using python ``bool`` casting. If any of the
   values return ``False`` the check is failed and errors out.

   Note that Python bool casting evals the following as ``False``:

   * ``False``
   * ``0``
   * Empty string (``""``)
   * Empty list (``[]``)
   * Empty dictionary or set (``{}``)

   Given a query like ``SELECT COUNT(*) FROM foo``, it will fail only if
   the count ``== 0``. You can craft much more complex query that could,
   for instance, check that the table has the same number of rows as
   the source table upstream, or that the count of today's partition is
   greater than yesterday's partition, or that a set of metrics are less
   than 3 standard deviation for the 7 day average.

   This operator can be used as a data quality check in your pipeline, and
   depending on where you put it in your DAG, you have the choice to
   stop the critical path, preventing from
   publishing dubious data, or on the side and receive email alerts
   without stopping the progress of the DAG.

   :param sql: the SQL code to be executed as a single string, or
       a list of str (sql statements), or a reference to a template file.
       Template references are recognized by str ending in '.sql'
   :param snowflake_conn_id: Reference to
       :ref:`Snowflake connection id<howto/connection:snowflake>`
   :param autocommit: if True, each command is automatically committed.
       (default value: True)
   :param parameters: (optional) the parameters to render the SQL query with.
   :param warehouse: name of warehouse (will overwrite any warehouse
       defined in the connection's extra JSON)
   :param database: name of database (will overwrite database defined
       in connection)
   :param schema: name of schema (will overwrite schema defined in
       connection)
   :param role: name of role (will overwrite any role defined in
       connection's extra JSON)
   :param authenticator: authenticator for Snowflake.
       'snowflake' (default) to use the internal Snowflake authenticator
       'externalbrowser' to authenticate using your web browser and
       Okta, ADFS or any other SAML 2.0-compliant identify provider
       (IdP) that has been defined for your account
       'https://<your_okta_account_name>.okta.com' to authenticate
       through native Okta.
   :param session_parameters: You can set session-level parameters at
       the time you connect to Snowflake

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

      

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

      

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

      

   .. py:method:: get_db_hook(self)

      Get the database hook for the connection.

      :return: the database hook object.
      :rtype: DbApiHook



.. py:class:: SnowflakeValueCheckOperator(*, sql, pass_value, tolerance = None, snowflake_conn_id = 'snowflake_default', parameters = None, autocommit = True, do_xcom_push = True, warehouse = None, database = None, role = None, schema = None, authenticator = None, session_parameters = None, **kwargs)

   Bases: :py:obj:`airflow.operators.sql.SQLValueCheckOperator`

   Performs a simple check using sql code against a specified value, within a
   certain level of tolerance.

   :param sql: the sql to be executed
   :param pass_value: the value to check against
   :param tolerance: (optional) the tolerance allowed to accept the query as
       passing
   :param snowflake_conn_id: Reference to
       :ref:`Snowflake connection id<howto/connection:snowflake>`
   :param autocommit: if True, each command is automatically committed.
       (default value: True)
   :param parameters: (optional) the parameters to render the SQL query with.
   :param warehouse: name of warehouse (will overwrite any warehouse
       defined in the connection's extra JSON)
   :param database: name of database (will overwrite database defined
       in connection)
   :param schema: name of schema (will overwrite schema defined in
       connection)
   :param role: name of role (will overwrite any role defined in
       connection's extra JSON)
   :param authenticator: authenticator for Snowflake.
       'snowflake' (default) to use the internal Snowflake authenticator
       'externalbrowser' to authenticate using your web browser and
       Okta, ADFS or any other SAML 2.0-compliant identify provider
       (IdP) that has been defined for your account
       'https://<your_okta_account_name>.okta.com' to authenticate
       through native Okta.
   :param session_parameters: You can set session-level parameters at
       the time you connect to Snowflake

   .. py:method:: get_db_hook(self)

      Get the database hook for the connection.

      :return: the database hook object.
      :rtype: DbApiHook



.. py:class:: SnowflakeIntervalCheckOperator(*, table, metrics_thresholds, date_filter_column = 'ds', days_back = -7, snowflake_conn_id = 'snowflake_default', parameters = None, autocommit = True, do_xcom_push = True, warehouse = None, database = None, role = None, schema = None, authenticator = None, session_parameters = None, **kwargs)

   Bases: :py:obj:`airflow.operators.sql.SQLIntervalCheckOperator`

   Checks that the values of metrics given as SQL expressions are within
   a certain tolerance of the ones from days_back before.

   This method constructs a query like so ::

       SELECT {metrics_threshold_dict_key} FROM {table}
       WHERE {date_filter_column}=<date>

   :param table: the table name
   :param days_back: number of days between ds and the ds we want to check
       against. Defaults to 7 days
   :param metrics_thresholds: a dictionary of ratios indexed by metrics, for
       example 'COUNT(*)': 1.5 would require a 50 percent or less difference
       between the current day, and the prior days_back.
   :param snowflake_conn_id: Reference to
       :ref:`Snowflake connection id<howto/connection:snowflake>`
   :param autocommit: if True, each command is automatically committed.
       (default value: True)
   :param parameters: (optional) the parameters to render the SQL query with.
   :param warehouse: name of warehouse (will overwrite any warehouse
       defined in the connection's extra JSON)
   :param database: name of database (will overwrite database defined
       in connection)
   :param schema: name of schema (will overwrite schema defined in
       connection)
   :param role: name of role (will overwrite any role defined in
       connection's extra JSON)
   :param authenticator: authenticator for Snowflake.
       'snowflake' (default) to use the internal Snowflake authenticator
       'externalbrowser' to authenticate using your web browser and
       Okta, ADFS or any other SAML 2.0-compliant identify provider
       (IdP) that has been defined for your account
       'https://<your_okta_account_name>.okta.com' to authenticate
       through native Okta.
   :param session_parameters: You can set session-level parameters at
       the time you connect to Snowflake

   .. py:method:: get_db_hook(self)

      Get the database hook for the connection.

      :return: the database hook object.
      :rtype: DbApiHook



