| import{_ as e,o as n,c as s,a as i,f as a}from"./app-LsTKUu1f.js";const d={},l=a(`<h1 id="anomaly-detection" tabindex="-1"><a class="header-anchor" href="#anomaly-detection" aria-hidden="true">#</a> Anomaly Detection</h1><h2 id="iqr" tabindex="-1"><a class="header-anchor" href="#iqr" aria-hidden="true">#</a> IQR</h2><h3 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h3><p>This function is used to detect anomalies based on IQR. Points distributing beyond 1.5 times IQR are selected.</p><p><strong>Name:</strong> IQR</p><p><strong>Input Series:</strong> Only support a single input series. The type is INT32 / INT64 / FLOAT / DOUBLE.</p><ul><li><code>method</code>: When set to "batch", anomaly test is conducted after importing all data points; when set to "stream", it is required to provide upper and lower quantiles. The default method is "batch".</li><li><code>q1</code>: The lower quantile when method is set to "stream".</li><li><code>q3</code>: The upper quantile when method is set to "stream".</li></ul><p><strong>Output Series:</strong> Output a single series. The type is DOUBLE.</p><p><strong>Note:</strong> $IQR=Q_3-Q_1$</p><h3 id="examples" tabindex="-1"><a class="header-anchor" href="#examples" aria-hidden="true">#</a> Examples</h3><h4 id="batch-computing" tabindex="-1"><a class="header-anchor" href="#batch-computing" aria-hidden="true">#</a> Batch computing</h4><p>Input series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+------------+ | 
 | |                         Time|root.test.s1| | 
 | +-----------------------------+------------+ | 
 | |1970-01-01T08:00:00.100+08:00|         0.0| | 
 | |1970-01-01T08:00:00.200+08:00|         0.0| | 
 | |1970-01-01T08:00:00.300+08:00|         1.0| | 
 | |1970-01-01T08:00:00.400+08:00|        -1.0| | 
 | |1970-01-01T08:00:00.500+08:00|         0.0| | 
 | |1970-01-01T08:00:00.600+08:00|         0.0| | 
 | |1970-01-01T08:00:00.700+08:00|        -2.0| | 
 | |1970-01-01T08:00:00.800+08:00|         2.0| | 
 | |1970-01-01T08:00:00.900+08:00|         0.0| | 
 | |1970-01-01T08:00:01.000+08:00|         0.0| | 
 | |1970-01-01T08:00:01.100+08:00|         1.0| | 
 | |1970-01-01T08:00:01.200+08:00|        -1.0| | 
 | |1970-01-01T08:00:01.300+08:00|        -1.0| | 
 | |1970-01-01T08:00:01.400+08:00|         1.0| | 
 | |1970-01-01T08:00:01.500+08:00|         0.0| | 
 | |1970-01-01T08:00:01.600+08:00|         0.0| | 
 | |1970-01-01T08:00:01.700+08:00|        10.0| | 
 | |1970-01-01T08:00:01.800+08:00|         2.0| | 
 | |1970-01-01T08:00:01.900+08:00|        -2.0| | 
 | |1970-01-01T08:00:02.000+08:00|         0.0| | 
 | +-----------------------------+------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQL for query:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> iqr<span class="token punctuation">(</span>s1<span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>test | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Output series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+-----------------+ | 
 | |                         Time|iqr(root.test.s1)| | 
 | +-----------------------------+-----------------+ | 
 | |1970-01-01T08:00:01.700+08:00|             10.0| | 
 | +-----------------------------+-----------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="ksigma" tabindex="-1"><a class="header-anchor" href="#ksigma" aria-hidden="true">#</a> KSigma</h2><h3 id="usage-1" tabindex="-1"><a class="header-anchor" href="#usage-1" aria-hidden="true">#</a> Usage</h3><p>This function is used to detect anomalies based on the Dynamic K-Sigma Algorithm.<br> Within a sliding window, the input value with a deviation of more than k times the standard deviation from the average will be output as anomaly.</p><p><strong>Name:</strong> KSIGMA</p><p><strong>Input Series:</strong> Only support a single input series. The type is INT32 / INT64 / FLOAT / DOUBLE.</p><ul><li><code>k</code>: How many times to multiply on standard deviation to define anomaly, the default value is 3.</li><li><code>window</code>: The window size of Dynamic K-Sigma Algorithm, the default value is 10000.</li></ul><p><strong>Output Series:</strong> Output a single series. The type is same as input series.</p><p><strong>Note:</strong> Only when is larger than 0, the anomaly detection will be performed. Otherwise, nothing will be output.</p><h3 id="examples-1" tabindex="-1"><a class="header-anchor" href="#examples-1" aria-hidden="true">#</a> Examples</h3><h4 id="assigning-k" tabindex="-1"><a class="header-anchor" href="#assigning-k" aria-hidden="true">#</a> Assigning k</h4><p>Input series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+---------------+ | 
 | |                         Time|root.test.d1.s1| | 
 | +-----------------------------+---------------+ | 
 | |2020-01-01T00:00:02.000+08:00|            0.0| | 
 | |2020-01-01T00:00:03.000+08:00|           50.0| | 
 | |2020-01-01T00:00:04.000+08:00|          100.0| | 
 | |2020-01-01T00:00:06.000+08:00|          150.0| | 
 | |2020-01-01T00:00:08.000+08:00|          200.0| | 
 | |2020-01-01T00:00:10.000+08:00|          200.0| | 
 | |2020-01-01T00:00:14.000+08:00|          200.0| | 
 | |2020-01-01T00:00:15.000+08:00|          200.0| | 
 | |2020-01-01T00:00:16.000+08:00|          200.0| | 
 | |2020-01-01T00:00:18.000+08:00|          200.0| | 
 | |2020-01-01T00:00:20.000+08:00|          150.0| | 
 | |2020-01-01T00:00:22.000+08:00|          100.0| | 
 | |2020-01-01T00:00:26.000+08:00|           50.0| | 
 | |2020-01-01T00:00:28.000+08:00|            0.0| | 
 | |2020-01-01T00:00:30.000+08:00|            NaN| | 
 | +-----------------------------+---------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQL for query:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> ksigma<span class="token punctuation">(</span>s1<span class="token punctuation">,</span><span class="token string">"k"</span><span class="token operator">=</span><span class="token string">"1.0"</span><span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>test<span class="token punctuation">.</span>d1 <span class="token keyword">where</span> <span class="token keyword">time</span> <span class="token operator"><=</span> <span class="token number">2020</span><span class="token operator">-</span><span class="token number">01</span><span class="token operator">-</span><span class="token number">01</span> <span class="token number">00</span>:<span class="token number">00</span>:<span class="token number">30</span> | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Output series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+---------------------------------+ | 
 | |Time                         |ksigma(root.test.d1.s1,"k"="3.0")| | 
 | +-----------------------------+---------------------------------+ | 
 | |2020-01-01T00:00:02.000+08:00|                              0.0| | 
 | |2020-01-01T00:00:03.000+08:00|                             50.0| | 
 | |2020-01-01T00:00:26.000+08:00|                             50.0| | 
 | |2020-01-01T00:00:28.000+08:00|                              0.0| | 
 | +-----------------------------+---------------------------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="lof" tabindex="-1"><a class="header-anchor" href="#lof" aria-hidden="true">#</a> LOF</h2><h3 id="usage-2" tabindex="-1"><a class="header-anchor" href="#usage-2" aria-hidden="true">#</a> Usage</h3><p>This function is used to detect density anomaly of time series. According to k-th distance calculation parameter and local outlier factor (lof) threshold, the function judges if a set of input values is an density anomaly, and a bool mark of anomaly values will be output.</p><p><strong>Name:</strong> LOF</p><p><strong>Input Series:</strong> Multiple input series. The type is INT32 / INT64 / FLOAT / DOUBLE.</p><ul><li><code>method</code>:assign a detection method. The default value is "default", when input data has multiple dimensions. The alternative is "series", when a input series will be transformed to high dimension.</li><li><code>k</code>:use the k-th distance to calculate lof. Default value is 3.</li><li><code>window</code>: size of window to split origin data points. Default value is 10000.</li><li><code>windowsize</code>:dimension that will be transformed into when method is "series". The default value is 5.</li></ul><p><strong>Output Series:</strong> Output a single series. The type is DOUBLE.</p><p><strong>Note:</strong> Incomplete rows will be ignored. They are neither calculated nor marked as anomaly.</p><h3 id="examples-2" tabindex="-1"><a class="header-anchor" href="#examples-2" aria-hidden="true">#</a> Examples</h3><h4 id="using-default-parameters" tabindex="-1"><a class="header-anchor" href="#using-default-parameters" aria-hidden="true">#</a> Using default parameters</h4><p>Input series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+---------------+---------------+ | 
 | |                         Time|root.test.d1.s1|root.test.d1.s2| | 
 | +-----------------------------+---------------+---------------+ | 
 | |1970-01-01T08:00:00.100+08:00|            0.0|            0.0| | 
 | |1970-01-01T08:00:00.200+08:00|            0.0|            1.0| | 
 | |1970-01-01T08:00:00.300+08:00|            1.0|            1.0| | 
 | |1970-01-01T08:00:00.400+08:00|            1.0|            0.0| | 
 | |1970-01-01T08:00:00.500+08:00|            0.0|           -1.0| | 
 | |1970-01-01T08:00:00.600+08:00|           -1.0|           -1.0| | 
 | |1970-01-01T08:00:00.700+08:00|           -1.0|            0.0| | 
 | |1970-01-01T08:00:00.800+08:00|            2.0|            2.0| | 
 | |1970-01-01T08:00:00.900+08:00|            0.0|           null| | 
 | +-----------------------------+---------------+---------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQL for query:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> lof<span class="token punctuation">(</span>s1<span class="token punctuation">,</span>s2<span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>test<span class="token punctuation">.</span>d1 <span class="token keyword">where</span> <span class="token keyword">time</span><span class="token operator"><</span><span class="token number">1000</span> | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Output series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+-------------------------------------+ | 
 | |                         Time|lof(root.test.d1.s1, root.test.d1.s2)| | 
 | +-----------------------------+-------------------------------------+ | 
 | |1970-01-01T08:00:00.100+08:00|                   3.8274824267668244| | 
 | |1970-01-01T08:00:00.200+08:00|                   3.0117631741126156| | 
 | |1970-01-01T08:00:00.300+08:00|                    2.838155437762879| | 
 | |1970-01-01T08:00:00.400+08:00|                   3.0117631741126156| | 
 | |1970-01-01T08:00:00.500+08:00|                     2.73518261244453| | 
 | |1970-01-01T08:00:00.600+08:00|                    2.371440975708148| | 
 | |1970-01-01T08:00:00.700+08:00|                     2.73518261244453| | 
 | |1970-01-01T08:00:00.800+08:00|                   1.7561416374270742| | 
 | +-----------------------------+-------------------------------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="diagnosing-1d-timeseries" tabindex="-1"><a class="header-anchor" href="#diagnosing-1d-timeseries" aria-hidden="true">#</a> Diagnosing 1d timeseries</h4><p>Input series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+---------------+ | 
 | |                         Time|root.test.d1.s1| | 
 | +-----------------------------+---------------+ | 
 | |1970-01-01T08:00:00.100+08:00|            1.0| | 
 | |1970-01-01T08:00:00.200+08:00|            2.0| | 
 | |1970-01-01T08:00:00.300+08:00|            3.0| | 
 | |1970-01-01T08:00:00.400+08:00|            4.0| | 
 | |1970-01-01T08:00:00.500+08:00|            5.0| | 
 | |1970-01-01T08:00:00.600+08:00|            6.0| | 
 | |1970-01-01T08:00:00.700+08:00|            7.0| | 
 | |1970-01-01T08:00:00.800+08:00|            8.0| | 
 | |1970-01-01T08:00:00.900+08:00|            9.0| | 
 | |1970-01-01T08:00:01.000+08:00|           10.0| | 
 | |1970-01-01T08:00:01.100+08:00|           11.0| | 
 | |1970-01-01T08:00:01.200+08:00|           12.0| | 
 | |1970-01-01T08:00:01.300+08:00|           13.0| | 
 | |1970-01-01T08:00:01.400+08:00|           14.0| | 
 | |1970-01-01T08:00:01.500+08:00|           15.0| | 
 | |1970-01-01T08:00:01.600+08:00|           16.0| | 
 | |1970-01-01T08:00:01.700+08:00|           17.0| | 
 | |1970-01-01T08:00:01.800+08:00|           18.0| | 
 | |1970-01-01T08:00:01.900+08:00|           19.0| | 
 | |1970-01-01T08:00:02.000+08:00|           20.0| | 
 | +-----------------------------+---------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQL for query:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> lof<span class="token punctuation">(</span>s1<span class="token punctuation">,</span> <span class="token string">"method"</span><span class="token operator">=</span><span class="token string">"series"</span><span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>test<span class="token punctuation">.</span>d1 <span class="token keyword">where</span> <span class="token keyword">time</span><span class="token operator"><</span><span class="token number">1000</span> | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Output series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+--------------------+ | 
 | |                         Time|lof(root.test.d1.s1)| | 
 | +-----------------------------+--------------------+ | 
 | |1970-01-01T08:00:00.100+08:00|    3.77777777777778| | 
 | |1970-01-01T08:00:00.200+08:00|    4.32727272727273| | 
 | |1970-01-01T08:00:00.300+08:00|    4.85714285714286| | 
 | |1970-01-01T08:00:00.400+08:00|    5.40909090909091| | 
 | |1970-01-01T08:00:00.500+08:00|    5.94999999999999| | 
 | |1970-01-01T08:00:00.600+08:00|    6.43243243243243| | 
 | |1970-01-01T08:00:00.700+08:00|    6.79999999999999| | 
 | |1970-01-01T08:00:00.800+08:00|                 7.0| | 
 | |1970-01-01T08:00:00.900+08:00|                 7.0| | 
 | |1970-01-01T08:00:01.000+08:00|    6.79999999999999| | 
 | |1970-01-01T08:00:01.100+08:00|    6.43243243243243| | 
 | |1970-01-01T08:00:01.200+08:00|    5.94999999999999| | 
 | |1970-01-01T08:00:01.300+08:00|    5.40909090909091| | 
 | |1970-01-01T08:00:01.400+08:00|    4.85714285714286| | 
 | |1970-01-01T08:00:01.500+08:00|    4.32727272727273| | 
 | |1970-01-01T08:00:01.600+08:00|    3.77777777777778| | 
 | +-----------------------------+--------------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="missdetect" tabindex="-1"><a class="header-anchor" href="#missdetect" aria-hidden="true">#</a> MissDetect</h2><h3 id="usage-3" tabindex="-1"><a class="header-anchor" href="#usage-3" aria-hidden="true">#</a> Usage</h3><p>This function is used to detect missing anomalies.<br> In some datasets, missing values are filled by linear interpolation.<br> Thus, there are several long perfect linear segments.<br> By discovering these perfect linear segments,<br> missing anomalies are detected.</p><p><strong>Name:</strong> MISSDETECT</p><p><strong>Input Series:</strong> Only support a single input series. The data type is INT32 / INT64 / FLOAT / DOUBLE.</p><p><strong>Parameter:</strong></p><p><code>error</code>: The minimum length of the detected missing anomalies, which is an integer greater than or equal to 10. By default, it is 10.</p><p><strong>Output Series:</strong> Output a single series. The type is BOOLEAN. Each data point which is miss anomaly will be labeled as true.</p><h3 id="examples-3" tabindex="-1"><a class="header-anchor" href="#examples-3" aria-hidden="true">#</a> Examples</h3><p>Input series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+---------------+ | 
 | |                         Time|root.test.d2.s2| | 
 | +-----------------------------+---------------+ | 
 | |2021-07-01T12:00:00.000+08:00|            0.0| | 
 | |2021-07-01T12:00:01.000+08:00|            1.0| | 
 | |2021-07-01T12:00:02.000+08:00|            0.0| | 
 | |2021-07-01T12:00:03.000+08:00|            1.0| | 
 | |2021-07-01T12:00:04.000+08:00|            0.0| | 
 | |2021-07-01T12:00:05.000+08:00|            0.0| | 
 | |2021-07-01T12:00:06.000+08:00|            0.0| | 
 | |2021-07-01T12:00:07.000+08:00|            0.0| | 
 | |2021-07-01T12:00:08.000+08:00|            0.0| | 
 | |2021-07-01T12:00:09.000+08:00|            0.0| | 
 | |2021-07-01T12:00:10.000+08:00|            0.0| | 
 | |2021-07-01T12:00:11.000+08:00|            0.0| | 
 | |2021-07-01T12:00:12.000+08:00|            0.0| | 
 | |2021-07-01T12:00:13.000+08:00|            0.0| | 
 | |2021-07-01T12:00:14.000+08:00|            0.0| | 
 | |2021-07-01T12:00:15.000+08:00|            0.0| | 
 | |2021-07-01T12:00:16.000+08:00|            1.0| | 
 | |2021-07-01T12:00:17.000+08:00|            0.0| | 
 | |2021-07-01T12:00:18.000+08:00|            1.0| | 
 | |2021-07-01T12:00:19.000+08:00|            0.0| | 
 | |2021-07-01T12:00:20.000+08:00|            1.0| | 
 | +-----------------------------+---------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQL for query:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> missdetect<span class="token punctuation">(</span>s2<span class="token punctuation">,</span><span class="token string">'minlen'</span><span class="token operator">=</span><span class="token string">'10'</span><span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>test<span class="token punctuation">.</span>d2 | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Output series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+------------------------------------------+ | 
 | |                         Time|missdetect(root.test.d2.s2, "minlen"="10")| | 
 | +-----------------------------+------------------------------------------+ | 
 | |2021-07-01T12:00:00.000+08:00|                                     false| | 
 | |2021-07-01T12:00:01.000+08:00|                                     false| | 
 | |2021-07-01T12:00:02.000+08:00|                                     false| | 
 | |2021-07-01T12:00:03.000+08:00|                                     false| | 
 | |2021-07-01T12:00:04.000+08:00|                                      true| | 
 | |2021-07-01T12:00:05.000+08:00|                                      true| | 
 | |2021-07-01T12:00:06.000+08:00|                                      true| | 
 | |2021-07-01T12:00:07.000+08:00|                                      true| | 
 | |2021-07-01T12:00:08.000+08:00|                                      true| | 
 | |2021-07-01T12:00:09.000+08:00|                                      true| | 
 | |2021-07-01T12:00:10.000+08:00|                                      true| | 
 | |2021-07-01T12:00:11.000+08:00|                                      true| | 
 | |2021-07-01T12:00:12.000+08:00|                                      true| | 
 | |2021-07-01T12:00:13.000+08:00|                                      true| | 
 | |2021-07-01T12:00:14.000+08:00|                                      true| | 
 | |2021-07-01T12:00:15.000+08:00|                                      true| | 
 | |2021-07-01T12:00:16.000+08:00|                                     false| | 
 | |2021-07-01T12:00:17.000+08:00|                                     false| | 
 | |2021-07-01T12:00:18.000+08:00|                                     false| | 
 | |2021-07-01T12:00:19.000+08:00|                                     false| | 
 | |2021-07-01T12:00:20.000+08:00|                                     false| | 
 | +-----------------------------+------------------------------------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="range" tabindex="-1"><a class="header-anchor" href="#range" aria-hidden="true">#</a> Range</h2><h3 id="usage-4" tabindex="-1"><a class="header-anchor" href="#usage-4" aria-hidden="true">#</a> Usage</h3><p>This function is used to detect range anomaly of time series. According to upper bound and lower bound parameters, the function judges if a input value is beyond range, aka range anomaly, and a new time series of anomaly will be output.</p><p><strong>Name:</strong> RANGE</p><p><strong>Input Series:</strong> Only support a single input series. The type is INT32 / INT64 / FLOAT / DOUBLE.</p><ul><li><code>lower_bound</code>:lower bound of range anomaly detection.</li><li><code>upper_bound</code>:upper bound of range anomaly detection.</li></ul><p><strong>Output Series:</strong> Output a single series. The type is the same as the input.</p><p><strong>Note:</strong> Only when <code>upper_bound</code> is larger than <code>lower_bound</code>, the anomaly detection will be performed. Otherwise, nothing will be output.</p><h3 id="examples-4" tabindex="-1"><a class="header-anchor" href="#examples-4" aria-hidden="true">#</a> Examples</h3><h4 id="assigning-lower-and-upper-bound" tabindex="-1"><a class="header-anchor" href="#assigning-lower-and-upper-bound" aria-hidden="true">#</a> Assigning Lower and Upper Bound</h4><p>Input series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+---------------+ | 
 | |                         Time|root.test.d1.s1| | 
 | +-----------------------------+---------------+ | 
 | |2020-01-01T00:00:02.000+08:00|          100.0| | 
 | |2020-01-01T00:00:03.000+08:00|          101.0| | 
 | |2020-01-01T00:00:04.000+08:00|          102.0| | 
 | |2020-01-01T00:00:06.000+08:00|          104.0| | 
 | |2020-01-01T00:00:08.000+08:00|          126.0| | 
 | |2020-01-01T00:00:10.000+08:00|          108.0| | 
 | |2020-01-01T00:00:14.000+08:00|          112.0| | 
 | |2020-01-01T00:00:15.000+08:00|          113.0| | 
 | |2020-01-01T00:00:16.000+08:00|          114.0| | 
 | |2020-01-01T00:00:18.000+08:00|          116.0| | 
 | |2020-01-01T00:00:20.000+08:00|          118.0| | 
 | |2020-01-01T00:00:22.000+08:00|          120.0| | 
 | |2020-01-01T00:00:26.000+08:00|          124.0| | 
 | |2020-01-01T00:00:28.000+08:00|          126.0| | 
 | |2020-01-01T00:00:30.000+08:00|            NaN| | 
 | +-----------------------------+---------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQL for query:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> range<span class="token punctuation">(</span>s1<span class="token punctuation">,</span><span class="token string">"lower_bound"</span><span class="token operator">=</span><span class="token string">"101.0"</span><span class="token punctuation">,</span><span class="token string">"upper_bound"</span><span class="token operator">=</span><span class="token string">"125.0"</span><span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>test<span class="token punctuation">.</span>d1 <span class="token keyword">where</span> <span class="token keyword">time</span> <span class="token operator"><=</span> <span class="token number">2020</span><span class="token operator">-</span><span class="token number">01</span><span class="token operator">-</span><span class="token number">01</span> <span class="token number">00</span>:<span class="token number">00</span>:<span class="token number">30</span> | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Output series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+------------------------------------------------------------------+ | 
 | |Time                         |range(root.test.d1.s1,"lower_bound"="101.0","upper_bound"="125.0")| | 
 | +-----------------------------+------------------------------------------------------------------+ | 
 | |2020-01-01T00:00:02.000+08:00|                                                             100.0| | 
 | |2020-01-01T00:00:28.000+08:00|                                                             126.0| | 
 | +-----------------------------+------------------------------------------------------------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="twosidedfilter" tabindex="-1"><a class="header-anchor" href="#twosidedfilter" aria-hidden="true">#</a> TwoSidedFilter</h2><h3 id="usage-5" tabindex="-1"><a class="header-anchor" href="#usage-5" aria-hidden="true">#</a> Usage</h3><p>The function is used to filter anomalies of a numeric time series based on two-sided window detection.</p><p><strong>Name:</strong> TWOSIDEDFILTER</p><p><strong>Input Series:</strong> Only support a single input series. The data type is INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>Output Series:</strong> Output a single series. The type is the same as the input. It is the input without anomalies.</p><p><strong>Parameter:</strong></p><ul><li><p><code>len</code>: The size of the window, which is a positive integer. By default, it's 5. When <code>len</code>=3, the algorithm detects forward window and backward window with length 3 and calculates the outlierness of the current point.</p></li><li><p><code>threshold</code>: The threshold of outlierness, which is a floating number in (0,1). By default, it's 0.3. The strict standard of detecting anomalies is in proportion to the threshold.</p></li></ul><h3 id="examples-5" tabindex="-1"><a class="header-anchor" href="#examples-5" aria-hidden="true">#</a> Examples</h3><p>Input series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+------------+ | 
 | |                         Time|root.test.s0| | 
 | +-----------------------------+------------+ | 
 | |1970-01-01T08:00:00.000+08:00|      2002.0| | 
 | |1970-01-01T08:00:01.000+08:00|      1946.0| | 
 | |1970-01-01T08:00:02.000+08:00|      1958.0| | 
 | |1970-01-01T08:00:03.000+08:00|      2012.0| | 
 | |1970-01-01T08:00:04.000+08:00|      2051.0| | 
 | |1970-01-01T08:00:05.000+08:00|      1898.0| | 
 | |1970-01-01T08:00:06.000+08:00|      2014.0| | 
 | |1970-01-01T08:00:07.000+08:00|      2052.0| | 
 | |1970-01-01T08:00:08.000+08:00|      1935.0| | 
 | |1970-01-01T08:00:09.000+08:00|      1901.0| | 
 | |1970-01-01T08:00:10.000+08:00|      1972.0| | 
 | |1970-01-01T08:00:11.000+08:00|      1969.0| | 
 | |1970-01-01T08:00:12.000+08:00|      1984.0| | 
 | |1970-01-01T08:00:13.000+08:00|      2018.0| | 
 | |1970-01-01T08:00:37.000+08:00|      1484.0| | 
 | |1970-01-01T08:00:38.000+08:00|      1055.0| | 
 | |1970-01-01T08:00:39.000+08:00|      1050.0| | 
 | |1970-01-01T08:01:05.000+08:00|      1023.0| | 
 | |1970-01-01T08:01:06.000+08:00|      1056.0| | 
 | |1970-01-01T08:01:07.000+08:00|       978.0| | 
 | |1970-01-01T08:01:08.000+08:00|      1050.0| | 
 | |1970-01-01T08:01:09.000+08:00|      1123.0| | 
 | |1970-01-01T08:01:10.000+08:00|      1150.0| | 
 | |1970-01-01T08:01:11.000+08:00|      1034.0| | 
 | |1970-01-01T08:01:12.000+08:00|       950.0| | 
 | |1970-01-01T08:01:13.000+08:00|      1059.0| | 
 | +-----------------------------+------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>SQL for query:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">select</span> TwoSidedFilter<span class="token punctuation">(</span>s0<span class="token punctuation">,</span> <span class="token string">'len'</span><span class="token operator">=</span><span class="token string">'5'</span><span class="token punctuation">,</span> <span class="token string">'threshold'</span><span class="token operator">=</span><span class="token string">'0.3'</span><span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>test | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Output series:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+------------+ | 
 | |                         Time|root.test.s0| | 
 | +-----------------------------+------------+ | 
 | |1970-01-01T08:00:00.000+08:00|      2002.0| | 
 | |1970-01-01T08:00:01.000+08:00|      1946.0| | 
 | |1970-01-01T08:00:02.000+08:00|      1958.0| | 
 | |1970-01-01T08:00:03.000+08:00|      2012.0| | 
 | |1970-01-01T08:00:04.000+08:00|      2051.0| | 
 | |1970-01-01T08:00:05.000+08:00|      1898.0| | 
 | |1970-01-01T08:00:06.000+08:00|      2014.0| | 
 | |1970-01-01T08:00:07.000+08:00|      2052.0| | 
 | |1970-01-01T08:00:08.000+08:00|      1935.0| | 
 | |1970-01-01T08:00:09.000+08:00|      1901.0| | 
 | |1970-01-01T08:00:10.000+08:00|      1972.0| | 
 | |1970-01-01T08:00:11.000+08:00|      1969.0| | 
 | |1970-01-01T08:00:12.000+08:00|      1984.0| | 
 | |1970-01-01T08:00:13.000+08:00|      2018.0| | 
 | |1970-01-01T08:01:05.000+08:00|      1023.0| | 
 | |1970-01-01T08:01:06.000+08:00|      1056.0| | 
 | |1970-01-01T08:01:07.000+08:00|       978.0| | 
 | |1970-01-01T08:01:08.000+08:00|      1050.0| | 
 | |1970-01-01T08:01:09.000+08:00|      1123.0| | 
 | |1970-01-01T08:01:10.000+08:00|      1150.0| | 
 | |1970-01-01T08:01:11.000+08:00|      1034.0| | 
 | |1970-01-01T08:01:12.000+08:00|       950.0| | 
 | |1970-01-01T08:01:13.000+08:00|      1059.0| | 
 | +-----------------------------+------------+ | 
 | </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,102);function t(r,u){return n(),s("div",null,[i(` | 
 |  | 
 |     Licensed to the Apache Software Foundation (ASF) under one | 
 |     or more contributor license agreements.  See the NOTICE file | 
 |     distributed with this work for additional information | 
 |     regarding copyright ownership.  The ASF licenses this file | 
 |     to you under the Apache License, Version 2.0 (the | 
 |     "License"); you may not use this file except in compliance | 
 |     with the License.  You may obtain a copy of the License at | 
 |      | 
 |         http://www.apache.org/licenses/LICENSE-2.0 | 
 |      | 
 |     Unless required by applicable law or agreed to in writing, | 
 |     software distributed under the License is distributed on an | 
 |     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 |     KIND, either express or implied.  See the License for the | 
 |     specific language governing permissions and limitations | 
 |     under the License. | 
 |  | 
 | `),l])}const c=e(d,[["render",t],["__file","Anomaly-Detection.html.vue"]]);export{c as default}; |