blob: 7248c2f83880414d76ee7db4607e65d447d1dd08 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[385],{956:function(e,t,a){"use strict";a.r(t);var s=a(70),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"连续查询-continuous-query-cq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#连续查询-continuous-query-cq"}},[e._v("#")]),e._v(" 连续查询(Continuous Query, CQ)")]),e._v(" "),a("p",[e._v("我们可以通过 SQL 语句注册、或卸载一个 CQ 实例,以及查询到所有已经注册的 CQ 配置信息。")]),e._v(" "),a("h2",{attrs:{id:"sql-语句"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sql-语句"}},[e._v("#")]),e._v(" SQL 语句")]),e._v(" "),a("h3",{attrs:{id:"创建-cq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建-cq"}},[e._v("#")]),e._v(" 创建 CQ")]),e._v(" "),a("h4",{attrs:{id:"语法"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#语法"}},[e._v("#")]),e._v(" 语法")]),e._v(" "),a("div",{staticClass:"language-sql line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-sql"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("CREATE")]),e._v(" CONTINUOUS QUERY "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("cq_id"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" \n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("RESAMPLE EVERY "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("every_interval"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("FOR")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("for_interval"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v(" \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("BEGIN")]),e._v(" \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("SELECT")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("function")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("path_suffix"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("INTO")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("full_path"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("node_name"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("FROM")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("path_prefix"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("GROUP")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("BY")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("time")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("group_by_interval"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("level")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("level")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v(" \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("END")]),e._v("\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br"),a("span",{staticClass:"line-number"},[e._v("7")]),a("br")])]),a("p",[e._v("其中:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("<cq_id>")]),e._v(" 指定 CQ 全局唯一的 id。")]),e._v(" "),a("li",[a("code",[e._v("<every_interval>")]),e._v(" 指定查询执行时间间隔,支持 ns、us、ms、s、m、h、d、w 等单位,其值不应小于用户所配置的 "),a("code",[e._v("continuous_query_min_every_interval")]),e._v(" 值。可选择指定。")]),e._v(" "),a("li",[a("code",[e._v("<for_interval>")]),e._v(" 指定每次查询的窗口大小,即查询时间范围为"),a("code",[e._v("[now() - <for_interval>, now())")]),e._v(",其中 "),a("code",[e._v("now()")]),e._v(" 指查询时的时间戳。支持 ns、us、ms、s、m、h\n、d、w 等单位。可选择指定。")]),e._v(" "),a("li",[a("code",[e._v("<function>")]),e._v(" 指定聚合函数,目前支持 "),a("code",[e._v("count")]),e._v(", "),a("code",[e._v("sum")]),e._v(", "),a("code",[e._v("avg")]),e._v(", "),a("code",[e._v("last_value")]),e._v(", "),a("code",[e._v("first_value")]),e._v(", "),a("code",[e._v("min_time")]),e._v(", "),a("code",[e._v("max_time")]),e._v(", "),a("code",[e._v("min_value")]),e._v(", "),a("code",[e._v("max_value")]),e._v(" 等。")]),e._v(" "),a("li",[a("code",[e._v("<path_prefix>")]),e._v(" 与 "),a("code",[e._v("<path_suffix>")]),e._v(" 拼接成完整的查询原时间序列。")]),e._v(" "),a("li",[a("code",[e._v("<full_path>")]),e._v(" 或 "),a("code",[e._v("<node_name>")]),e._v(" 指定将查询出的数据写入的结果序列路径。")]),e._v(" "),a("li",[a("code",[e._v("<group_by_interval>")]),e._v(" 指定时间分组长度,支持 ns、us、ms、s、m、h\n、d、w、mo、y 等单位。")]),e._v(" "),a("li",[a("code",[e._v("<level>")]),e._v("指按照序列第 "),a("code",[e._v("<level>")]),e._v(" 层分组,将第 "),a("code",[e._v("<level>")]),e._v(" 层以下的所有序列聚合。Group By Level 语句的具体语义及 "),a("code",[e._v("<level>")]),e._v(" 的定义见 "),a("RouterLink",{attrs:{to:"/zh/UserGuide/Master/IoTDB-SQL-Language/DML-Data-Manipulation-Language.html"}},[e._v("路径层级分组聚合")]),e._v("。")],1)]),e._v(" "),a("p",[e._v("注:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("<for_interval>")]),e._v(","),a("code",[e._v("<every_interval>")]),e._v(" 可选择指定。如果用户没有指定其中的某一项,则未指定项的值按照"),a("code",[e._v("<group_by_interval>")]),e._v(" 处理。\n"),a("ul",[a("li",[a("code",[e._v("<every_interval>")]),e._v(","),a("code",[e._v("<for_interval>")]),e._v(","),a("code",[e._v("<group_by_interval>")]),e._v(" 的值均应大于 0。")]),e._v(" "),a("li",[a("code",[e._v("<group_by_interval>")]),e._v(" 的值应小于"),a("code",[e._v("<for_interval>")]),e._v("的值,否则系统会按照等于"),a("code",[e._v("<for_interval>")]),e._v("的值处理。")]),e._v(" "),a("li",[e._v("用户应当结合实际需求指定合适的 "),a("code",[e._v("<for_interval>")]),e._v(" 与 "),a("code",[e._v("<every_interval>")]),e._v("。\n"),a("ul",[a("li",[e._v("若 "),a("code",[e._v("<for_interval>")]),e._v(" 大于 "),a("code",[e._v("<every_interval>")]),e._v(",每次的查询窗口会有部分数据重叠,从查询性能角度这种配置不被建议。")]),e._v(" "),a("li",[e._v("若 "),a("code",[e._v("<for_interval>")]),e._v(" 小于 "),a("code",[e._v("<every_interval>")]),e._v(",每次的查询窗口之间可能会有未覆盖到的数据。")])])])])]),e._v(" "),a("li",[e._v("对于结果序列路径\n"),a("ul",[a("li",[e._v("用户可以选择指定"),a("code",[e._v("<full_path>")]),e._v(",即以 "),a("code",[e._v("root")]),e._v(" 开头的完整的时间序列路径,用户可以在路径中使用 "),a("code",[e._v("${x}")]),e._v(" 变量来表示原始时间序列中 "),a("code",[e._v("level = x")]),e._v(" 的节点名称,"),a("code",[e._v("x")]),e._v("应当大于等于 1 且小于等于 "),a("code",[e._v("<level>")]),e._v(" 值\n(若未指定 "),a("code",[e._v("level")]),e._v(",则应小于等于 "),a("code",[e._v("<path_prefix>")]),e._v(" 长度)。")]),e._v(" "),a("li",[e._v("用户也可以仅指定"),a("code",[e._v("<node_name>")]),e._v(",即生成时间序列路径的最后一个结点名。\n"),a("ul",[a("li",[e._v("若用户指定 "),a("code",[e._v("<level> = l")]),e._v(",则系统生成的结果时间序列路径为 "),a("code",[e._v("root.${1}. ... .${l}.<node_name>")])]),e._v(" "),a("li",[e._v("若用户未指定 "),a("code",[e._v("<level>")]),e._v(",令原始时间序列最大层数为 "),a("code",[e._v("L")]),e._v(",\n则系统生成的结果时间序列路径为 "),a("code",[e._v("root.${1}. ... .${L - 1}.<node_name>")]),e._v("。")])])])])])]),e._v(" "),a("h4",{attrs:{id:"示例"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#示例"}},[e._v("#")]),e._v(" 示例")]),e._v(" "),a("h5",{attrs:{id:"原始时间序列"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#原始时间序列"}},[e._v("#")]),e._v(" 原始时间序列")]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+-----------------------------+-----+-------------+--------+--------+-----------+----+----------+\n| timeseries|alias|storage group|dataType|encoding|compression|tags|attributes|\n+-----------------------------+-----+-------------+--------+--------+-----------+----+----------+\n|root.ln.wf02.wt02.temperature| null| root.ln| FLOAT| GORILLA| SNAPPY|null| null|\n|root.ln.wf02.wt01.temperature| null| root.ln| FLOAT| GORILLA| SNAPPY|null| null|\n|root.ln.wf01.wt02.temperature| null| root.ln| FLOAT| GORILLA| SNAPPY|null| null|\n|root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| GORILLA| SNAPPY|null| null|\n+-----------------------------+-----+-------------+--------+--------+-----------+----+----------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br"),a("span",{staticClass:"line-number"},[e._v("7")]),a("br"),a("span",{staticClass:"line-number"},[e._v("8")]),a("br")])]),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+\n| Time|root.ln.wf02.wt02.temperature|root.ln.wf02.wt01.temperature|root.ln.wf01.wt02.temperature|root.ln.wf01.wt01.temperature|\n+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+\n|2021-05-11T22:18:14.598+08:00| 121.0| 72.0| 183.0| 115.0|\n|2021-05-11T22:18:19.941+08:00| 0.0| 68.0| 68.0| 103.0|\n|2021-05-11T22:18:24.949+08:00| 122.0| 45.0| 11.0| 14.0|\n|2021-05-11T22:18:29.967+08:00| 47.0| 14.0| 59.0| 181.0|\n|2021-05-11T22:18:34.979+08:00| 182.0| 113.0| 29.0| 180.0|\n|2021-05-11T22:18:39.990+08:00| 42.0| 11.0| 52.0| 19.0|\n|2021-05-11T22:18:44.995+08:00| 78.0| 38.0| 123.0| 52.0|\n|2021-05-11T22:18:49.999+08:00| 137.0| 172.0| 135.0| 193.0|\n|2021-05-11T22:18:55.003+08:00| 16.0| 124.0| 183.0| 18.0|\n+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br"),a("span",{staticClass:"line-number"},[e._v("7")]),a("br"),a("span",{staticClass:"line-number"},[e._v("8")]),a("br"),a("span",{staticClass:"line-number"},[e._v("9")]),a("br"),a("span",{staticClass:"line-number"},[e._v("10")]),a("br"),a("span",{staticClass:"line-number"},[e._v("11")]),a("br"),a("span",{staticClass:"line-number"},[e._v("12")]),a("br"),a("span",{staticClass:"line-number"},[e._v("13")]),a("br")])]),a("h5",{attrs:{id:"结果序列配置举例说明"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#结果序列配置举例说明"}},[e._v("#")]),e._v(" 结果序列配置举例说明")]),e._v(" "),a("p",[e._v("对于以上原始时间序列,若用户指定查询聚合层级为 "),a("code",[e._v("2")]),e._v(",聚合函数为 "),a("code",[e._v("avg")]),e._v(",\n用户可以在 "),a("code",[e._v("INTO")]),e._v(" 语句中仅指定生成序列的最后一个结点名,若用户将其指定为 "),a("code",[e._v("temperature_avg")]),e._v(",则系统生成的完整路径为 "),a("code",[e._v("root.${1}.${2}.temperature_avg")]),e._v("。\n用户也可以在 "),a("code",[e._v("INTO")]),e._v(" 语句中指定完整写入路径,用户可将其指定为 "),a("code",[e._v("root.${1}.${2}.temperature_avg")]),e._v("、"),a("code",[e._v("root.ln_cq.${2}.temperature_avg")]),e._v("、"),a("code",[e._v("root.${1}_cq.${2}.temperature_avg")]),e._v("、"),a("code",[e._v("root.${1}.${2}_cq.temperature_avg")]),e._v("等,\n也可以按需要指定为 "),a("code",[e._v("root.${2}.${1}.temperature_avg")]),e._v(" 等其它形式。\n需要注意的是,"),a("code",[e._v("${x}")]),e._v(" 中的 "),a("code",[e._v("x")]),e._v(" 应当大于等于 "),a("code",[e._v("1")]),e._v(" 且小于等于 "),a("code",[e._v("<level>")]),e._v(" 值\n(若未指定 "),a("code",[e._v("<level>")]),e._v(",则应小于等于 "),a("code",[e._v("<path_prefix>")]),e._v(" 层级)。在上例中,"),a("code",[e._v("x")]),e._v(" 应当小于等于 "),a("code",[e._v("2")]),e._v("。")]),e._v(" "),a("h5",{attrs:{id:"创建-cq1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建-cq1"}},[e._v("#")]),e._v(" 创建 "),a("code",[e._v("cq1")])]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("CREATE CONTINUOUS QUERY cq1 BEGIN SELECT max_value(temperature) INTO temperature_max FROM root.ln.*.* GROUP BY time(10s) END\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br")])]),a("p",[e._v("每隔 10s 查询 "),a("code",[e._v("root.ln.*.*.temperature")]),e._v(" 在前 10s 内的最大值(结果以10s为一组),\n将结果写入到 "),a("code",[e._v("root.${1}.${2}.${3}.temperature_max")]),e._v(" 中,\n结果将产生4条新序列:")]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+---------------------------------+-----+-------------+--------+--------+-----------+----+----------+\n| timeseries|alias|storage group|dataType|encoding|compression|tags|attributes|\n+---------------------------------+-----+-------------+--------+--------+-----------+----+----------+\n|root.ln.wf02.wt02.temperature_max| null| root.ln| FLOAT| GORILLA| SNAPPY|null| null|\n|root.ln.wf02.wt01.temperature_max| null| root.ln| FLOAT| GORILLA| SNAPPY|null| null|\n|root.ln.wf01.wt02.temperature_max| null| root.ln| FLOAT| GORILLA| SNAPPY|null| null|\n|root.ln.wf01.wt01.temperature_max| null| root.ln| FLOAT| GORILLA| SNAPPY|null| null|\n+---------------------------------+-----+-------------+--------+--------+-----------+----+----------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br"),a("span",{staticClass:"line-number"},[e._v("7")]),a("br"),a("span",{staticClass:"line-number"},[e._v("8")]),a("br")])]),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\n| 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|\n+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\n|2021-05-11T22:18:16.964+08:00| 122.0| 68.0| 68.0| 103.0|\n|2021-05-11T22:18:26.964+08:00| 182.0| 113.0| 59.0| 181.0|\n|2021-05-11T22:18:36.964+08:00| 78.0| 38.0| 123.0| 52.0|\n|2021-05-11T22:18:46.964+08:00| 137.0| 172.0| 183.0| 193.0|\n+-----------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br"),a("span",{staticClass:"line-number"},[e._v("7")]),a("br"),a("span",{staticClass:"line-number"},[e._v("8")]),a("br")])]),a("h5",{attrs:{id:"创建-cq2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建-cq2"}},[e._v("#")]),e._v(" 创建 "),a("code",[e._v("cq2")])]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("CREATE CONTINUOUS QUERY cq2 RESAMPLE EVERY 20s FOR 20s BEGIN SELECT avg(temperature) INTO temperature_avg FROM root.ln.*.* GROUP BY time(10s), level=2 END\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br")])]),a("p",[e._v("每隔 20s 查询 "),a("code",[e._v("root.ln.*.*.temperature")]),e._v(" 在前 20s 内的平均值(结果以10s为一组,按照第2层节点分组),\n将结果写入到 "),a("code",[e._v("root.${1}.${2}.temperature_avg")]),e._v(" 中。\n结果将产生如下两条新序列,\n其中 "),a("code",[e._v("root.ln.wf02.temperature_avg")]),e._v(" 由 "),a("code",[e._v("root.ln.wf02.wt02.temperature")]),e._v(" 和 "),a("code",[e._v("root.ln.wf02.wt01.temperature")]),e._v(" 聚合计算生成,\n"),a("code",[e._v("root.ln.wf01.temperature_avg")]),e._v(" 由 "),a("code",[e._v("root.ln.wf01.wt02.temperature")]),e._v(" 和 "),a("code",[e._v("root.ln.wf01.wt01.temperature")]),e._v(" 聚合计算生成。")]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+----------------------------+-----+-------------+--------+--------+-----------+----+----------+\n| timeseries|alias|storage group|dataType|encoding|compression|tags|attributes|\n+----------------------------+-----+-------------+--------+--------+-----------+----+----------+\n|root.ln.wf02.temperature_avg| null| root.ln| DOUBLE| GORILLA| SNAPPY|null| null|\n|root.ln.wf01.temperature_avg| null| root.ln| DOUBLE| GORILLA| SNAPPY|null| null|\n+----------------------------+-----+-------------+--------+--------+-----------+----+----------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br")])]),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+-----------------------------+----------------------------+----------------------------+\n| Time|root.ln.wf02.temperature_avg|root.ln.wf01.temperature_avg|\n+-----------------------------+----------------------------+----------------------------+\n|2021-05-11T22:18:16.969+08:00| 58.75| 49.0|\n|2021-05-11T22:18:26.969+08:00| 89.0| 112.25|\n|2021-05-11T22:18:36.969+08:00| 42.25| 61.5|\n|2021-05-11T22:18:46.969+08:00| 112.25| 132.25|\n+-----------------------------+----------------------------+----------------------------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br"),a("span",{staticClass:"line-number"},[e._v("7")]),a("br"),a("span",{staticClass:"line-number"},[e._v("8")]),a("br")])]),a("h5",{attrs:{id:"创建-cq3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#创建-cq3"}},[e._v("#")]),e._v(" 创建 "),a("code",[e._v("cq3")])]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("CREATE CONTINUOUS QUERY cq3 RESAMPLE EVERY 20s FOR 20s BEGIN SELECT avg(temperature) INTO root.ln_cq.${2}.temperature_avg FROM root.ln.*.* GROUP BY time(10s), level=2 END\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br")])]),a("p",[e._v("查询模式与 cq2 相同,在这个例子中,用户自行指定结果写入到 "),a("code",[e._v("root.ln_cq.${2}.temperature_avg")]),e._v(" 中。\n结果将产生如下两条新序列,\n其中 "),a("code",[e._v("root.ln_cq.wf02.temperature_avg")]),e._v(" 由 "),a("code",[e._v("root.ln.wf02.wt02.temperature")]),e._v(" 和 "),a("code",[e._v("root.ln.wf02.wt01.temperature")]),e._v(" 聚合计算生成,\n"),a("code",[e._v("root.ln_cq.wf01.temperature_avg")]),e._v(" 由 "),a("code",[e._v("root.ln.wf01.wt02.temperature")]),e._v(" 和 "),a("code",[e._v("root.ln.wf01.wt01.temperature")]),e._v(" 聚合计算生成。")]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+-------------------------------+-----+-------------+--------+--------+-----------+----+----------+\n| timeseries|alias|storage group|dataType|encoding|compression|tags|attributes|\n+-------------------------------+-----+-------------+--------+--------+-----------+----+----------+\n|root.ln_cq.wf02.temperature_avg| null| root.ln_cq| DOUBLE| GORILLA| SNAPPY|null| null|\n|root.ln_cq.wf01.temperature_avg| null| root.ln_cq| DOUBLE| GORILLA| SNAPPY|null| null|\n+-------------------------------+-----+-------------+--------+--------+-----------+----+----------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br")])]),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+-----------------------------+-------------------------------+-------------------------------+\n| Time|root.ln_cq.wf02.temperature_avg|root.ln_cq.wf01.temperature_avg|\n+-----------------------------+-------------------------------+-------------------------------+\n|2021-05-11T22:18:16.971+08:00| 58.75| 49.0|\n|2021-05-11T22:18:26.971+08:00| 89.0| 112.25|\n|2021-05-11T22:18:36.971+08:00| 42.25| 61.5|\n|2021-05-11T22:18:46.971+08:00| 112.25| 132.25|\n+-----------------------------+-------------------------------+-------------------------------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br"),a("span",{staticClass:"line-number"},[e._v("7")]),a("br"),a("span",{staticClass:"line-number"},[e._v("8")]),a("br")])]),a("h3",{attrs:{id:"展示-cq-信息"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#展示-cq-信息"}},[e._v("#")]),e._v(" 展示 CQ 信息")]),e._v(" "),a("h4",{attrs:{id:"语法-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#语法-2"}},[e._v("#")]),e._v(" 语法")]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("SHOW CONTINUOUS QUERIES \n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br")])]),a("h4",{attrs:{id:"结果示例"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#结果示例"}},[e._v("#")]),e._v(" 结果示例")]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("+-------+--------------+------------+----------------------------------------------------------------------------------------+-----------------------------------+\n|cq name|every interval|for interval| query sql| target path|\n+-------+--------------+------------+----------------------------------------------------------------------------------------+-----------------------------------+\n| cq1| 10000| 10000| select max_value(temperature) from root.ln.*.* group by ([now() - 10s, now()), 10s)|root.${1}.${2}.${3}.temperature_max|\n| cq3| 20000| 20000|select avg(temperature) from root.ln.*.* group by ([now() - 20s, now()), 10s), level = 2| root.ln_cq.${2}.temperature_avg|\n| cq2| 20000| 20000|select avg(temperature) from root.ln.*.* group by ([now() - 20s, now()), 10s), level = 2| root.${1}.${2}.temperature_avg|\n+-------+--------------+------------+----------------------------------------------------------------------------------------+-----------------------------------+\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br"),a("span",{staticClass:"line-number"},[e._v("2")]),a("br"),a("span",{staticClass:"line-number"},[e._v("3")]),a("br"),a("span",{staticClass:"line-number"},[e._v("4")]),a("br"),a("span",{staticClass:"line-number"},[e._v("5")]),a("br"),a("span",{staticClass:"line-number"},[e._v("6")]),a("br"),a("span",{staticClass:"line-number"},[e._v("7")]),a("br")])]),a("h3",{attrs:{id:"删除-cq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#删除-cq"}},[e._v("#")]),e._v(" 删除 CQ")]),e._v(" "),a("h4",{attrs:{id:"语法-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#语法-3"}},[e._v("#")]),e._v(" 语法")]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("DROP CONTINUOUS QUERY <cq_id> \n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br")])]),a("h4",{attrs:{id:"示例-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#示例-2"}},[e._v("#")]),e._v(" 示例")]),e._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("DROP CONTINUOUS QUERY cq3\n")])]),e._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[e._v("1")]),a("br")])]),a("h2",{attrs:{id:"系统参数配置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#系统参数配置"}},[e._v("#")]),e._v(" 系统参数配置")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"left"}},[e._v("参数名")]),e._v(" "),a("th",[e._v("描述")]),e._v(" "),a("th",[e._v("数据类型")]),e._v(" "),a("th",[e._v("默认值")])])]),e._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("code",[e._v("continuous_query_execution_thread")])]),e._v(" "),a("td",[e._v("执行连续查询任务的线程池的线程数")]),e._v(" "),a("td",[e._v("int")]),e._v(" "),a("td",[e._v("max(1, CPU 核数 / 2)")])]),e._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("code",[e._v("max_pending_continuous_query_tasks")])]),e._v(" "),a("td",[e._v("队列中连续查询最大任务堆积数")]),e._v(" "),a("td",[e._v("int")]),e._v(" "),a("td",[e._v("64")])]),e._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"left"}},[a("code",[e._v("continuous_query_min_every_interval")])]),e._v(" "),a("td",[e._v("连续查询执行时间间隔的最小值")]),e._v(" "),a("td",[e._v("duration")]),e._v(" "),a("td",[e._v("1s")])])])])])}),[],!1,null,null,null);t.default=r.exports}}]);