blob: 090c42431a4ddee7a4f738ae2b1f431c4f15e45a [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>airflow.operators.check_operator &mdash; Airflow Documentation</title>
<script type="text/javascript" src="../../../../_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/language_data.js"></script>
<script type="text/javascript" src="../../../../_static/js/theme.js"></script>
<link rel="stylesheet" href="../../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../../genindex.html" />
<link rel="search" title="Search" href="../../../../search.html" />
<link rel="next" title="airflow.operators.dagrun_operator" href="../dagrun_operator/index.html" />
<link rel="prev" title="airflow.operators.branch_operator" href="../branch_operator/index.html" />
<script>
document.addEventListener('DOMContentLoaded', function() {
var el = document.getElementById('changelog');
if (el !== null ) {
// [AIRFLOW-...]
el.innerHTML = el.innerHTML.replace(
/\[(AIRFLOW-[\d]+)\]/g,
`<a href="https://issues.apache.org/jira/browse/$1">[$1]</a>`
);
// (#...)
el.innerHTML = el.innerHTML.replace(
/\(#([\d]+)\)/g,
`<a href="https://github.com/apache/airflow/pull/$1">(#$1)</a>`
);
};
})
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-140539454-1']);
_gaq.push(['_trackPageview']);
</script>
<style>
.example-header {
position: relative;
background: #9AAA7A;
padding: 8px 16px;
margin-bottom: 0;
}
.example-header--with-button {
padding-right: 166px;
}
.example-header:after{
content: '';
display: table;
clear: both;
}
.example-title {
display:block;
padding: 4px;
margin-right: 16px;
color: white;
overflow-x: auto;
}
.example-header-button {
top: 8px;
right: 16px;
position: absolute;
}
.example-header + .highlight-python {
margin-top: 0 !important;
}
.viewcode-button {
display: inline-block;
padding: 8px 16px;
border: 0;
margin: 0;
outline: 0;
border-radius: 2px;
-webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
color: #404040;
background-color: #e7e7e7;
cursor: pointer;
font-size: 16px;
font-weight: 500;
line-height: 1;
text-decoration: none;
text-overflow: ellipsis;
overflow: hidden;
text-transform: uppercase;
-webkit-transition: background-color .2s;
transition: background-color .2s;
vertical-align: middle;
white-space: nowrap;
}
.viewcode-button:visited {
color: #404040;
}
.viewcode-button:hover, .viewcode-button:focus {
color: #404040;
background-color: #d6d6d6;
}
</style>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../../index.html" class="icon icon-home"> Airflow
</a>
<div class="version">
1.10.5
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../../project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../start.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../howto/index.html">How-to Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../profiling.html">Data Profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../cli.html">Command Line Interface Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../scheduler.html">Scheduling &amp; Triggers</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../security.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../timezone.html">Time zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../api.html">REST API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../metrics.html">Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../macros.html">Macros reference</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../../index.html">Python API Reference</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="../../../index.html#operators">Operators</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../../../index.html#baseoperator">BaseOperator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../../index.html#basesensoroperator">BaseSensorOperator</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../../../index.html#operators-packages">Operators packages</a><ul class="current">
<li class="toctree-l4 current"><a class="reference internal" href="../index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.operators</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../sensors/index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.sensors</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../contrib/operators/index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.contrib.operators</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../../contrib/sensors/index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.contrib.sensors</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#hooks">Hooks</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#executors">Executors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#models">Models</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../../index.html#core-and-community-package">Core and community package</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../../privacy_notice.html">Privacy Notice</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../../index.html">Airflow</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../../index.html">Docs</a> &raquo;</li>
<li><a href="../../../index.html">Python API Reference</a> &raquo;</li>
<li><a href="../index.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.operators</span></code></a> &raquo;</li>
<li><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.operators.check_operator</span></code></li>
<li class="wy-breadcrumbs-aside">
<a href="../../../../_sources/_api/airflow/operators/check_operator/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="module-airflow.operators.check_operator">
<span id="airflow-operators-check-operator"></span><h1><a class="reference internal" href="#module-airflow.operators.check_operator" title="airflow.operators.check_operator"><code class="xref py py-mod docutils literal notranslate"><span class="pre">airflow.operators.check_operator</span></code></a><a class="headerlink" href="#module-airflow.operators.check_operator" title="Permalink to this headline"></a></h1>
<div class="section" id="module-contents">
<h2>Module Contents<a class="headerlink" href="#module-contents" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="airflow.operators.check_operator.CheckOperator">
<em class="property">class </em><code class="sig-prename descclassname">airflow.operators.check_operator.</code><code class="sig-name descname">CheckOperator</code><span class="sig-paren">(</span><em class="sig-param">sql</em>, <em class="sig-param">conn_id=None</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#CheckOperator"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.CheckOperator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="../../models/index.html#airflow.models.BaseOperator" title="airflow.models.BaseOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">airflow.models.BaseOperator</span></code></a></p>
<p>Performs checks against a db. The <code class="docutils literal notranslate"><span class="pre">CheckOperator</span></code> expects
a sql query that will return a single row. Each value on that
first row is evaluated using python <code class="docutils literal notranslate"><span class="pre">bool</span></code> casting. If any of the
values return <code class="docutils literal notranslate"><span class="pre">False</span></code> the check is failed and errors out.</p>
<p>Note that Python bool casting evals the following as <code class="docutils literal notranslate"><span class="pre">False</span></code>:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">False</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">0</span></code></p></li>
<li><p>Empty string (<code class="docutils literal notranslate"><span class="pre">&quot;&quot;</span></code>)</p></li>
<li><p>Empty list (<code class="docutils literal notranslate"><span class="pre">[]</span></code>)</p></li>
<li><p>Empty dictionary or set (<code class="docutils literal notranslate"><span class="pre">{}</span></code>)</p></li>
</ul>
<p>Given a query like <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">COUNT(*)</span> <span class="pre">FROM</span> <span class="pre">foo</span></code>, it will fail only if
the count <code class="docutils literal notranslate"><span class="pre">==</span> <span class="pre">0</span></code>. 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.</p>
<p>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.</p>
<p>Note that this is an abstract class and get_db_hook
needs to be defined. Whereas a get_db_hook is hook that gets a
single record from an external source.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>sql</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)"><em>str</em></a>) – the sql to be executed. (templated)</p>
</dd>
</dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.CheckOperator.template_fields">
<code class="sig-name descname">template_fields</code><em class="property"> :Iterable[str] = ['sql']</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#CheckOperator.template_fields"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.CheckOperator.template_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.CheckOperator.template_ext">
<code class="sig-name descname">template_ext</code><em class="property"> :Iterable[str] = ['.hql', '.sql']</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#CheckOperator.template_ext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.CheckOperator.template_ext" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.CheckOperator.ui_color">
<code class="sig-name descname">ui_color</code><em class="property"> = #fff7e6</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#CheckOperator.ui_color"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.CheckOperator.ui_color" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.CheckOperator.execute">
<code class="sig-name descname">execute</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">context=None</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#CheckOperator.execute"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.CheckOperator.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.CheckOperator.get_db_hook">
<code class="sig-name descname">get_db_hook</code><span class="sig-paren">(</span><em class="sig-param">self</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#CheckOperator.get_db_hook"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.CheckOperator.get_db_hook" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="airflow.operators.check_operator._convert_to_float_if_possible">
<code class="sig-prename descclassname">airflow.operators.check_operator.</code><code class="sig-name descname">_convert_to_float_if_possible</code><span class="sig-paren">(</span><em class="sig-param">s</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#_convert_to_float_if_possible"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator._convert_to_float_if_possible" title="Permalink to this definition"></a></dt>
<dt>
<code class="sig-name descname">A small helper function to convert a string to a numeric value</code></dt>
<dt>
<code class="sig-name descname">if appropriate</code></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>s</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)"><em>str</em></a>) – the string to be converted</p>
</dd>
</dl>
</dd></dl>
<dl class="class">
<dt id="airflow.operators.check_operator.ValueCheckOperator">
<em class="property">class </em><code class="sig-prename descclassname">airflow.operators.check_operator.</code><code class="sig-name descname">ValueCheckOperator</code><span class="sig-paren">(</span><em class="sig-param">sql</em>, <em class="sig-param">pass_value</em>, <em class="sig-param">tolerance=None</em>, <em class="sig-param">conn_id=None</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="../../models/index.html#airflow.models.BaseOperator" title="airflow.models.BaseOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">airflow.models.BaseOperator</span></code></a></p>
<p>Performs a simple value check using sql code.</p>
<p>Note that this is an abstract class and get_db_hook
needs to be defined. Whereas a get_db_hook is hook that gets a
single record from an external source.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>sql</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)"><em>str</em></a>) – the sql to be executed. (templated)</p>
</dd>
</dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.ValueCheckOperator.__mapper_args__">
<code class="sig-name descname">__mapper_args__</code><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator.__mapper_args__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator.__mapper_args__" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.ValueCheckOperator.template_fields">
<code class="sig-name descname">template_fields</code><em class="property"> :Iterable[str] = ['sql', 'pass_value']</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator.template_fields"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator.template_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.ValueCheckOperator.template_ext">
<code class="sig-name descname">template_ext</code><em class="property"> :Iterable[str] = ['.hql', '.sql']</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator.template_ext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator.template_ext" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.ValueCheckOperator.ui_color">
<code class="sig-name descname">ui_color</code><em class="property"> = #fff7e6</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator.ui_color"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator.ui_color" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.ValueCheckOperator.execute">
<code class="sig-name descname">execute</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">context=None</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator.execute"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.ValueCheckOperator._to_float">
<code class="sig-name descname">_to_float</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">records</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator._to_float"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator._to_float" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.ValueCheckOperator._get_string_matches">
<code class="sig-name descname">_get_string_matches</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">records</em>, <em class="sig-param">pass_value_conv</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator._get_string_matches"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator._get_string_matches" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.ValueCheckOperator._get_numeric_matches">
<code class="sig-name descname">_get_numeric_matches</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">numeric_records</em>, <em class="sig-param">numeric_pass_value_conv</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator._get_numeric_matches"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator._get_numeric_matches" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.ValueCheckOperator.get_db_hook">
<code class="sig-name descname">get_db_hook</code><span class="sig-paren">(</span><em class="sig-param">self</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#ValueCheckOperator.get_db_hook"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.ValueCheckOperator.get_db_hook" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="airflow.operators.check_operator.IntervalCheckOperator">
<em class="property">class </em><code class="sig-prename descclassname">airflow.operators.check_operator.</code><code class="sig-name descname">IntervalCheckOperator</code><span class="sig-paren">(</span><em class="sig-param">table</em>, <em class="sig-param">metrics_thresholds</em>, <em class="sig-param">date_filter_column='ds'</em>, <em class="sig-param">days_back=-7</em>, <em class="sig-param">ratio_formula='max_over_min'</em>, <em class="sig-param">ignore_zero=True</em>, <em class="sig-param">conn_id=None</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#IntervalCheckOperator"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.IntervalCheckOperator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="../../models/index.html#airflow.models.BaseOperator" title="airflow.models.BaseOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">airflow.models.BaseOperator</span></code></a></p>
<p>Checks that the values of metrics given as SQL expressions are within
a certain tolerance of the ones from days_back before.</p>
<p>Note that this is an abstract class and get_db_hook
needs to be defined. Whereas a get_db_hook is hook that gets a
single record from an external source.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>table</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)"><em>str</em></a>) – the table name</p></li>
<li><p><strong>days_back</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.7)"><em>int</em></a>) – number of days between ds and the ds we want to check
against. Defaults to 7 days</p></li>
<li><p><strong>ratio_formula</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)"><em>str</em></a>) – <p>which formula to use to compute the ratio between
the two metrics. Assuming cur is the metric of today and ref is
the metric to today - days_back.</p>
<p>max_over_min: computes max(cur, ref) / min(cur, ref)
relative_diff: computes abs(cur-ref) / ref</p>
<p>Default: ‘max_over_min’</p>
</p></li>
<li><p><strong>ignore_zero</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.7)"><em>bool</em></a>) – whether we should ignore zero metrics</p></li>
<li><p><strong>metrics_threshold</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.7)"><em>dict</em></a>) – a dictionary of ratios indexed by metrics</p></li>
</ul>
</dd>
</dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.IntervalCheckOperator.__mapper_args__">
<code class="sig-name descname">__mapper_args__</code><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#IntervalCheckOperator.__mapper_args__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.IntervalCheckOperator.__mapper_args__" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.IntervalCheckOperator.template_fields">
<code class="sig-name descname">template_fields</code><em class="property"> :Iterable[str] = ['sql1', 'sql2']</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#IntervalCheckOperator.template_fields"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.IntervalCheckOperator.template_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.IntervalCheckOperator.template_ext">
<code class="sig-name descname">template_ext</code><em class="property"> :Iterable[str] = ['.hql', '.sql']</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#IntervalCheckOperator.template_ext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.IntervalCheckOperator.template_ext" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.IntervalCheckOperator.ui_color">
<code class="sig-name descname">ui_color</code><em class="property"> = #fff7e6</em><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#IntervalCheckOperator.ui_color"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.IntervalCheckOperator.ui_color" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="airflow.operators.check_operator.IntervalCheckOperator.ratio_formulas">
<code class="sig-name descname">ratio_formulas</code><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#IntervalCheckOperator.ratio_formulas"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.IntervalCheckOperator.ratio_formulas" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.IntervalCheckOperator.execute">
<code class="sig-name descname">execute</code><span class="sig-paren">(</span><em class="sig-param">self</em>, <em class="sig-param">context=None</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#IntervalCheckOperator.execute"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.IntervalCheckOperator.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="airflow.operators.check_operator.IntervalCheckOperator.get_db_hook">
<code class="sig-name descname">get_db_hook</code><span class="sig-paren">(</span><em class="sig-param">self</em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/airflow/operators/check_operator.html#IntervalCheckOperator.get_db_hook"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#airflow.operators.check_operator.IntervalCheckOperator.get_db_hook" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../dagrun_operator/index.html" class="btn btn-neutral float-right" title="airflow.operators.dagrun_operator" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="../branch_operator/index.html" class="btn btn-neutral float-left" title="airflow.operators.branch_operator" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
<div class="footer">This page uses <a href="https://analytics.google.com/">
Google Analytics</a> to collect statistics. You can disable it by blocking
the JavaScript coming from www.google-analytics.com. Check our
<a href="../../../../privacy_notice.html">Privacy Policy</a>
for more details.
<script type="text/javascript">
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
var nodes = document.documentElement.childNodes;
var i = -1;
var node;
do {
i++;
node = nodes[i]
} while(node.nodeType !== Node.ELEMENT_NODE);
node.appendChild(ga);
})();
</script>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>