:mod:`airflow.operators.presto_check_operator`
==============================================

.. py:module:: airflow.operators.presto_check_operator


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

.. py:class:: PrestoCheckOperator(sql, presto_conn_id='presto_default', *args, **kwargs)

   Bases: :class:`airflow.operators.check_operator.CheckOperator`

   Performs checks against Presto. The ``PrestoCheckOperator`` 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 to be executed
   :type sql: str
   :param presto_conn_id: reference to the Presto database
   :type presto_conn_id: str

   
   .. method:: get_db_hook(self)




.. py:class:: PrestoValueCheckOperator(sql, pass_value, tolerance=None, presto_conn_id='presto_default', *args, **kwargs)

   Bases: :class:`airflow.operators.check_operator.ValueCheckOperator`

   Performs a simple value check using sql code.

   :param sql: the sql to be executed
   :type sql: str
   :param presto_conn_id: reference to the Presto database
   :type presto_conn_id: str

   
   .. method:: get_db_hook(self)




.. py:class:: PrestoIntervalCheckOperator(table, metrics_thresholds, date_filter_column='ds', days_back=-7, presto_conn_id='presto_default', *args, **kwargs)

   Bases: :class:`airflow.operators.check_operator.IntervalCheckOperator`

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

   :param table: the table name
   :type table: str
   :param days_back: number of days between ds and the ds we want to check
       against. Defaults to 7 days
   :type days_back: int
   :param metrics_threshold: a dictionary of ratios indexed by metrics
   :type metrics_threshold: dict
   :param presto_conn_id: reference to the Presto database
   :type presto_conn_id: str

   
   .. method:: get_db_hook(self)




