blob: 80ced4810f25cd29fb5323bc1f198f007cbb0fca [file] [log] [blame]
<!DOCTYPE html>
<html lang="en-US" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-beta.61" />
<meta name="theme" content="VuePress Theme Hope" />
<link rel="alternate" hreflang="zh-cn" href="https://iotdb.apache.org/zh/UserGuide/V1.0.x/Query-Data/Continuous-Query.html"><meta property="og:url" content="https://iotdb.apache.org/UserGuide/V1.0.x/Query-Data/Continuous-Query.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:title" content="Continuous Query(CQ)"><meta property="og:description" content="Introduction Continuous queries(CQ) are queries that run automatically and periodically on realtime data and store query results in other specified time series. Syntax Note: 1. ..."><meta property="og:type" content="article"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="zh-CN"><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"Continuous Query(CQ)","image":[""],"dateModified":null,"author":[]}</script><link rel="icon" href="/favicon.ico"><meta name="Description" content="Apache IoTDB: Time Series Database for IoT"><meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management,时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据"><meta name="baidu-site-verification" content="wfKETzB3OT"><meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo"><title>Continuous Query(CQ) | IoTDB Website</title><meta name="description" content="Introduction Continuous queries(CQ) are queries that run automatically and periodically on realtime data and store query results in other specified time series. Syntax Note: 1. ...">
<style>
:root {
--bg-color: #fff;
}
html[data-theme="dark"] {
--bg-color: #1d1e1f;
}
html,
body {
background: var(--bg-color);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.documentElement.setAttribute("data-theme", "dark");
}
</script>
<link rel="preload" href="/assets/style-13611a3c.css" as="style"><link rel="stylesheet" href="/assets/style-13611a3c.css">
<link rel="modulepreload" href="/assets/app-f2ec2f8e.js"><link rel="modulepreload" href="/assets/framework-5638dcb2.js"><link rel="modulepreload" href="/assets/Continuous-Query.html-46745236.js"><link rel="modulepreload" href="/assets/Continuous-Query.html-f0330cc1.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="skip-link sr-only">Skip to main content</a><!--]--><!--[--><div class="theme-container has-toc"><!--[--><header class="navbar hide-icon" id="navbar"><div class="navbar-start"><button class="toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><!----><!--]--><a href="/" class="brand"><img class="logo" src="/logo.png" alt="IoTDB Website"><!----><span class="site-name hide-in-pad">IoTDB Website</span></a><!--[--><!----><!--]--></div><div class="navbar-center"><!--[--><!----><!--]--><!--[--><!----><!--]--></div><div class="navbar-end"><!--[--><!----><!--]--><div id="docsearch-container"></div><nav class="nav-links"><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="Documentation"><span class="title"><!---->Documentation</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/UserGuide/Master/QuickStart/QuickStart.html" class="nav-link" aria-label="latest"><!---->latest<!----></a></li><li class="dropdown-item"><a href="/UserGuide/V1.1.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v1.1.x"><!---->v1.1.x<!----></a></li><li class="dropdown-item"><a href="/UserGuide/V1.0.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v1.0.x"><!---->v1.0.x<!----></a></li><li class="dropdown-item"><a href="/UserGuide/V0.13.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v0.13.x"><!---->v0.13.x<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><a href="https://cwiki.apache.org/confluence/display/IOTDB/System+Design" rel="noopener noreferrer" target="_blank" aria-label="Design" class="nav-link"><!---->Design<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="nav-item hide-in-mobile"><a href="/Download/" class="nav-link" aria-label="Download"><!---->Download<!----></a></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="Community"><span class="title"><!---->Community</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/Community/About.html" class="nav-link" aria-label="About"><!---->About<!----></a></li><li class="dropdown-item"><a href="https://cwiki.apache.org/confluence/display/iotdb" rel="noopener noreferrer" target="_blank" aria-label="Wiki" class="nav-link"><!---->Wiki<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="/Community/Community-Project-Committers.html" class="nav-link" aria-label="People"><!---->People<!----></a></li><li class="dropdown-item"><a href="/Community/Community-Powered-By.html" class="nav-link" aria-label="Powered By"><!---->Powered By<!----></a></li><li class="dropdown-item"><a href="/Community/Materials.html" class="nav-link" aria-label="Resources"><!---->Resources<!----></a></li><li class="dropdown-item"><a href="/Community/Feedback.html" class="nav-link" aria-label="Feedback"><!---->Feedback<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="Development"><span class="title"><!---->Development</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/Development/VoteRelease.html" class="nav-link" aria-label="How to vote"><!---->How to vote<!----></a></li><li class="dropdown-item"><a href="/Development/HowToCommit.html" class="nav-link" aria-label="How to Commit"><!---->How to Commit<!----></a></li><li class="dropdown-item"><a href="/Development/HowToJoin.html" class="nav-link" aria-label="Become a Contributor"><!---->Become a Contributor<!----></a></li><li class="dropdown-item"><a href="/Development/Committer.html" class="nav-link" aria-label="Become a Committer"><!---->Become a Committer<!----></a></li><li class="dropdown-item"><a href="/Development/ContributeGuide.html" class="nav-link" aria-label="ContributeGuide"><!---->ContributeGuide<!----></a></li><li class="dropdown-item"><a href="/Development/HowtoContributeCode.html" class="nav-link" aria-label="How to Contribute Code"><!---->How to Contribute Code<!----></a></li><li class="dropdown-item"><a href="/Development/format-changelist.html" class="nav-link" aria-label="Changelist of TsFile"><!---->Changelist of TsFile<!----></a></li><li class="dropdown-item"><a href="/Development/rpc-changelist.html" class="nav-link" aria-label="Changelist of RPC"><!---->Changelist of RPC<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="ASF"><span class="title"><!---->ASF</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="https://www.apache.org/" rel="noopener noreferrer" target="_blank" aria-label="Foundation" class="nav-link"><!---->Foundation<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/licenses/" rel="noopener noreferrer" target="_blank" aria-label="License" class="nav-link"><!---->License<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/security/" rel="noopener noreferrer" target="_blank" aria-label="Security" class="nav-link"><!---->Security<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/foundation/sponsorship.html" rel="noopener noreferrer" target="_blank" aria-label="Sponsorship" class="nav-link"><!---->Sponsorship<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/foundation/thanks.html" rel="noopener noreferrer" target="_blank" aria-label="Thanks" class="nav-link"><!---->Thanks<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/events/current-event" rel="noopener noreferrer" target="_blank" aria-label="Current Events" class="nav-link"><!---->Current Events<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></li></ul></button></div></div></nav><div class="nav-item"><div class="dropdown-wrapper i18n-dropdown"><button class="dropdown-title" type="button" aria-label="Select language"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" style="width:1rem;height:1rem;vertical-align:middle;"><path d="M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"></path></svg><!--]--><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html" class="router-link-active router-link-exact-active nav-link active" aria-label="English"><!---->English<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V1.0.x/Query-Data/Continuous-Query.html" class="nav-link" aria-label="简体中文"><!---->简体中文<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><button id="appearance-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" style="display:block;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="light icon" style="display:none;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><div class="nav-item"><a class="repo-link" href="https://github.com/apache/iotdb" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="github icon" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><!--[--><!----><!--]--><button class="toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span class="button-container"><span class="button-top"></span><span class="button-middle"></span><span class="button-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside class="sidebar" id="sidebar"><!--[--><!----><!--]--><ul class="sidebar-links"><li><section class="sidebar-group"><p class="sidebar-heading"><!----><span class="title">IoTDB User Guide (V1.0.x)</span><!----></p><ul class="sidebar-links"></ul></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">About IoTDB</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Quick Start</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Data Concept</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Syntax Conventions</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">API</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Operate Metadata</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Write Data (Update Data)</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Delete Data</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable active"><!----><span class="title">Query Data</span><span class="arrow down"></span></button><ul class="sidebar-links"><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Overview.html" class="nav-link sidebar-link sidebar-page" aria-label="Overview"><!---->Overview<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Select-Expression.html" class="nav-link sidebar-link sidebar-page" aria-label="Select Expression"><!---->Select Expression<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Last-Query.html" class="nav-link sidebar-link sidebar-page" aria-label="Last Query"><!---->Last Query<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Align-By.html" class="nav-link sidebar-link sidebar-page" aria-label="Query Alignment Mode"><!---->Query Alignment Mode<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Where-Condition.html" class="nav-link sidebar-link sidebar-page" aria-label="Where Condition"><!---->Where Condition<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Group-By.html" class="nav-link sidebar-link sidebar-page" aria-label="Group By"><!---->Group By<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Having-Condition.html" class="nav-link sidebar-link sidebar-page" aria-label="Having Condition"><!---->Having Condition<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Fill.html" class="nav-link sidebar-link sidebar-page" aria-label="Fill Null Value"><!---->Fill Null Value<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Pagination.html" class="nav-link sidebar-link sidebar-page" aria-label="Pagination"><!---->Pagination<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/UserGuide/V1.0.x/Query-Data/Select-Into.html" class="nav-link sidebar-link sidebar-page" aria-label="Select Into"><!---->Select Into<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html" class="router-link-active router-link-exact-active nav-link active sidebar-link sidebar-page active" aria-label="Continuous Query"><!---->Continuous Query<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#introduction" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Introduction"><!---->Introduction<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#syntax" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Syntax"><!---->Syntax<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#descriptions-of-parameters-in-cq-syntax" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Descriptions of parameters in CQ syntax"><!---->Descriptions of parameters in CQ syntax<!----></a><ul class="sidebar-sub-headers"></ul></li></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#examples-of-cq" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Examples of CQ"><!---->Examples of CQ<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#configuring-execution-intervals" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Configuring execution intervals"><!---->Configuring execution intervals<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#configuring-time-range-for-resampling" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Configuring time range for resampling"><!---->Configuring time range for resampling<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#configuring-execution-intervals-and-cq-time-ranges" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Configuring execution intervals and CQ time ranges"><!---->Configuring execution intervals and CQ time ranges<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#configuring-end-time-offset-for-cq-time-range" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Configuring end_time_offset for CQ time range"><!---->Configuring end_time_offset for CQ time range<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#cq-without-group-by-clause" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="CQ without group by clause"><!---->CQ without group by clause<!----></a><ul class="sidebar-sub-headers"></ul></li></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#cq-management" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="CQ Management"><!---->CQ Management<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#listing-continuous-queries" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Listing continuous queries"><!---->Listing continuous queries<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#dropping-continuous-queries" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Dropping continuous queries"><!---->Dropping continuous queries<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#altering-continuous-queries" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Altering continuous queries"><!---->Altering continuous queries<!----></a><ul class="sidebar-sub-headers"></ul></li></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#cq-use-cases" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="CQ Use Cases"><!---->CQ Use Cases<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#downsampling-and-data-retention" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Downsampling and Data Retention"><!---->Downsampling and Data Retention<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#recalculating-expensive-queries" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Recalculating expensive queries"><!---->Recalculating expensive queries<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#substituting-for-sub-query" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Substituting for sub-query"><!---->Substituting for sub-query<!----></a><ul class="sidebar-sub-headers"></ul></li></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#system-parameter-configuration" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="System Parameter Configuration"><!---->System Parameter Configuration<!----></a><ul class="sidebar-sub-headers"></ul></li></ul><!--]--></li></ul></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Operators and Functions</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Trigger</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Monitor and Alert</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Administration Management</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Maintenance Tools</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Collaboration of Edge and Cloud</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Ecosystem Integration</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Cluster</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">FAQ</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">Reference</span><span class="arrow end"></span></button><!----></section></li></ul><!--[--><!----><!--]--></aside><!--[--><main class="page" id="main-content"><!--[--><!----><nav class="breadcrumb disable"></nav><div class="page-title"><h1><!---->Continuous Query(CQ)</h1><div class="page-info"><!----><!----><!----><!----><span class="page-reading-time-info" aria-label="Reading Time"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>About 13 min</span><meta property="timeRequired" content="PT13M"></span><!----><!----></div><hr></div><div class="toc-place-holder"><aside id="toc"><!--[--><!----><!--]--><div class="toc-header">On This Page<button class="print-button" title="Print"><svg xmlns="http://www.w3.org/2000/svg" class="icon print-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="print icon"><path d="M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"></path></svg></button></div><div class="toc-wrapper"><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#introduction" class="router-link-active router-link-exact-active toc-link level2">Introduction</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#syntax" class="router-link-active router-link-exact-active toc-link level2">Syntax</a></li><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#descriptions-of-parameters-in-cq-syntax" class="router-link-active router-link-exact-active toc-link level3">Descriptions of parameters in CQ syntax</a></li><!----><!--]--></ul><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#examples-of-cq" class="router-link-active router-link-exact-active toc-link level2">Examples of CQ</a></li><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#configuring-execution-intervals" class="router-link-active router-link-exact-active toc-link level3">Configuring execution intervals</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#configuring-time-range-for-resampling" class="router-link-active router-link-exact-active toc-link level3">Configuring time range for resampling</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#configuring-execution-intervals-and-cq-time-ranges" class="router-link-active router-link-exact-active toc-link level3">Configuring execution intervals and CQ time ranges</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#configuring-end-time-offset-for-cq-time-range" class="router-link-active router-link-exact-active toc-link level3">Configuring end_time_offset for CQ time range</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#cq-without-group-by-clause" class="router-link-active router-link-exact-active toc-link level3">CQ without group by clause</a></li><!----><!--]--></ul><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#cq-management" class="router-link-active router-link-exact-active toc-link level2">CQ Management</a></li><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#listing-continuous-queries" class="router-link-active router-link-exact-active toc-link level3">Listing continuous queries</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#dropping-continuous-queries" class="router-link-active router-link-exact-active toc-link level3">Dropping continuous queries</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#altering-continuous-queries" class="router-link-active router-link-exact-active toc-link level3">Altering continuous queries</a></li><!----><!--]--></ul><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#cq-use-cases" class="router-link-active router-link-exact-active toc-link level2">CQ Use Cases</a></li><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#downsampling-and-data-retention" class="router-link-active router-link-exact-active toc-link level3">Downsampling and Data Retention</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#recalculating-expensive-queries" class="router-link-active router-link-exact-active toc-link level3">Recalculating expensive queries</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#substituting-for-sub-query" class="router-link-active router-link-exact-active toc-link level3">Substituting for sub-query</a></li><!----><!--]--></ul><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/UserGuide/V1.0.x/Query-Data/Continuous-Query.html#system-parameter-configuration" class="router-link-active router-link-exact-active toc-link level2">System Parameter Configuration</a></li><!----><!--]--></ul></div><!--[--><!----><!--]--></aside></div><!----><div class="theme-hope-content"><!--
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.
--><h1 id="continuous-query-cq" tabindex="-1"><a class="header-anchor" href="#continuous-query-cq" aria-hidden="true">#</a> Continuous Query(CQ)</h1><h2 id="introduction" tabindex="-1"><a class="header-anchor" href="#introduction" aria-hidden="true">#</a> Introduction</h2><p>Continuous queries(CQ) are queries that run automatically and periodically on realtime data and store query results in other specified time series.</p><h2 id="syntax" tabindex="-1"><a class="header-anchor" href="#syntax" aria-hidden="true">#</a> Syntax</h2><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">CREATE</span> <span class="token punctuation">(</span>CONTINUOUS QUERY <span class="token operator">|</span> CQ<span class="token punctuation">)</span> <span class="token operator">&lt;</span>cq_id<span class="token operator">&gt;</span>
<span class="token punctuation">[</span>RESAMPLE
<span class="token punctuation">[</span>EVERY <span class="token operator">&lt;</span>every_interval<span class="token operator">&gt;</span><span class="token punctuation">]</span>
<span class="token punctuation">[</span>BOUNDARY <span class="token operator">&lt;</span>execution_boundary_time<span class="token operator">&gt;</span><span class="token punctuation">]</span>
<span class="token punctuation">[</span>RANGE <span class="token operator">&lt;</span>start_time_offset<span class="token operator">&gt;</span><span class="token punctuation">[</span><span class="token punctuation">,</span> end_time_offset<span class="token punctuation">]</span><span class="token punctuation">]</span>
<span class="token punctuation">]</span>
<span class="token punctuation">[</span>TIMEOUT POLICY BLOCKED<span class="token operator">|</span><span class="token keyword">DISCARD</span><span class="token punctuation">]</span>
<span class="token keyword">BEGIN</span>
<span class="token keyword">SELECT</span> CLAUSE
<span class="token keyword">INTO</span> CLAUSE
<span class="token keyword">FROM</span> CLAUSE
<span class="token punctuation">[</span><span class="token keyword">WHERE</span> CLAUSE<span class="token punctuation">]</span>
<span class="token punctuation">[</span><span class="token keyword">GROUP</span> <span class="token keyword">BY</span><span class="token punctuation">(</span><span class="token operator">&lt;</span>group_by_interval<span class="token operator">&gt;</span><span class="token punctuation">[</span><span class="token punctuation">,</span> <span class="token operator">&lt;</span>sliding_step<span class="token operator">&gt;</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">[</span><span class="token punctuation">,</span> <span class="token keyword">level</span> <span class="token operator">=</span> <span class="token operator">&lt;</span><span class="token keyword">level</span><span class="token operator">&gt;</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
<span class="token punctuation">[</span><span class="token keyword">HAVING</span> CLAUSE<span class="token punctuation">]</span>
<span class="token punctuation">[</span>FILL {PREVIOUS <span class="token operator">|</span> LINEAR <span class="token operator">|</span> constant}<span class="token punctuation">]</span>
<span class="token punctuation">[</span><span class="token keyword">LIMIT</span> rowLimit <span class="token keyword">OFFSET</span> rowOffset<span class="token punctuation">]</span>
<span class="token punctuation">[</span>ALIGN <span class="token keyword">BY</span> DEVICE<span class="token punctuation">]</span>
<span class="token keyword">END</span>
</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></div><blockquote><p>Note:</p><ol><li>If there exists any time filters in WHERE CLAUSE, IoTDB will throw an error, because IoTDB will automatically generate a time range for the query each time it&#39;s executed.</li><li>GROUP BY TIME CLAUSE is different, it doesn&#39;t contain its original first display window parameter which is [start_time, end_time). It&#39;s still because IoTDB will automatically generate a time range for the query each time it&#39;s executed.</li><li>If there is no group by time clause in query, EVERY clause is required, otherwise IoTDB will throw an error.</li></ol></blockquote><h3 id="descriptions-of-parameters-in-cq-syntax" tabindex="-1"><a class="header-anchor" href="#descriptions-of-parameters-in-cq-syntax" aria-hidden="true">#</a> Descriptions of parameters in CQ syntax</h3><ul><li><code>&lt;cq_id&gt;</code> specifies the globally unique id of CQ.</li><li><code>&lt;every_interval&gt;</code> specifies the query execution time interval. We currently support the units of ns, us, ms, s, m, h, d, w, and its value should not be lower than the minimum threshold configured by the user, which is <code>continuous_query_min_every_interval</code>. It&#39;s an optional parameter, default value is set to <code>group_by_interval</code> in group by clause.</li><li><code>&lt;start_time_offset&gt;</code> specifies the start time of each query execution as <code>now()-&lt;start_time_offset&gt;</code>. We currently support the units of ns, us, ms, s, m, h, d, <a href="http://w.It" target="_blank" rel="noopener noreferrer">w.It<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>&#39;s an optional parameter, default value is set to <code>every_interval</code> in resample clause.</li><li><code>&lt;end_time_offset&gt;</code> specifies the end time of each query execution as <code>now()-&lt;end_time_offset&gt;</code>. We currently support the units of ns, us, ms, s, m, h, d, <a href="http://w.It" target="_blank" rel="noopener noreferrer">w.It<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>&#39;s an optional parameter, default value is set to <code>0</code>.</li><li><code>&lt;execution_boundary_time&gt;</code> is a date that represents the execution time of a certain cq task. <ul><li><code>&lt;execution_boundary_time&gt;</code> can be earlier than, equals to, later than <strong>current time</strong>.</li><li>This parameter is optional. If not specified, it is equal to <code>BOUNDARY 0</code></li><li><strong>The start time of the first time window</strong> is <code>&lt;execution_boundary_time&gt; - &lt;start_time_offset&gt;</code>.</li><li><strong>The end time of the first time window</strong> is <code>&lt;execution_boundary_time&gt; - &lt;end_time_offset&gt;</code>.</li><li>The <strong>time range</strong> of the <code>i (1 &lt;= i)th</code> window is <code>[&lt;execution_boundary_time&gt; - &lt;start_time_offset&gt; + (i - 1) * &lt;every_interval&gt;, &lt;execution_boundary_time&gt; - &lt;end_time_offset&gt; + (i - 1) * &lt;every_interval&gt;)</code>.</li><li>If the <strong>current time</strong> is earlier than or equal to <code>execution_boundary_time</code>, then the first execution moment of the continuous query is <code>execution_boundary_time</code>.</li><li>If the <strong>current time</strong> is later than <code>execution_boundary_time</code>, then the first execution moment of the continuous query is the first <code>execution_boundary_time + i * &lt;every_interval&gt;</code> that is later than or equal to the current time .</li></ul></li></ul><blockquote><ul><li><code>&lt;every_interval&gt;</code><code>&lt;start_time_offset&gt;</code> and <code>&lt;group_by_interval&gt;</code> should all be greater than <code>0</code>.</li><li>The value of <code>&lt;group_by_interval&gt;</code> should be less than or equal to the value of <code>&lt;start_time_offset&gt;</code>, otherwise the system will throw an error.</li><li>Users should specify the appropriate <code>&lt;start_time_offset&gt;</code> and <code>&lt;every_interval&gt;</code> according to actual needs. <ul><li>If <code>&lt;start_time_offset&gt;</code> is greater than <code>&lt;every_interval&gt;</code>, there will be partial data overlap in each query window.</li><li>If <code>&lt;start_time_offset&gt;</code> is less than <code>&lt;every_interval&gt;</code>, there may be uncovered data between each query window.</li></ul></li><li><code>start_time_offset</code> should be larger than <code>end_time_offset</code>, otherwise the system will throw an error.</li></ul></blockquote><h4 id="start-time-offset-every-interval" tabindex="-1"><a class="header-anchor" href="#start-time-offset-every-interval" aria-hidden="true">#</a> <code>&lt;start_time_offset&gt;</code> == <code>&lt;every_interval&gt;</code></h4><figure><img src="https://alioss.timecho.com/docs/img/UserGuide/Process-Data/Continuous-Query/pic1.png" alt="1" tabindex="0" loading="lazy"><figcaption>1</figcaption></figure><h4 id="start-time-offset-every-interval-1" tabindex="-1"><a class="header-anchor" href="#start-time-offset-every-interval-1" aria-hidden="true">#</a> <code>&lt;start_time_offset&gt;</code> &gt; <code>&lt;every_interval&gt;</code></h4><figure><img src="https://alioss.timecho.com/docs/img/UserGuide/Process-Data/Continuous-Query/pic2.png" alt="2" tabindex="0" loading="lazy"><figcaption>2</figcaption></figure><h4 id="start-time-offset-every-interval-2" tabindex="-1"><a class="header-anchor" href="#start-time-offset-every-interval-2" aria-hidden="true">#</a> <code>&lt;start_time_offset&gt;</code> &lt; <code>&lt;every_interval&gt;</code></h4><figure><img src="https://alioss.timecho.com/docs/img/UserGuide/Process-Data/Continuous-Query/pic3.png" alt="3" tabindex="0" loading="lazy"><figcaption>3</figcaption></figure><h4 id="every-interval-is-not-zero" tabindex="-1"><a class="header-anchor" href="#every-interval-is-not-zero" aria-hidden="true">#</a> <code>&lt;every_interval&gt;</code> is not zero</h4><figure><img src="https://alioss.timecho.com/docs/img/UserGuide/Process-Data/Continuous-Query/pic4.png" alt="4" tabindex="0" loading="lazy"><figcaption>4</figcaption></figure><ul><li><code>TIMEOUT POLICY</code> specify how we deal with the cq task whose previous time interval execution is not finished while the next execution time has reached. The default value is <code>BLOCKED</code>. <ul><li><code>BLOCKED</code> means that we will block and wait to do the current cq execution task until the previous time interval cq task finishes. If using <code>BLOCKED</code> policy, all the time intervals will be executed, but it may be behind the latest time interval.</li><li><code>DISCARD</code> means that we just discard the current cq execution task and wait for the next execution time and do the next time interval cq task. If using <code>DISCARD</code> policy, some time intervals won&#39;t be executed when the execution time of one cq task is longer than the <code>&lt;every_interval&gt;</code>. However, once a cq task is executed, it will use the latest time interval, so it can catch up at the sacrifice of some time intervals being discarded.</li></ul></li></ul><h2 id="examples-of-cq" tabindex="-1"><a class="header-anchor" href="#examples-of-cq" aria-hidden="true">#</a> Examples of CQ</h2><p>The examples below use the following sample data. It&#39;s a real time data stream and we can assume that the data arrives on time.</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+
| Time|root.ln.wf02.wt02.temperature|root.ln.wf02.wt01.temperature|root.ln.wf01.wt02.temperature|root.ln.wf01.wt01.temperature|
+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+
|2021-05-11T22:18:14.598+08:00| 121.0| 72.0| 183.0| 115.0|
|2021-05-11T22:18:19.941+08:00| 0.0| 68.0| 68.0| 103.0|
|2021-05-11T22:18:24.949+08:00| 122.0| 45.0| 11.0| 14.0|
|2021-05-11T22:18:29.967+08:00| 47.0| 14.0| 59.0| 181.0|
|2021-05-11T22:18:34.979+08:00| 182.0| 113.0| 29.0| 180.0|
|2021-05-11T22:18:39.990+08:00| 42.0| 11.0| 52.0| 19.0|
|2021-05-11T22:18:44.995+08:00| 78.0| 38.0| 123.0| 52.0|
|2021-05-11T22:18:49.999+08:00| 137.0| 172.0| 135.0| 193.0|
|2021-05-11T22:18:55.003+08:00| 16.0| 124.0| 183.0| 18.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></div><h3 id="configuring-execution-intervals" tabindex="-1"><a class="header-anchor" href="#configuring-execution-intervals" aria-hidden="true">#</a> Configuring execution intervals</h3><p>Use an <code>EVERY</code> interval in the <code>RESAMPLE</code> clause to specify the CQ’s execution interval, if not specific, default value is equal to <code>group_by_interval</code>.</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">CREATE</span> CONTINUOUS QUERY cq1
RESAMPLE EVERY <span class="token number">20</span>s
<span class="token keyword">BEGIN</span>
<span class="token keyword">SELECT</span> max_value<span class="token punctuation">(</span>temperature<span class="token punctuation">)</span>
<span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf02<span class="token punctuation">.</span>wt02<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf02<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt02<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span>
<span class="token keyword">FROM</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span><span class="token operator">*</span><span class="token punctuation">.</span><span class="token operator">*</span>
<span class="token keyword">GROUP</span> <span class="token keyword">BY</span><span class="token punctuation">(</span><span class="token number">10</span>s<span class="token punctuation">)</span>
<span class="token keyword">END</span>
</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><p><code>cq1</code> calculates the 10-second average of <code>temperature</code> sensor under the <code>root.ln</code> prefix path and stores the results in the <code>temperature_max</code> sensor using the same prefix path as the corresponding sensor.</p><p><code>cq1</code> executes at 20-second intervals, the same interval as the <code>EVERY</code> interval. Every 20 seconds, <code>cq1</code> runs a single query that covers the time range for the current time bucket, that is, the 20-second time bucket that intersects with <code>now()</code>.</p><p>Supposing that the current time is <code>2021-05-11T22:18:40.000+08:00</code>, we can see annotated log output about <code>cq1</code> running at DataNode if you set log level to DEBUG:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>At **2021-05-11T22:18:40.000+08:00**, `cq1` executes a query within the time range `[2021-05-11T22:18:20, 2021-05-11T22:18:40)`.
`cq1` generate 2 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
At **2021-05-11T22:19:00.000+08:00**, `cq1` executes a query within the time range `[2021-05-11T22:18:40, 2021-05-11T22:19:00)`.
`cq1` generate 2 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:40.000+08:00| 137.0| 172.0| 135.0| 193.0|
|2021-05-11T22:18:50.000+08:00| 16.0| 124.0| 183.0| 18.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
</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><p><code>cq1</code> won&#39;t deal with data that is before the current time window which is <code>2021-05-11T22:18:20.000+08:00</code>, so here are the results:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>&gt; SELECT temperature_max from root.ln.*.*;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
|2021-05-11T22:18:40.000+08:00| 137.0| 172.0| 135.0| 193.0|
|2021-05-11T22:18:50.000+08:00| 16.0| 124.0| 183.0| 18.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></div><h3 id="configuring-time-range-for-resampling" tabindex="-1"><a class="header-anchor" href="#configuring-time-range-for-resampling" aria-hidden="true">#</a> Configuring time range for resampling</h3><p>Use <code>start_time_offset</code> in the <code>RANGE</code> clause to specify the start time of the CQ’s time range, if not specific, default value is equal to <code>EVERY</code> interval.</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">CREATE</span> CONTINUOUS QUERY cq2
RESAMPLE RANGE <span class="token number">40</span>s
<span class="token keyword">BEGIN</span>
<span class="token keyword">SELECT</span> max_value<span class="token punctuation">(</span>temperature<span class="token punctuation">)</span>
<span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf02<span class="token punctuation">.</span>wt02<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf02<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt02<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span>
<span class="token keyword">FROM</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span><span class="token operator">*</span><span class="token punctuation">.</span><span class="token operator">*</span>
<span class="token keyword">GROUP</span> <span class="token keyword">BY</span><span class="token punctuation">(</span><span class="token number">10</span>s<span class="token punctuation">)</span>
<span class="token keyword">END</span>
</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><p><code>cq2</code> calculates the 10-second average of <code>temperature</code> sensor under the <code>root.ln</code> prefix path and stores the results in the <code>temperature_max</code> sensor using the same prefix path as the corresponding sensor.</p><p><code>cq2</code> executes at 10-second intervals, the same interval as the <code>group_by_interval</code>. Every 10 seconds, <code>cq2</code> runs a single query that covers the time range between <code>now()</code> minus the <code>start_time_offset</code> and <code>now()</code> , that is, the time range between 40 seconds prior to <code>now()</code> and <code>now()</code>.</p><p>Supposing that the current time is <code>2021-05-11T22:18:40.000+08:00</code>, we can see annotated log output about <code>cq2</code> running at DataNode if you set log level to DEBUG:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>At **2021-05-11T22:18:40.000+08:00**, `cq2` executes a query within the time range `[2021-05-11T22:18:00, 2021-05-11T22:18:40)`.
`cq2` generate 4 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:00.000+08:00| NULL| NULL| NULL| NULL|
|2021-05-11T22:18:10.000+08:00| 121.0| 72.0| 183.0| 115.0|
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
At **2021-05-11T22:18:50.000+08:00**, `cq2` executes a query within the time range `[2021-05-11T22:18:10, 2021-05-11T22:18:50)`.
`cq2` generate 4 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:10.000+08:00| 121.0| 72.0| 183.0| 115.0|
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
|2021-05-11T22:18:40.000+08:00| 137.0| 172.0| 135.0| 193.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
At **2021-05-11T22:19:00.000+08:00**, `cq2` executes a query within the time range `[2021-05-11T22:18:20, 2021-05-11T22:19:00)`.
`cq2` generate 4 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
|2021-05-11T22:18:40.000+08:00| 137.0| 172.0| 135.0| 193.0|
|2021-05-11T22:18:50.000+08:00| 16.0| 124.0| 183.0| 18.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
</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 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><code>cq2</code> won&#39;t write lines that are all null. Notice <code>cq2</code> will also calculate the results for some time interval many times. Here are the results:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>&gt; SELECT temperature_max from root.ln.*.*;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:10.000+08:00| 121.0| 72.0| 183.0| 115.0|
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
|2021-05-11T22:18:40.000+08:00| 137.0| 172.0| 135.0| 193.0|
|2021-05-11T22:18:50.000+08:00| 16.0| 124.0| 183.0| 18.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></div><h3 id="configuring-execution-intervals-and-cq-time-ranges" tabindex="-1"><a class="header-anchor" href="#configuring-execution-intervals-and-cq-time-ranges" aria-hidden="true">#</a> Configuring execution intervals and CQ time ranges</h3><p>Use an <code>EVERY</code> interval and <code>RANGE</code> interval in the <code>RESAMPLE</code> clause to specify the CQ’s execution interval and the length of the CQ’s time range. And use <code>fill()</code> to change the value reported for time intervals with no data.</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">CREATE</span> CONTINUOUS QUERY cq3
RESAMPLE EVERY <span class="token number">20</span>s RANGE <span class="token number">40</span>s
<span class="token keyword">BEGIN</span>
<span class="token keyword">SELECT</span> max_value<span class="token punctuation">(</span>temperature<span class="token punctuation">)</span>
<span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf02<span class="token punctuation">.</span>wt02<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf02<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt02<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span>
<span class="token keyword">FROM</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span><span class="token operator">*</span><span class="token punctuation">.</span><span class="token operator">*</span>
<span class="token keyword">GROUP</span> <span class="token keyword">BY</span><span class="token punctuation">(</span><span class="token number">10</span>s<span class="token punctuation">)</span>
FILL<span class="token punctuation">(</span><span class="token number">100.0</span><span class="token punctuation">)</span>
<span class="token keyword">END</span>
</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></div><p><code>cq3</code> calculates the 10-second average of <code>temperature</code> sensor under the <code>root.ln</code> prefix path and stores the results in the <code>temperature_max</code> sensor using the same prefix path as the corresponding sensor. Where possible, it writes the value <code>100.0</code> for time intervals with no results.</p><p><code>cq3</code> executes at 20-second intervals, the same interval as the <code>EVERY</code> interval. Every 20 seconds, <code>cq3</code> runs a single query that covers the time range between <code>now()</code> minus the <code>start_time_offset</code> and <code>now()</code>, that is, the time range between 40 seconds prior to <code>now()</code> and <code>now()</code>.</p><p>Supposing that the current time is <code>2021-05-11T22:18:40.000+08:00</code>, we can see annotated log output about <code>cq3</code> running at DataNode if you set log level to DEBUG:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>At **2021-05-11T22:18:40.000+08:00**, `cq3` executes a query within the time range `[2021-05-11T22:18:00, 2021-05-11T22:18:40)`.
`cq3` generate 4 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:00.000+08:00| 100.0| 100.0| 100.0| 100.0|
|2021-05-11T22:18:10.000+08:00| 121.0| 72.0| 183.0| 115.0|
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
At **2021-05-11T22:19:00.000+08:00**, `cq3` executes a query within the time range `[2021-05-11T22:18:20, 2021-05-11T22:19:00)`.
`cq3` generate 4 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
|2021-05-11T22:18:40.000+08:00| 137.0| 172.0| 135.0| 193.0|
|2021-05-11T22:18:50.000+08:00| 16.0| 124.0| 183.0| 18.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
</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>Notice that <code>cq3</code> will calculate the results for some time interval many times, so here are the results:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>&gt; SELECT temperature_max from root.ln.*.*;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:00.000+08:00| 100.0| 100.0| 100.0| 100.0|
|2021-05-11T22:18:10.000+08:00| 121.0| 72.0| 183.0| 115.0|
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
|2021-05-11T22:18:40.000+08:00| 137.0| 172.0| 135.0| 193.0|
|2021-05-11T22:18:50.000+08:00| 16.0| 124.0| 183.0| 18.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></div><h3 id="configuring-end-time-offset-for-cq-time-range" tabindex="-1"><a class="header-anchor" href="#configuring-end-time-offset-for-cq-time-range" aria-hidden="true">#</a> Configuring end_time_offset for CQ time range</h3><p>Use an <code>EVERY</code> interval and <code>RANGE</code> interval in the RESAMPLE clause to specify the CQ’s execution interval and the length of the CQ’s time range. And use <code>fill()</code> to change the value reported for time intervals with no data.</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">CREATE</span> CONTINUOUS QUERY cq4
RESAMPLE EVERY <span class="token number">20</span>s RANGE <span class="token number">40</span>s<span class="token punctuation">,</span> <span class="token number">20</span>s
<span class="token keyword">BEGIN</span>
<span class="token keyword">SELECT</span> max_value<span class="token punctuation">(</span>temperature<span class="token punctuation">)</span>
<span class="token keyword">INTO</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf02<span class="token punctuation">.</span>wt02<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf02<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt02<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span><span class="token punctuation">,</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">(</span>temperature_max<span class="token punctuation">)</span>
<span class="token keyword">FROM</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span><span class="token operator">*</span><span class="token punctuation">.</span><span class="token operator">*</span>
<span class="token keyword">GROUP</span> <span class="token keyword">BY</span><span class="token punctuation">(</span><span class="token number">10</span>s<span class="token punctuation">)</span>
FILL<span class="token punctuation">(</span><span class="token number">100.0</span><span class="token punctuation">)</span>
<span class="token keyword">END</span>
</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></div><p><code>cq4</code> calculates the 10-second average of <code>temperature</code> sensor under the <code>root.ln</code> prefix path and stores the results in the <code>temperature_max</code> sensor using the same prefix path as the corresponding sensor. Where possible, it writes the value <code>100.0</code> for time intervals with no results.</p><p><code>cq4</code> executes at 20-second intervals, the same interval as the <code>EVERY</code> interval. Every 20 seconds, <code>cq4</code> runs a single query that covers the time range between <code>now()</code> minus the <code>start_time_offset</code> and <code>now()</code> minus the <code>end_time_offset</code>, that is, the time range between 40 seconds prior to <code>now()</code> and 20 seconds prior to <code>now()</code>.</p><p>Supposing that the current time is <code>2021-05-11T22:18:40.000+08:00</code>, we can see annotated log output about <code>cq4</code> running at DataNode if you set log level to DEBUG:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>At **2021-05-11T22:18:40.000+08:00**, `cq4` executes a query within the time range `[2021-05-11T22:18:00, 2021-05-11T22:18:20)`.
`cq4` generate 2 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:00.000+08:00| 100.0| 100.0| 100.0| 100.0|
|2021-05-11T22:18:10.000+08:00| 121.0| 72.0| 183.0| 115.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
At **2021-05-11T22:19:00.000+08:00**, `cq4` executes a query within the time range `[2021-05-11T22:18:20, 2021-05-11T22:18:40)`.
`cq4` generate 2 lines:
&gt;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.0|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
&gt;
</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><p>Notice that <code>cq4</code> will calculate the results for all time intervals only once after a delay of 20 seconds, so here are the results:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>&gt; SELECT temperature_max from root.ln.*.*;
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
| Time|root.ln.wf02.wt02.temperature_max|root.ln.wf02.wt01.temperature_max|root.ln.wf01.wt02.temperature_max|root.ln.wf01.wt01.temperature_max|
+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+
|2021-05-11T22:18:00.000+08:00| 100.0| 100.0| 100.0| 100.0|
|2021-05-11T22:18:10.000+08:00| 121.0| 72.0| 183.0| 115.0|
|2021-05-11T22:18:20.000+08:00| 122.0| 45.0| 59.0| 181.0|
|2021-05-11T22:18:30.000+08:00| 182.0| 113.0| 52.0| 180.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></div><h3 id="cq-without-group-by-clause" tabindex="-1"><a class="header-anchor" href="#cq-without-group-by-clause" aria-hidden="true">#</a> CQ without group by clause</h3><p>Use an <code>EVERY</code> interval in the <code>RESAMPLE</code> clause to specify the CQ’s execution interval and the length of the CQ’s time range.</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">CREATE</span> CONTINUOUS QUERY cq5
RESAMPLE EVERY <span class="token number">20</span>s
<span class="token keyword">BEGIN</span>
<span class="token keyword">SELECT</span> temperature <span class="token operator">+</span> <span class="token number">1</span>
<span class="token keyword">INTO</span> root<span class="token punctuation">.</span>precalculated_sg<span class="token punctuation">.</span>::<span class="token punctuation">(</span>temperature<span class="token punctuation">)</span>
<span class="token keyword">FROM</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span><span class="token operator">*</span><span class="token punctuation">.</span><span class="token operator">*</span>
align <span class="token keyword">by</span> device
<span class="token keyword">END</span>
</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><p><code>cq5</code> calculates the <code>temperature + 1</code> under the <code>root.ln</code> prefix path and stores the results in the <code>root.precalculated_sg</code> database. Sensors use the same prefix path as the corresponding sensor.</p><p><code>cq5</code> executes at 20-second intervals, the same interval as the <code>EVERY</code> interval. Every 20 seconds, <code>cq5</code> runs a single query that covers the time range for the current time bucket, that is, the 20-second time bucket that intersects with <code>now()</code>.</p><p>Supposing that the current time is <code>2021-05-11T22:18:40.000+08:00</code>, we can see annotated log output about <code>cq5</code> running at DataNode if you set log level to DEBUG:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>At **2021-05-11T22:18:40.000+08:00**, `cq5` executes a query within the time range `[2021-05-11T22:18:20, 2021-05-11T22:18:40)`.
`cq5` generate 16 lines:
&gt;
+-----------------------------+-------------------------------+-----------+
| Time| Device|temperature|
+-----------------------------+-------------------------------+-----------+
|2021-05-11T22:18:24.949+08:00|root.precalculated_sg.wf02.wt02| 123.0|
|2021-05-11T22:18:29.967+08:00|root.precalculated_sg.wf02.wt02| 48.0|
|2021-05-11T22:18:34.979+08:00|root.precalculated_sg.wf02.wt02| 183.0|
|2021-05-11T22:18:39.990+08:00|root.precalculated_sg.wf02.wt02| 45.0|
|2021-05-11T22:18:24.949+08:00|root.precalculated_sg.wf02.wt01| 46.0|
|2021-05-11T22:18:29.967+08:00|root.precalculated_sg.wf02.wt01| 15.0|
|2021-05-11T22:18:34.979+08:00|root.precalculated_sg.wf02.wt01| 114.0|
|2021-05-11T22:18:39.990+08:00|root.precalculated_sg.wf02.wt01| 12.0|
|2021-05-11T22:18:24.949+08:00|root.precalculated_sg.wf01.wt02| 12.0|
|2021-05-11T22:18:29.967+08:00|root.precalculated_sg.wf01.wt02| 60.0|
|2021-05-11T22:18:34.979+08:00|root.precalculated_sg.wf01.wt02| 30.0|
|2021-05-11T22:18:39.990+08:00|root.precalculated_sg.wf01.wt02| 53.0|
|2021-05-11T22:18:24.949+08:00|root.precalculated_sg.wf01.wt01| 15.0|
|2021-05-11T22:18:29.967+08:00|root.precalculated_sg.wf01.wt01| 182.0|
|2021-05-11T22:18:34.979+08:00|root.precalculated_sg.wf01.wt01| 181.0|
|2021-05-11T22:18:39.990+08:00|root.precalculated_sg.wf01.wt01| 20.0|
+-----------------------------+-------------------------------+-----------+
&gt;
At **2021-05-11T22:19:00.000+08:00**, `cq5` executes a query within the time range `[2021-05-11T22:18:40, 2021-05-11T22:19:00)`.
`cq5` generate 12 lines:
&gt;
+-----------------------------+-------------------------------+-----------+
| Time| Device|temperature|
+-----------------------------+-------------------------------+-----------+
|2021-05-11T22:18:44.995+08:00|root.precalculated_sg.wf02.wt02| 79.0|
|2021-05-11T22:18:49.999+08:00|root.precalculated_sg.wf02.wt02| 138.0|
|2021-05-11T22:18:55.003+08:00|root.precalculated_sg.wf02.wt02| 17.0|
|2021-05-11T22:18:44.995+08:00|root.precalculated_sg.wf02.wt01| 39.0|
|2021-05-11T22:18:49.999+08:00|root.precalculated_sg.wf02.wt01| 173.0|
|2021-05-11T22:18:55.003+08:00|root.precalculated_sg.wf02.wt01| 125.0|
|2021-05-11T22:18:44.995+08:00|root.precalculated_sg.wf01.wt02| 124.0|
|2021-05-11T22:18:49.999+08:00|root.precalculated_sg.wf01.wt02| 136.0|
|2021-05-11T22:18:55.003+08:00|root.precalculated_sg.wf01.wt02| 184.0|
|2021-05-11T22:18:44.995+08:00|root.precalculated_sg.wf01.wt01| 53.0|
|2021-05-11T22:18:49.999+08:00|root.precalculated_sg.wf01.wt01| 194.0|
|2021-05-11T22:18:55.003+08:00|root.precalculated_sg.wf01.wt01| 19.0|
+-----------------------------+-------------------------------+-----------+
&gt;
</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 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><code>cq5</code> won&#39;t deal with data that is before the current time window which is <code>2021-05-11T22:18:20.000+08:00</code>, so here are the results:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>&gt; SELECT temperature from root.precalculated_sg.*.* align by device;
+-----------------------------+-------------------------------+-----------+
| Time| Device|temperature|
+-----------------------------+-------------------------------+-----------+
|2021-05-11T22:18:24.949+08:00|root.precalculated_sg.wf02.wt02| 123.0|
|2021-05-11T22:18:29.967+08:00|root.precalculated_sg.wf02.wt02| 48.0|
|2021-05-11T22:18:34.979+08:00|root.precalculated_sg.wf02.wt02| 183.0|
|2021-05-11T22:18:39.990+08:00|root.precalculated_sg.wf02.wt02| 45.0|
|2021-05-11T22:18:44.995+08:00|root.precalculated_sg.wf02.wt02| 79.0|
|2021-05-11T22:18:49.999+08:00|root.precalculated_sg.wf02.wt02| 138.0|
|2021-05-11T22:18:55.003+08:00|root.precalculated_sg.wf02.wt02| 17.0|
|2021-05-11T22:18:24.949+08:00|root.precalculated_sg.wf02.wt01| 46.0|
|2021-05-11T22:18:29.967+08:00|root.precalculated_sg.wf02.wt01| 15.0|
|2021-05-11T22:18:34.979+08:00|root.precalculated_sg.wf02.wt01| 114.0|
|2021-05-11T22:18:39.990+08:00|root.precalculated_sg.wf02.wt01| 12.0|
|2021-05-11T22:18:44.995+08:00|root.precalculated_sg.wf02.wt01| 39.0|
|2021-05-11T22:18:49.999+08:00|root.precalculated_sg.wf02.wt01| 173.0|
|2021-05-11T22:18:55.003+08:00|root.precalculated_sg.wf02.wt01| 125.0|
|2021-05-11T22:18:24.949+08:00|root.precalculated_sg.wf01.wt02| 12.0|
|2021-05-11T22:18:29.967+08:00|root.precalculated_sg.wf01.wt02| 60.0|
|2021-05-11T22:18:34.979+08:00|root.precalculated_sg.wf01.wt02| 30.0|
|2021-05-11T22:18:39.990+08:00|root.precalculated_sg.wf01.wt02| 53.0|
|2021-05-11T22:18:44.995+08:00|root.precalculated_sg.wf01.wt02| 124.0|
|2021-05-11T22:18:49.999+08:00|root.precalculated_sg.wf01.wt02| 136.0|
|2021-05-11T22:18:55.003+08:00|root.precalculated_sg.wf01.wt02| 184.0|
|2021-05-11T22:18:24.949+08:00|root.precalculated_sg.wf01.wt01| 15.0|
|2021-05-11T22:18:29.967+08:00|root.precalculated_sg.wf01.wt01| 182.0|
|2021-05-11T22:18:34.979+08:00|root.precalculated_sg.wf01.wt01| 181.0|
|2021-05-11T22:18:39.990+08:00|root.precalculated_sg.wf01.wt01| 20.0|
|2021-05-11T22:18:44.995+08:00|root.precalculated_sg.wf01.wt01| 53.0|
|2021-05-11T22:18:49.999+08:00|root.precalculated_sg.wf01.wt01| 194.0|
|2021-05-11T22:18:55.003+08:00|root.precalculated_sg.wf01.wt01| 19.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 class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="cq-management" tabindex="-1"><a class="header-anchor" href="#cq-management" aria-hidden="true">#</a> CQ Management</h2><h3 id="listing-continuous-queries" tabindex="-1"><a class="header-anchor" href="#listing-continuous-queries" aria-hidden="true">#</a> Listing continuous queries</h3><p>List every CQ on the IoTDB Cluster with:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">SHOW</span> <span class="token punctuation">(</span>CONTINUOUS QUERIES <span class="token operator">|</span> CQS<span class="token punctuation">)</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><code>SHOW (CONTINUOUS QUERIES | CQS)</code> order results by <code>cq_id</code>.</p><h4 id="examples" tabindex="-1"><a class="header-anchor" href="#examples" aria-hidden="true">#</a> Examples</h4><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">SHOW</span> CONTINUOUS QUERIES<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>we will get:</p><table><thead><tr><th style="text-align:left;">cq_id</th><th>query</th><th>state</th></tr></thead><tbody><tr><td style="text-align:left;">s1_count_cq</td><td>CREATE CQ s1_count_cq<br>BEGIN<br>SELECT count(s1)<br>INTO root.sg_count.d.count_s1<br>FROM root.sg.d<br>GROUP BY(30m)<br>END</td><td>active</td></tr></tbody></table><h3 id="dropping-continuous-queries" tabindex="-1"><a class="header-anchor" href="#dropping-continuous-queries" aria-hidden="true">#</a> Dropping continuous queries</h3><p>Drop a CQ with a specific <code>cq_id</code>:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">DROP</span> <span class="token punctuation">(</span>CONTINUOUS QUERY <span class="token operator">|</span> CQ<span class="token punctuation">)</span> <span class="token operator">&lt;</span>cq_id<span class="token operator">&gt;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>DROP CQ returns an empty result.</p><h4 id="examples-1" tabindex="-1"><a class="header-anchor" href="#examples-1" aria-hidden="true">#</a> Examples</h4><p>Drop the CQ named <code>s1_count_cq</code>:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">DROP</span> CONTINUOUS QUERY s1_count_cq<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="altering-continuous-queries" tabindex="-1"><a class="header-anchor" href="#altering-continuous-queries" aria-hidden="true">#</a> Altering continuous queries</h3><p>CQs can&#39;t be altered once they&#39;re created. To change a CQ, you must <code>DROP</code> and re<code>CREATE</code> it with the updated settings.</p><h2 id="cq-use-cases" tabindex="-1"><a class="header-anchor" href="#cq-use-cases" aria-hidden="true">#</a> CQ Use Cases</h2><h3 id="downsampling-and-data-retention" tabindex="-1"><a class="header-anchor" href="#downsampling-and-data-retention" aria-hidden="true">#</a> Downsampling and Data Retention</h3><p>Use CQs with <code>TTL</code> set on database in IoTDB to mitigate storage concerns. Combine CQs and <code>TTL</code> to automatically downsample high precision data to a lower precision and remove the dispensable, high precision data from the database.</p><h3 id="recalculating-expensive-queries" tabindex="-1"><a class="header-anchor" href="#recalculating-expensive-queries" aria-hidden="true">#</a> Recalculating expensive queries</h3><p>Shorten query runtimes by pre-calculating expensive queries with CQs. Use a CQ to automatically downsample commonly-queried, high precision data to a lower precision. Queries on lower precision data require fewer resources and return faster.</p><blockquote><p>Pre-calculate queries for your preferred graphing tool to accelerate the population of graphs and dashboards.</p></blockquote><h3 id="substituting-for-sub-query" tabindex="-1"><a class="header-anchor" href="#substituting-for-sub-query" aria-hidden="true">#</a> Substituting for sub-query</h3><p>IoTDB does not support sub queries. We can get the same functionality by creating a CQ as a sub query and store its result into other time series and then querying from those time series again will be like doing nested sub query.</p><h4 id="example" tabindex="-1"><a class="header-anchor" href="#example" aria-hidden="true">#</a> Example</h4><p>IoTDB does not accept the following query with a nested sub query. The query calculates the average number of non-null values of <code>s1</code> at 30 minute intervals:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">SELECT</span> <span class="token function">avg</span><span class="token punctuation">(</span>count_s1<span class="token punctuation">)</span> <span class="token keyword">from</span> <span class="token punctuation">(</span><span class="token keyword">select</span> <span class="token function">count</span><span class="token punctuation">(</span>s1<span class="token punctuation">)</span> <span class="token keyword">as</span> count_s1 <span class="token keyword">from</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d <span class="token keyword">group</span> <span class="token keyword">by</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token function">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">30</span>m<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>To get the same results:</p><p><strong>1. Create a CQ</strong></p><p>This step performs the nested sub query in from clause of the query above. The following CQ automatically calculates the number of non-null values of <code>s1</code> at 30 minute intervals and writes those counts into the new <code>root.sg_count.d.count_s1</code> time series.</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">CREATE</span> CQ s1_count_cq
<span class="token keyword">BEGIN</span>
<span class="token keyword">SELECT</span> <span class="token function">count</span><span class="token punctuation">(</span>s1<span class="token punctuation">)</span>
<span class="token keyword">INTO</span> root<span class="token punctuation">.</span>sg_count<span class="token punctuation">.</span>d<span class="token punctuation">(</span>count_s1<span class="token punctuation">)</span>
<span class="token keyword">FROM</span> root<span class="token punctuation">.</span>sg<span class="token punctuation">.</span>d
<span class="token keyword">GROUP</span> <span class="token keyword">BY</span><span class="token punctuation">(</span><span class="token number">30</span>m<span class="token punctuation">)</span>
<span class="token keyword">END</span>
</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></div><p><strong>2. Query the CQ results</strong></p><p>Next step performs the avg([...]) part of the outer query above.</p><p>Query the data in the time series <code>root.sg_count.d.count_s1</code> to calculate the average of it:</p><div class="language-sql line-numbers-mode" data-ext="sql"><pre class="language-sql"><code><span class="token keyword">SELECT</span> <span class="token function">avg</span><span class="token punctuation">(</span>count_s1<span class="token punctuation">)</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>sg_count<span class="token punctuation">.</span>d<span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="system-parameter-configuration" tabindex="-1"><a class="header-anchor" href="#system-parameter-configuration" aria-hidden="true">#</a> System Parameter Configuration</h2><table><thead><tr><th style="text-align:left;">Name</th><th>Description</th><th>Data Type</th><th>Default Value</th></tr></thead><tbody><tr><td style="text-align:left;"><code>continuous_query_submit_thread</code></td><td>The number of threads in the scheduled thread pool that submit continuous query tasks periodically</td><td>int32</td><td>2</td></tr><tr><td style="text-align:left;"><code>continuous_query_min_every_interval_in_ms</code></td><td>The minimum value of the continuous query execution time interval</td><td>duration</td><td>1000</td></tr></tbody></table></div><!----><footer class="page-meta"><div class="meta-item edit-link"><a href="https://github.com/apache/iotdb/edit/rel/1.0/docs/UserGuide/Query-Data/Continuous-Query.md" rel="noopener noreferrer" target="_blank" aria-label="Found Error? Edit this page on GitHub" class="nav-link label"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="edit icon"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></svg><!--]-->Found Error? Edit this page on GitHub<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="meta-item git-info"><!----><!----></div></footer><nav class="page-nav"><a href="/UserGuide/V1.0.x/Query-Data/Select-Into.html" class="nav-link prev" aria-label="Select Into"><div class="hint"><span class="arrow start"></span>Prev</div><div class="link"><!---->Select Into</div></a><!----></nav><!----><!----><!--]--></main><!--]--><footer style="padding-bottom:2rem;"><span id="doc-version" style="display:none;">rel/1.0</span><p style="text-align:center;color:#909399;font-size:12px;margin:0 30px;">Copyright © 2023 The Apache Software Foundation.<br> Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"><strong>Have a question?</strong> Connect with us on QQ, WeChat, or Slack. <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a> now.</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"> We use <a href="https://analytics.google.com">Google Analytics</a> to collect anonymous, aggregated usage information. </p></footer></div><!--]--><!--]--><!----><!--]--></div>
<script type="module" src="/assets/app-f2ec2f8e.js" defer></script>
</body>
</html>