blob: 311ded7125f6f161ff5c36d34b724a1207c8a417 [file]
<!doctype html>
<html lang="zh-CN" 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-rc.26" />
<meta name="theme" content="VuePress Theme Hope 2.0.0-rc.99" />
<style>
:root {
--vp-c-bg: #fff;
}
[data-theme="dark"] {
--vp-c-bg: #1b1b1f;
}
html,
body {
background: var(--vp-c-bg);
}
</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>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"UDF函数库","image":[""],"dateModified":"2026-04-16T03:02:58.000Z","author":[]}</script><meta property="og:url" content="https://iotdb.apache.org/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:title" content="UDF函数库"><meta property="og:description" content="UDF函数库 基于用户自定义函数能力,IoTDB 提供了一系列关于时序数据处理的函数,包括数据质量、数据画像、异常检测、 频域分析、数据匹配、数据修复、序列发现、机器学习等,能够满足工业领域对时序数据处理的需求。 注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。 1. 安装步骤 请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩..."><meta property="og:type" content="article"><meta property="og:locale" content="zh-CN"><meta property="og:locale:alternate" content="en-US"><meta property="og:updated_time" content="2026-04-16T03:02:58.000Z"><meta property="article:modified_time" content="2026-04-16T03:02:58.000Z"><link rel="alternate" hreflang="en-us" href="https://iotdb.apache.org/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.html"><script async src="https://widget.kapa.ai/kapa-widget.bundle.js" data-website-id="2d37bfdd-8d98-40ba-9223-9d4f81bfb327" data-project-name="Apache IoTDB" data-project-color="#FFFFFF" data-button-z-index="1999" data-button-padding="4px" data-button-border-radius="4px" data-button-image-height="24px" data-button-image-width="20px" data-button-text-color="#9E2878" data-project-logo="https://iotdb.apache.org/img/logo.svg" data-button-position-right="16px" data-button-position-bottom="8px" data-button-height="56px" data-button-width="48px" data-button-text="Ask" data-modal-override-open-selector="#custom-ask-ai-button" data-modal-image-width="150px" data-modal-title="AI Docs" data-modal-title-color="#9E2878" data-deep-thinking-button-active-bg-color="#F6F7F8" data-deep-thinking-button-active-text-color="#9E2878" data-deep-thinking-button-active-hover-text-color="#9E2878" data-modal-disclaimer="这是一个针对 Apache IoTDB 的定制化大型语言模型,能够访问所有[文档](iotdb.apache.org/docs/)、[GitHub 公开问题、PR 和自述文件](github.com/apache/iotdb)。&#10;&#10;
如果您遇到 <Error in verifying browser for feedback submission. Captcha token could not be obtained.> 请确保您能够顺畅访问 Google 服务。" data-user-analytics-fingerprint-enabled="true" data-consent-required="true" data-consent-screen-disclaimer="点击<I agree, let's chat>即表示您同意按照 kapa.ai 的[隐私政策](https://www.kapa.ai/content/privacy-policy)使用 AI 助手。本服务使用 reCAPTCHA,您需要同意 Google 的[隐私政策](https://policies.google.com/privacy)和[服务条款](https://policies.google.com/terms)。继续操作即表示您明确同意 kapa.ai 和 Google 的隐私政策。" data-language="zh"></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"><script type="text/javascript">var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDoNotTrack", true]);
_paq.push(["disableCookies"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '56']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script><title>UDF函数库 | IoTDB Website</title><meta name="description" content="UDF函数库 基于用户自定义函数能力,IoTDB 提供了一系列关于时序数据处理的函数,包括数据质量、数据画像、异常检测、 频域分析、数据匹配、数据修复、序列发现、机器学习等,能够满足工业领域对时序数据处理的需求。 注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。 1. 安装步骤 请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩...">
<link rel="preload" href="/assets/style-JraSdRX4.css" as="style"><link rel="stylesheet" href="/assets/style-JraSdRX4.css">
<link rel="modulepreload" href="/assets/app-pmkzp6TS.js"><link rel="modulepreload" href="/assets/UDF-Libraries_apache.html-CBcMEgmg.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="vp-skip-link sr-only">跳至主要內容</a><!--]--><!--[--><div class="theme-container external-link-icon has-toc" vp-container><!--[--><header id="navbar" class="vp-navbar" vp-navbar><div class="vp-navbar-start"><button type="button" class="vp-toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><a class="route-link vp-brand" href="/zh/" aria-label="带我回家"><img class="vp-nav-logo" src="/logo.png" alt><!----><!----></a><!--]--></div><div class="vp-navbar-center"><!--[--><!--]--></div><div class="vp-navbar-end"><!--[--><!--[--><div id="docsearch-container" style="display:none;"></div><div class="docsearch-placeholder"><button type="button" aria-label="搜索文档" aria-keyshortcuts="Control+k" class="DocSearch DocSearch-Button"><span class="DocSearch-Button-Container"><svg width="20" height="20" viewBox="0 0 24 24" aria-hidden="true" class="DocSearch-Search-Icon"><circle cx="11" cy="11" r="8" stroke="currentColor" fill="none" stroke-width="1.4"></circle><path d="m21 21-4.3-4.3" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">搜索文档</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key DocSearch-Button-Key--ctrl">Ctrl</kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--><div><button id="custom-ask-ai-button"> ✨ Ask AI </button></div><nav class="vp-nav-links"><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="文档"><!--[--><!---->文档<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/UserGuide/latest/QuickStart/QuickStart_apache.html" aria-label="v2.0.x"><!---->v2.0.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/UserGuide/V1.3.x/QuickStart/QuickStart_apache.html" aria-label="v1.3.x"><!---->v1.3.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/UserGuide/V1.2.x/QuickStart/QuickStart.html" aria-label="v1.2.x"><!---->v1.2.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/UserGuide/V0.13.x/QuickStart/QuickStart.html" aria-label="v0.13.x"><!---->v0.13.x<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><a class="auto-link external-link" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177051872" aria-label="系统设计" rel="noopener noreferrer" target="_blank"><!---->系统设计<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/zh/Download/" aria-label="下载"><!---->下载<!----></a></div><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="社区"><!--[--><!---->社区<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/Community/About.html" aria-label="关于社区"><!---->关于社区<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/Community/Development-Guide.html" aria-label="贡献指南"><!---->贡献指南<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/Community/Community-Partners.html" aria-label="社区伙伴"><!---->社区伙伴<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/Community/Feedback.html" aria-label="交流与反馈"><!---->交流与反馈<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/Community/Events-and-Reports.html" aria-label="活动与报告"><!---->活动与报告<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/Community/Committers.html" aria-label="Committers"><!---->Committers<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="ASF"><!--[--><!---->ASF<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/" aria-label="基金会" rel="noopener noreferrer" target="_blank"><!---->基金会<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/licenses/" aria-label="许可证" rel="noopener noreferrer" target="_blank"><!---->许可证<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/security/" aria-label="安全" rel="noopener noreferrer" target="_blank"><!---->安全<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/foundation/sponsorship.html" aria-label="赞助" rel="noopener noreferrer" target="_blank"><!---->赞助<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/foundation/thanks.html" aria-label="致谢" rel="noopener noreferrer" target="_blank"><!---->致谢<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/events/current-event" aria-label="活动" rel="noopener noreferrer" target="_blank"><!---->活动<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://privacy.apache.org/policies/privacy-policy-public.html" aria-label="隐私" rel="noopener noreferrer" target="_blank"><!---->隐私<!----></a></li></ul></button></div></div></nav><div class="vp-nav-item"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="选择语言"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" name="i18n" 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="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.html" aria-label="English"><!---->English<!----></a></li><li class="vp-dropdown-item"><a class="route-link route-link-active auto-link" href="/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.html" aria-label="简体中文"><!---->简体中文<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><button type="button" class="vp-color-mode-switch" id="color-mode-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" name="auto" style="display:none;"><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" name="dark" 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" name="light" style="display:block;"><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="vp-nav-item vp-action"><a class="vp-action-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" name="github" 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 type="button" class="vp-toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span><span class="vp-top"></span><span class="vp-middle"></span><span class="vp-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside id="sidebar" class="vp-sidebar" vp-sidebar><!--[--><p class="vp-sidebar-header iotdb-sidebar-header"><span class="vp-sidebar-title">IoTDB用户手册(V2.0.x)</span></p><div class="sidebar-top-wrapper"><ul class="switch-list"><li class="switch-type switch-active">树模型</li><li class="switch-type">表模型</li></ul><div class="help-icon-wrapper"><div class="help-icon"><span>模型说明</span></div></div></div><!--]--><ul class="vp-sidebar-links"><li><section class="vp-sidebar-group"><p class="vp-sidebar-header"><!----><span class="vp-sidebar-title">IoTDB用户手册(V2.0.x)</span><!----></p><ul class="vp-sidebar-links"></ul></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">关于IoTDB</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">预备知识</span><span class="vp-arrow end"></span></button><!----></section></li><li><a class="route-link auto-link vp-sidebar-link" href="/zh/UserGuide/latest/QuickStart/QuickStart_apache.html" aria-label="快速上手"><!---->快速上手<!----></a></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">安装部署</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">基础功能</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">高级功能</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">AI 能力</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">工具体系</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">应用编程接口</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">生态集成</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable active" type="button"><!----><span class="vp-sidebar-title">SQL手册</span><span class="vp-arrow down"></span></button><ul class="vp-sidebar-links"><li><a class="route-link auto-link vp-sidebar-link" href="/zh/UserGuide/latest/SQL-Manual/QuickStart-Only-Sql_apache.html" aria-label="快速 SQL 体验"><!---->快速 SQL 体验<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/zh/UserGuide/latest/SQL-Manual/Syntax-Rule.html" aria-label="标识符"><!---->标识符<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/zh/UserGuide/latest/SQL-Manual/Keywords.html" aria-label="关键字"><!---->关键字<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/zh/UserGuide/latest/SQL-Manual/SQL-Manual_apache.html" aria-label="SQL手册"><!---->SQL手册<!----></a></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable active" type="button"><!----><span class="vp-sidebar-title">函数与运算符</span><span class="vp-arrow down"></span></button><ul class="vp-sidebar-links"><li><a class="route-link route-link-active auto-link vp-sidebar-link active" href="/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.html" aria-label="UDF函数库"><!---->UDF函数库<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/zh/UserGuide/latest/SQL-Manual/Operator-and-Expression.html" aria-label="函数与运算符"><!---->函数与运算符<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/zh/UserGuide/latest/SQL-Manual/Function-and-Expression.html" aria-label="内置函数与表达式"><!---->内置函数与表达式<!----></a></li></ul></section></li></ul></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">技术内幕</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">附录</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">FAQ</span><span class="vp-arrow end"></span></button><!----></section></li></ul><!----></aside><!--[--><main id="main-content" class="vp-page"><!--[--><!----><!----><nav class="vp-breadcrumb disable"></nav><div class="vp-page-title"><h1><!---->UDF函数库</h1><div class="page-info"><!----><!----><span class="page-date-info" aria-label="写作日期📅" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon calendar-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="calendar icon" name="calendar"><path d="M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"></path></svg><span data-allow-mismatch="text">2023/9/1</span><meta property="datePublished" content="2023-09-01T12:02:30.000Z"></span><!----><span class="page-reading-time-info" aria-label="阅读时间⌛" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon" name="timer"><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>大约 99 分钟</span><meta property="timeRequired" content="PT99M"></span><!----><!----></div><hr></div><!----><div class="" vp-content><!----><div id="markdown-content"><h1 id="udf函数库" tabindex="-1"><a class="header-anchor" href="#udf函数库"><span>UDF函数库</span></a></h1><p>基于用户自定义函数能力,IoTDB 提供了一系列关于时序数据处理的函数,包括数据质量、数据画像、异常检测、 频域分析、数据匹配、数据修复、序列发现、机器学习等,能够满足工业领域对时序数据处理的需求。</p><blockquote><p>注意:当前UDF函数库中的函数仅支持毫秒级的时间戳精度。</p></blockquote><h2 id="_1-安装步骤" tabindex="-1"><a class="header-anchor" href="#_1-安装步骤"><span>1. 安装步骤</span></a></h2><ol><li>请获取与 IoTDB 版本兼容的 UDF 函数库 JAR 包的压缩包。 <table><thead><tr><th>UDF 安装包</th><th>支持的 IoTDB 版本</th><th>下载链接</th></tr></thead><tbody><tr><td>apache-UDF-1.3.3.zip</td><td>V1.3.3及以上</td><td>请联系天谋商务获取</td></tr><tr><td>apache-UDF-1.3.2.zip</td><td>V1.0.0~V1.3.2</td><td>请联系天谋商务获取</td></tr></tbody></table></li><li>将获取的压缩包中的 library-udf.jar 文件放置在 IoTDB 集群所有节点的 <code>/ext/udf</code> 的目录下</li><li>在 IoTDB 的 SQL 命令行终端(CLI)的 SQL 操作界面中,执行下述相应的函数注册语句。</li><li>批量注册:两种注册方式:注册脚本 或 SQL汇总语句</li></ol><ul><li>注册脚本 <ul><li>将压缩包中的注册脚本(<a href="http://register-UDF.sh" target="_blank" rel="noopener noreferrer">register-UDF.sh</a> 或 register-UDF.bat)按需复制到 IoTDB 的 tools 目录下,修改脚本中的参数(默认为host=127.0.0.1,rpcPort=6667,user=root,pass=root);</li><li>启动 IoTDB 服务,运行注册脚本批量注册 UDF</li></ul></li><li>SQL汇总语句 <ul><li>打开压缩包中的SQl文件,复制全部 SQL 语句,在 IoTDB 的 SQL 命令行终端(CLI)的 SQL 操作界面中,执行全部 SQl 语句批量注册 UDF</li></ul></li></ul><h2 id="_2-数据质量" tabindex="-1"><a class="header-anchor" href="#_2-数据质量"><span>2. 数据质量</span></a></h2><h3 id="_2-1-completeness" tabindex="-1"><a class="header-anchor" href="#_2-1-completeness"><span>2.1 Completeness</span></a></h3><h4 id="注册语句" tabindex="-1"><a class="header-anchor" href="#注册语句"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> completeness</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dquality.UDTFCompleteness&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介" tabindex="-1"><a class="header-anchor" href="#函数简介"><span>函数简介</span></a></h4><p>本函数用于计算时间序列的完整性。将输入序列划分为若干个连续且不重叠的窗口,分别计算每一个窗口的完整性,并输出窗口第一个数据点的时间戳和窗口的完整性。</p><p><strong>函数名:</strong> COMPLETENESS</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>window</code>:窗口大小,它是一个大于0的整数或者一个有单位的正数。前者代表每一个窗口包含的数据点数目,最后一个窗口的数据点数目可能会不足;后者代表窗口的时间跨度,目前支持五种单位,分别是&#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。缺省情况下,全部输入数据都属于同一个窗口。</li><li><code>downtime</code>:完整性计算是否考虑停机异常。它的取值为 &#39;true&#39; 或 &#39;false&#39;,默认值为 &#39;true&#39;. 在考虑停机异常时,长时间的数据缺失将被视作停机,不对完整性产生影响。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,其中每一个数据点的值的范围都是 [0,1].</p><p><strong>提示:</strong> 只有当窗口内的数据点数目超过10时,才会进行完整性计算。否则,该窗口将被忽略,不做任何输出。</p><h4 id="使用示例" tabindex="-1"><a class="header-anchor" href="#使用示例"><span>使用示例</span></a></h4><h5 id="参数缺省" tabindex="-1"><a class="header-anchor" href="#参数缺省"><span>参数缺省</span></a></h5><p>在参数缺省的情况下,本函数将会把全部输入数据都作为同一个窗口计算完整性。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> completeness(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">30</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------------------+</span></span>
<span class="line"><span>| Time|completeness(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.875|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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><h5 id="指定窗口大小" tabindex="-1"><a class="header-anchor" href="#指定窗口大小"><span>指定窗口大小</span></a></h5><p>在指定窗口大小的情况下,本函数会把输入数据划分为若干个窗口计算完整性。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:32.000+08:00| 130.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:34.000+08:00| 132.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:36.000+08:00| 134.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:38.000+08:00| 136.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:40.000+08:00| 138.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:42.000+08:00| 140.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:44.000+08:00| 142.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:46.000+08:00| 144.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:48.000+08:00| 146.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:50.000+08:00| 148.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:52.000+08:00| 150.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:54.000+08:00| 152.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:56.000+08:00| 154.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:58.000+08:00| 156.0|</span></span>
<span class="line"><span>|2020-01-01T00:01:00.000+08:00| 158.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> completeness(s1,</span><span style="color:#98C379;">&quot;window&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;15&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------------------+</span></span>
<span class="line"><span>| Time|completeness(root.test.d1.s1, &quot;window&quot;=&quot;15&quot;)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.875|</span></span>
<span class="line"><span>|2020-01-01T00:00:32.000+08:00| 1.0|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="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="_2-2-consistency" tabindex="-1"><a class="header-anchor" href="#_2-2-consistency"><span>2.2 Consistency</span></a></h3><h4 id="注册语句-1" tabindex="-1"><a class="header-anchor" href="#注册语句-1"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> consistency</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dquality.UDTFConsistency&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-1" tabindex="-1"><a class="header-anchor" href="#函数简介-1"><span>函数简介</span></a></h4><p>本函数用于计算时间序列的一致性。将输入序列划分为若干个连续且不重叠的窗口,分别计算每一个窗口的一致性,并输出窗口第一个数据点的时间戳和窗口的时效性。</p><p><strong>函数名:</strong> CONSISTENCY</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>window</code>:窗口大小,它是一个大于0的整数或者一个有单位的正数。前者代表每一个窗口包含的数据点数目,最后一个窗口的数据点数目可能会不足;后者代表窗口的时间跨度,目前支持五种单位,分别是 &#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。缺省情况下,全部输入数据都属于同一个窗口。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,其中每一个数据点的值的范围都是 [0,1].</p><p><strong>提示:</strong> 只有当窗口内的数据点数目超过10时,才会进行一致性计算。否则,该窗口将被忽略,不做任何输出。</p><h4 id="使用示例-1" tabindex="-1"><a class="header-anchor" href="#使用示例-1"><span>使用示例</span></a></h4><h5 id="参数缺省-1" tabindex="-1"><a class="header-anchor" href="#参数缺省-1"><span>参数缺省</span></a></h5><p>在参数缺省的情况下,本函数将会把全部输入数据都作为同一个窗口计算一致性。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> consistency(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">30</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------------+</span></span>
<span class="line"><span>| Time|consistency(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+----------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.9333333333333333|</span></span>
<span class="line"><span>+-----------------------------+----------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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><h5 id="指定窗口大小-1" tabindex="-1"><a class="header-anchor" href="#指定窗口大小-1"><span>指定窗口大小</span></a></h5><p>在指定窗口大小的情况下,本函数会把输入数据划分为若干个窗口计算一致性。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:32.000+08:00| 130.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:34.000+08:00| 132.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:36.000+08:00| 134.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:38.000+08:00| 136.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:40.000+08:00| 138.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:42.000+08:00| 140.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:44.000+08:00| 142.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:46.000+08:00| 144.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:48.000+08:00| 146.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:50.000+08:00| 148.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:52.000+08:00| 150.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:54.000+08:00| 152.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:56.000+08:00| 154.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:58.000+08:00| 156.0|</span></span>
<span class="line"><span>|2020-01-01T00:01:00.000+08:00| 158.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> consistency(s1,</span><span style="color:#98C379;">&quot;window&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;15&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------------------------+</span></span>
<span class="line"><span>| Time|consistency(root.test.d1.s1, &quot;window&quot;=&quot;15&quot;)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.9333333333333333|</span></span>
<span class="line"><span>|2020-01-01T00:00:32.000+08:00| 1.0|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="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="_2-3-timeliness" tabindex="-1"><a class="header-anchor" href="#_2-3-timeliness"><span>2.3 Timeliness</span></a></h3><h4 id="注册语句-2" tabindex="-1"><a class="header-anchor" href="#注册语句-2"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> timeliness</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dquality.UDTFTimeliness&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-2" tabindex="-1"><a class="header-anchor" href="#函数简介-2"><span>函数简介</span></a></h4><p>本函数用于计算时间序列的时效性。将输入序列划分为若干个连续且不重叠的窗口,分别计算每一个窗口的时效性,并输出窗口第一个数据点的时间戳和窗口的时效性。</p><p><strong>函数名:</strong> TIMELINESS</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>window</code>:窗口大小,它是一个大于0的整数或者一个有单位的正数。前者代表每一个窗口包含的数据点数目,最后一个窗口的数据点数目可能会不足;后者代表窗口的时间跨度,目前支持五种单位,分别是 &#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。缺省情况下,全部输入数据都属于同一个窗口。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,其中每一个数据点的值的范围都是 [0,1].</p><p><strong>提示:</strong> 只有当窗口内的数据点数目超过10时,才会进行时效性计算。否则,该窗口将被忽略,不做任何输出。</p><h4 id="使用示例-2" tabindex="-1"><a class="header-anchor" href="#使用示例-2"><span>使用示例</span></a></h4><h5 id="参数缺省-2" tabindex="-1"><a class="header-anchor" href="#参数缺省-2"><span>参数缺省</span></a></h5><p>在参数缺省的情况下,本函数将会把全部输入数据都作为同一个窗口计算时效性。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> timeliness(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">30</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------------------+</span></span>
<span class="line"><span>| Time|timeliness(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+---------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.9333333333333333|</span></span>
<span class="line"><span>+-----------------------------+---------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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><h5 id="指定窗口大小-2" tabindex="-1"><a class="header-anchor" href="#指定窗口大小-2"><span>指定窗口大小</span></a></h5><p>在指定窗口大小的情况下,本函数会把输入数据划分为若干个窗口计算时效性。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:32.000+08:00| 130.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:34.000+08:00| 132.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:36.000+08:00| 134.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:38.000+08:00| 136.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:40.000+08:00| 138.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:42.000+08:00| 140.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:44.000+08:00| 142.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:46.000+08:00| 144.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:48.000+08:00| 146.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:50.000+08:00| 148.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:52.000+08:00| 150.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:54.000+08:00| 152.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:56.000+08:00| 154.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:58.000+08:00| 156.0|</span></span>
<span class="line"><span>|2020-01-01T00:01:00.000+08:00| 158.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> timeliness(s1,</span><span style="color:#98C379;">&quot;window&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;15&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------+</span></span>
<span class="line"><span>| Time|timeliness(root.test.d1.s1, &quot;window&quot;=&quot;15&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.9333333333333333|</span></span>
<span class="line"><span>|2020-01-01T00:00:32.000+08:00| 1.0|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="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="_2-4-validity" tabindex="-1"><a class="header-anchor" href="#_2-4-validity"><span>2.4 Validity</span></a></h3><h4 id="注册语句-3" tabindex="-1"><a class="header-anchor" href="#注册语句-3"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> validity</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dquality.UDTFValidity&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-3" tabindex="-1"><a class="header-anchor" href="#函数简介-3"><span>函数简介</span></a></h4><p>本函数用于计算时间序列的有效性。将输入序列划分为若干个连续且不重叠的窗口,分别计算每一个窗口的有效性,并输出窗口第一个数据点的时间戳和窗口的有效性。</p><p><strong>函数名:</strong> VALIDITY</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>window</code>:窗口大小,它是一个大于0的整数或者一个有单位的正数。前者代表每一个窗口包含的数据点数目,最后一个窗口的数据点数目可能会不足;后者代表窗口的时间跨度,目前支持五种单位,分别是 &#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。缺省情况下,全部输入数据都属于同一个窗口。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,其中每一个数据点的值的范围都是 [0,1].</p><p><strong>提示:</strong> 只有当窗口内的数据点数目超过10时,才会进行有效性计算。否则,该窗口将被忽略,不做任何输出。</p><h4 id="使用示例-3" tabindex="-1"><a class="header-anchor" href="#使用示例-3"><span>使用示例</span></a></h4><h5 id="参数缺省-3" tabindex="-1"><a class="header-anchor" href="#参数缺省-3"><span>参数缺省</span></a></h5><p>在参数缺省的情况下,本函数将会把全部输入数据都作为同一个窗口计算有效性。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> validity(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">30</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------+</span></span>
<span class="line"><span>| Time|validity(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.8833333333333333|</span></span>
<span class="line"><span>+-----------------------------+-------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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><h5 id="指定窗口大小-3" tabindex="-1"><a class="header-anchor" href="#指定窗口大小-3"><span>指定窗口大小</span></a></h5><p>在指定窗口大小的情况下,本函数会把输入数据划分为若干个窗口计算有效性。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:32.000+08:00| 130.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:34.000+08:00| 132.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:36.000+08:00| 134.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:38.000+08:00| 136.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:40.000+08:00| 138.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:42.000+08:00| 140.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:44.000+08:00| 142.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:46.000+08:00| 144.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:48.000+08:00| 146.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:50.000+08:00| 148.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:52.000+08:00| 150.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:54.000+08:00| 152.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:56.000+08:00| 154.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:58.000+08:00| 156.0|</span></span>
<span class="line"><span>|2020-01-01T00:01:00.000+08:00| 158.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> validity(s1,</span><span style="color:#98C379;">&quot;window&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;15&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------------------------+</span></span>
<span class="line"><span>| Time|validity(root.test.d1.s1, &quot;window&quot;=&quot;15&quot;)|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.8833333333333333|</span></span>
<span class="line"><span>|2020-01-01T00:00:32.000+08:00| 1.0|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="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="_3-数据画像" tabindex="-1"><a class="header-anchor" href="#_3-数据画像"><span>3. 数据画像</span></a></h2><h3 id="_3-1-acf" tabindex="-1"><a class="header-anchor" href="#_3-1-acf"><span>3.1 ACF</span></a></h3><h4 id="注册语句-4" tabindex="-1"><a class="header-anchor" href="#注册语句-4"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> acf</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFACF&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-4" tabindex="-1"><a class="header-anchor" href="#函数简介-4"><span>函数简介</span></a></h4><p>本函数用于计算时间序列的自相关函数值,即序列与自身之间的互相关函数。</p><p><strong>函数名:</strong> ACF</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。序列中共包含<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mi>N</mi><mo></mo><mn>1</mn></mrow><annotation encoding="application/x-tex">2N-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7667em;vertical-align:-0.0833em;"></span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>个数据点。</p><p><strong>提示:</strong></p><ul><li>序列中的<code>NaN</code>值会被忽略,在计算中表现为0。</li></ul><h4 id="使用示例-4" tabindex="-1"><a class="header-anchor" href="#使用示例-4"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 1|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 3|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 5|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> acf(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">05</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>| Time|acf(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 5.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 6.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.006+08:00| 3.6|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.007+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.008+08:00| 1.0|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-2-distinct" tabindex="-1"><a class="header-anchor" href="#_3-2-distinct"><span>3.2 Distinct</span></a></h3><h4 id="注册语句-5" tabindex="-1"><a class="header-anchor" href="#注册语句-5"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> distinct</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFDistinct&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-5" tabindex="-1"><a class="header-anchor" href="#函数简介-5"><span>函数简介</span></a></h4><p>本函数可以返回输入序列中出现的所有不同的元素。</p><p><strong>函数名:</strong> DISTINCT</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型可以是任意的</p><p><strong>输出序列:</strong> 输出单个序列,类型与输入相同。</p><p><strong>提示:</strong></p><ul><li>输出序列的时间戳是无意义的。输出顺序是任意的。</li><li>缺失值和空值将被忽略,但<code>NaN</code>不会被忽略。</li><li>字符串区分大小写</li></ul><h4 id="使用示例-5" tabindex="-1"><a class="header-anchor" href="#使用示例-5"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T08:00:00.001+08:00| Hello|</span></span>
<span class="line"><span>|2020-01-01T08:00:00.002+08:00| hello|</span></span>
<span class="line"><span>|2020-01-01T08:00:00.003+08:00| Hello|</span></span>
<span class="line"><span>|2020-01-01T08:00:00.004+08:00| World|</span></span>
<span class="line"><span>|2020-01-01T08:00:00.005+08:00| World|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select distinct</span><span style="color:#ABB2BF;">(s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------+</span></span>
<span class="line"><span>| Time|distinct(root.test.d2.s2)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| Hello|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| hello|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| World|</span></span>
<span class="line"><span>+-----------------------------+-------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="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="_3-3-histogram" tabindex="-1"><a class="header-anchor" href="#_3-3-histogram"><span>3.3 Histogram</span></a></h3><h4 id="注册语句-6" tabindex="-1"><a class="header-anchor" href="#注册语句-6"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> histogram</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFHistogram&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-6" tabindex="-1"><a class="header-anchor" href="#函数简介-6"><span>函数简介</span></a></h4><p>本函数用于计算单列数值型数据的分布直方图。</p><p><strong>函数名:</strong> HISTOGRAM</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>min</code>:表示所求数据范围的下限,默认值为 -Double.MAX_VALUE。</li><li><code>max</code>:表示所求数据范围的上限,默认值为 Double.MAX_VALUE,<code>start</code>的值必须小于或等于<code>end</code></li><li><code>count</code>: 表示直方图分桶的数量,默认值为 1,其值必须为正整数。</li></ul><p><strong>输出序列:</strong> 直方图分桶的值,其中第 i 个桶(从 1 开始计数)表示的数据范围下界为<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mi>i</mi><mi>n</mi><mo>+</mo><mo stretchy="false">(</mo><mi>i</mi><mo></mo><mn>1</mn><mo stretchy="false">)</mo><mo></mo><mfrac><mrow><mi>m</mi><mi>a</mi><mi>x</mi><mo></mo><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mrow><mi>c</mi><mi>o</mi><mi>u</mi><mi>n</mi><mi>t</mi></mrow></mfrac></mrow><annotation encoding="application/x-tex">min+ (i-1)\cdot\frac{max-min}{count}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7429em;vertical-align:-0.0833em;"></span><span class="mord mathnormal">min</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1.2007em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8557em;"><span style="top:-2.655em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">co</span><span class="mord mathnormal mtight">u</span><span class="mord mathnormal mtight">n</span><span class="mord mathnormal mtight">t</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span><span class="mbin mtight"></span><span class="mord mathnormal mtight">min</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>,数据范围上界为<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mi>i</mi><mi>n</mi><mo>+</mo><mi>i</mi><mo></mo><mfrac><mrow><mi>m</mi><mi>a</mi><mi>x</mi><mo></mo><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mrow><mi>c</mi><mi>o</mi><mi>u</mi><mi>n</mi><mi>t</mi></mrow></mfrac></mrow><annotation encoding="application/x-tex">min+ i \cdot \frac{max-min}{count}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7429em;vertical-align:-0.0833em;"></span><span class="mord mathnormal">min</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6595em;"></span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1.2007em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8557em;"><span style="top:-2.655em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">co</span><span class="mord mathnormal mtight">u</span><span class="mord mathnormal mtight">n</span><span class="mord mathnormal mtight">t</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">ma</span><span class="mord mathnormal mtight">x</span><span class="mbin mtight"></span><span class="mord mathnormal mtight">min</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></p><p><strong>提示:</strong></p><ul><li>如果某个数据点的数值小于<code>min</code>,它会被放入第 1 个桶;如果某个数据点的数值大于<code>max</code>,它会被放入最后 1 个桶。</li><li>数据中的空值、缺失值和<code>NaN</code>将会被忽略。</li></ul><h4 id="使用示例-6" tabindex="-1"><a class="header-anchor" href="#使用示例-6"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:00.000+08:00| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 2.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 3.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 4.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 5.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 6.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 7.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:07.000+08:00| 8.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 9.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:09.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 11.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:11.000+08:00| 12.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:12.000+08:00| 13.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:13.000+08:00| 14.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 15.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 16.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 17.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:17.000+08:00| 18.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 19.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:19.000+08:00| 20.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#C678DD;"> histogram</span><span style="color:#ABB2BF;">(s1,</span><span style="color:#98C379;">&quot;min&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1&quot;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&quot;max&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;20&quot;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&quot;count&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;10&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------------------------------------------------------+</span></span>
<span class="line"><span>| Time|histogram(root.test.d1.s1, &quot;min&quot;=&quot;1&quot;, &quot;max&quot;=&quot;20&quot;, &quot;count&quot;=&quot;10&quot;)|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.006+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.007+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.008+08:00| 2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.009+08:00| 2|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-4-integral" tabindex="-1"><a class="header-anchor" href="#_3-4-integral"><span>3.4 Integral</span></a></h3><h4 id="注册语句-7" tabindex="-1"><a class="header-anchor" href="#注册语句-7"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> integral</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFIntegral&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-7" tabindex="-1"><a class="header-anchor" href="#函数简介-7"><span>函数简介</span></a></h4><p>本函数用于计算时间序列的数值积分,即以时间为横坐标、数值为纵坐标绘制的折线图中折线以下的面积。</p><p><strong>函数名:</strong> INTEGRAL</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>unit</code>:积分求解所用的时间轴单位,取值为 &quot;1S&quot;, &quot;1s&quot;, &quot;1m&quot;, &quot;1H&quot;, &quot;1d&quot;(区分大小写),分别表示以毫秒、秒、分钟、小时、天为单位计算积分。<br> 缺省情况下取 &quot;1s&quot;,以秒为单位。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE,序列仅包含一个时间戳为 0、值为积分结果的数据点。</p><p><strong>提示:</strong></p><ul><li>积分值等于折线图中每相邻两个数据点和时间轴形成的直角梯形的面积之和,不同时间单位下相当于横轴进行不同倍数放缩,得到的积分值可直接按放缩倍数转换。</li><li>数据中<code>NaN</code>将会被忽略。折线将以临近两个有值数据点为准。</li></ul><h4 id="使用示例-7" tabindex="-1"><a class="header-anchor" href="#使用示例-7"><span>使用示例</span></a></h4><h5 id="参数缺省-4" tabindex="-1"><a class="header-anchor" href="#参数缺省-4"><span>参数缺省</span></a></h5><p>缺省情况下积分以1s为时间单位。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 1|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 2|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 5|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 6|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 7|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 8|</span></span>
<span class="line"><span>|2020-01-01T00:00:09.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 10|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> integral(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">10</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------+</span></span>
<span class="line"><span>| Time|integral(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 57.5|</span></span>
<span class="line"><span>+-----------------------------+-------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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>其计算公式为:</p><p class="katex-block"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><mn>2</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>2</mn><mo>+</mo><mn>5</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>5</mn><mo>+</mo><mn>6</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>6</mn><mo>+</mo><mn>7</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>7</mn><mo>+</mo><mn>8</mn><mo stretchy="false">)</mo><mo>×</mo><mn>3</mn><mo>+</mo><mo stretchy="false">(</mo><mn>8</mn><mo>+</mo><mn>10</mn><mo stretchy="false">)</mo><mo>×</mo><mn>2</mn><mo stretchy="false">]</mo><mo>=</mo><mn>57.5</mn></mrow><annotation encoding="application/x-tex">\frac{1}{2}\[(1+2)\times 1 + (2+5) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] = 57.5 </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.0074em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">5</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">6</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">6</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">7</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">7</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">8</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">3</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">8</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">10</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mclose">]</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">57.5</span></span></span></span></span></p><h5 id="指定时间单位" tabindex="-1"><a class="header-anchor" href="#指定时间单位"><span>指定时间单位</span></a></h5><p>指定以分钟为时间单位。</p><p>输入序列同上,用于查询的 SQL 语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> integral(s1, </span><span style="color:#98C379;">&quot;unit&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1m&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">10</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------+</span></span>
<span class="line"><span>| Time|integral(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.958|</span></span>
<span class="line"><span>+-----------------------------+-------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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>其计算公式为:</p><p class="katex-block"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mfrac><mn>1</mn><mrow><mn>2</mn><mo>×</mo><mn>60</mn></mrow></mfrac><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><mn>2</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>2</mn><mo>+</mo><mn>3</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>5</mn><mo>+</mo><mn>6</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>6</mn><mo>+</mo><mn>7</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>7</mn><mo>+</mo><mn>8</mn><mo stretchy="false">)</mo><mo>×</mo><mn>3</mn><mo>+</mo><mo stretchy="false">(</mo><mn>8</mn><mo>+</mo><mn>10</mn><mo stretchy="false">)</mo><mo>×</mo><mn>2</mn><mo stretchy="false">]</mo><mo>=</mo><mn>0.958</mn></mrow><annotation encoding="application/x-tex">\frac{1}{2\times 60}\[(1+2) \times 1 + (2+3) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] = 0.958 </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.0908em;vertical-align:-0.7693em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">60</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.7693em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">3</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">6</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">6</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">7</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">7</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">8</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">3</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">8</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">10</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mclose">]</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">0.958</span></span></span></span></span></p><h3 id="_3-5-integralavg" tabindex="-1"><a class="header-anchor" href="#_3-5-integralavg"><span>3.5 IntegralAvg</span></a></h3><h4 id="注册语句-8" tabindex="-1"><a class="header-anchor" href="#注册语句-8"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> integralavg</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFIntegralAvg&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-8" tabindex="-1"><a class="header-anchor" href="#函数简介-8"><span>函数简介</span></a></h4><p>本函数用于计算时间序列的函数均值,即在相同时间单位下的数值积分除以序列总的时间跨度。更多关于数值积分计算的信息请参考<code>Integral</code>函数。</p><p><strong>函数名:</strong> INTEGRALAVG</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE,序列仅包含一个时间戳为 0、值为时间加权平均结果的数据点。</p><p><strong>提示:</strong></p><ul><li>时间加权的平均值等于在任意时间单位<code>unit</code>下计算的数值积分(即折线图中每相邻两个数据点和时间轴形成的直角梯形的面积之和),<br> 除以相同时间单位下输入序列的时间跨度,其值与具体采用的时间单位无关,默认与 IoTDB 时间单位一致。</li><li>数据中的<code>NaN</code>将会被忽略。折线将以临近两个有值数据点为准。</li><li>输入序列为空时,函数输出结果为 0;仅有一个数据点时,输出结果为该点数值。</li></ul><h4 id="使用示例-8" tabindex="-1"><a class="header-anchor" href="#使用示例-8"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 1|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 2|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 5|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 6|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 7|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 8|</span></span>
<span class="line"><span>|2020-01-01T00:00:09.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 10|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> integralavg(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">10</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------------+</span></span>
<span class="line"><span>| Time|integralavg(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+----------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 6.388888888888889|</span></span>
<span class="line"><span>+-----------------------------+----------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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>其计算公式为:</p><p class="katex-block"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><mn>2</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>2</mn><mo>+</mo><mn>5</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>5</mn><mo>+</mo><mn>6</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>6</mn><mo>+</mo><mn>7</mn><mo stretchy="false">)</mo><mo>×</mo><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mn>7</mn><mo>+</mo><mn>8</mn><mo stretchy="false">)</mo><mo>×</mo><mn>3</mn><mo>+</mo><mo stretchy="false">(</mo><mn>8</mn><mo>+</mo><mn>10</mn><mo stretchy="false">)</mo><mo>×</mo><mn>2</mn><mo stretchy="false">]</mo><mi mathvariant="normal">/</mi><mn>10</mn><mo>=</mo><mn>5.75</mn></mrow><annotation encoding="application/x-tex">\frac{1}{2}\[(1+2)\times 1 + (2+5) \times 1 + (5+6) \times 1 + (6+7) \times 1 + (7+8) \times 3 + (8+10) \times 2] / 10 = 5.75 </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.0074em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">5</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">6</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">6</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">7</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">7</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">8</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">3</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">8</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">10</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mclose">]</span><span class="mord">/10</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">5.75</span></span></span></span></span></p><h3 id="_3-6-mad" tabindex="-1"><a class="header-anchor" href="#_3-6-mad"><span>3.6 Mad</span></a></h3><h4 id="注册语句-9" tabindex="-1"><a class="header-anchor" href="#注册语句-9"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> mad</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFMad&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-9" tabindex="-1"><a class="header-anchor" href="#函数简介-9"><span>函数简介</span></a></h4><p>本函数用于计算单列数值型数据的精确或近似绝对中位差,绝对中位差为所有数值与其中位数绝对偏移量的中位数。</p><p>如有数据集<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo separator="true">,</mo><mn>3</mn><mo separator="true">,</mo><mn>3</mn><mo separator="true">,</mo><mn>5</mn><mo separator="true">,</mo><mn>5</mn><mo separator="true">,</mo><mn>6</mn><mo separator="true">,</mo><mn>7</mn><mo separator="true">,</mo><mn>8</mn><mo separator="true">,</mo><mn>9</mn></mrow><annotation encoding="application/x-tex">{1,3,3,5,5,6,7,8,9}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8389em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">3</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">3</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">5</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">5</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">6</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">7</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">8</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">9</span></span></span></span></span>,其中位数为5,所有数值与中位数的偏移量的绝对值为<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo separator="true">,</mo><mn>0</mn><mo separator="true">,</mo><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mn>3</mn><mo separator="true">,</mo><mn>4</mn><mo separator="true">,</mo><mn>4</mn></mrow><annotation encoding="application/x-tex">{0,0,1,2,2,2,3,4,4}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8389em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">3</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">4</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">4</span></span></span></span></span>,其中位数为2,故而原数据集的绝对中位差为2。</p><p><strong>函数名:</strong> MAD</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>error</code>:近似绝对中位差的基于数值的误差百分比,取值范围为 [0,1),默认值为 0。如当<code>error</code>=0.01 时,记精确绝对中位差为a,近似绝对中位差为b,不等式 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0.99</mn><mi>a</mi><mo></mo><mi>b</mi><mo></mo><mn>1.01</mn><mi>a</mi></mrow><annotation encoding="application/x-tex">0.99a \le b \le 1.01a</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7804em;vertical-align:-0.136em;"></span><span class="mord">0.99</span><span class="mord mathnormal">a</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel"></span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.8304em;vertical-align:-0.136em;"></span><span class="mord mathnormal">b</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel"></span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1.01</span><span class="mord mathnormal">a</span></span></span></span> 成立。当<code>error</code>=0 时,计算结果为精确绝对中位差。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,序列仅包含一个时间戳为 0、值为绝对中位差的数据点。</p><p><strong>提示:</strong> 数据中的空值、缺失值和<code>NaN</code>将会被忽略。</p><h4 id="使用示例-9" tabindex="-1"><a class="header-anchor" href="#使用示例-9"><span>使用示例</span></a></h4><h5 id="近似查询" tabindex="-1"><a class="header-anchor" href="#近似查询"><span>近似查询</span></a></h5><p><code>error</code>参数取值不为 0 时,本函数计算近似绝对中位差。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>............</span></span>
<span class="line"><span>Total line number = 20</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> mad(s1, </span><span style="color:#98C379;">&quot;error&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.01&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------------------------+</span></span>
<span class="line"><span>| Time|mad(root.test.s1, &quot;error&quot;=&quot;0.01&quot;)|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.9900000000000001|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_3-7-median" tabindex="-1"><a class="header-anchor" href="#_3-7-median"><span>3.7 Median</span></a></h3><h4 id="注册语句-10" tabindex="-1"><a class="header-anchor" href="#注册语句-10"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> median</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFMedian&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-10" tabindex="-1"><a class="header-anchor" href="#函数简介-10"><span>函数简介</span></a></h4><p>本函数用于计算单列数值型数据的精确或近似中位数。中位数是顺序排列的一组数据中居于中间位置的数;当序列有偶数个时,中位数为中间二者的平均数。</p><p><strong>函数名:</strong> MEDIAN</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>error</code>:近似中位数的基于排名的误差百分比,取值范围 [0,1),默认值为 0。如当<code>error</code>=0.01 时,计算出的中位数的真实排名百分比在 0.49~0.51 之间。当<code>error</code>=0 时,计算结果为精确中位数。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE,序列仅包含一个时间戳为 0、值为中位数的数据点。</p><h4 id="使用示例-10" tabindex="-1"><a class="header-anchor" href="#使用示例-10"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>Total line number = 20</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> median(s1, </span><span style="color:#98C379;">&quot;error&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.01&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------+</span></span>
<span class="line"><span>| Time|median(root.test.s1, &quot;error&quot;=&quot;0.01&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_3-8-minmax" tabindex="-1"><a class="header-anchor" href="#_3-8-minmax"><span>3.8 MinMax</span></a></h3><h4 id="注册语句-11" tabindex="-1"><a class="header-anchor" href="#注册语句-11"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> minmax</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFMinMax&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-11" tabindex="-1"><a class="header-anchor" href="#函数简介-11"><span>函数简介</span></a></h4><p>本函数将输入序列使用 min-max 方法进行标准化。最小值归一至 0,最大值归一至 1.</p><p><strong>函数名:</strong> MINMAX</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>compute</code>:若设置为&quot;batch&quot;,则将数据全部读入后转换;若设置为 &quot;stream&quot;,则需用户提供最大值及最小值进行流式计算转换。默认为 &quot;batch&quot;。</li><li><code>min</code>:使用流式计算时的最小值。</li><li><code>max</code>:使用流式计算时的最大值。</li></ul><p><strong>输出序列</strong>:输出单个序列,类型为 DOUBLE。</p><h4 id="使用示例-11" tabindex="-1"><a class="header-anchor" href="#使用示例-11"><span>使用示例</span></a></h4><h5 id="全数据计算" tabindex="-1"><a class="header-anchor" href="#全数据计算"><span>全数据计算</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> minmax(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>| Time|minmax(root.test.s1)|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 0.25|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 0.08333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 0.25|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 0.08333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| 0.08333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 0.25|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 0.16666666666666666|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-9-mvavg" tabindex="-1"><a class="header-anchor" href="#_3-9-mvavg"><span>3.9 MvAvg</span></a></h3><h4 id="注册语句-12" tabindex="-1"><a class="header-anchor" href="#注册语句-12"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> mvavg</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFMvAvg&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-12" tabindex="-1"><a class="header-anchor" href="#函数简介-12"><span>函数简介</span></a></h4><p>本函数计算序列的移动平均。</p><p><strong>函数名:</strong> MVAVG</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>window</code>:移动窗口的长度。默认值为 10.</li></ul><p><strong>输出序列</strong>:输出单个序列,类型为 DOUBLE。</p><h4 id="使用示例-12" tabindex="-1"><a class="header-anchor" href="#使用示例-12"><span>使用示例</span></a></h4><h5 id="指定窗口长度" tabindex="-1"><a class="header-anchor" href="#指定窗口长度"><span>指定窗口长度</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> mvavg(s1, </span><span style="color:#98C379;">&quot;window&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;3&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------------------------+</span></span>
<span class="line"><span>| Time|mvavg(root.test.s1, &quot;window&quot;=&quot;3&quot;)|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| -0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 0.6666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.6666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| -0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.3333333333333333|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 3.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 0.6666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -0.6666666666666666|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| -3.3333333333333335|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-10-pacf" tabindex="-1"><a class="header-anchor" href="#_3-10-pacf"><span>3.10 PACF</span></a></h3><h4 id="注册语句-13" tabindex="-1"><a class="header-anchor" href="#注册语句-13"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> pacf</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFPACF&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-13" tabindex="-1"><a class="header-anchor" href="#函数简介-13"><span>函数简介</span></a></h4><p>本函数通过求解 Yule-Walker 方程,计算序列的偏自相关系数。对于特殊的输入序列,方程可能没有解,此时输出<code>NaN</code></p><p><strong>函数名:</strong> PACF</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>lag</code>:最大滞后阶数。默认值为<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>min</mi><mo></mo><mo stretchy="false">(</mo><mn>10</mn><mi>log</mi><mo></mo><mi mathvariant="normal">_</mi><mn>10</mn><mi>n</mi><mo separator="true">,</mo><mi>n</mi><mo></mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\min(10\log\_{10}n,n-1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.06em;vertical-align:-0.31em;"></span><span class="mop">min</span><span class="mopen">(</span><span class="mord">10</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">lo<span style="margin-right:0.01389em;">g</span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord" style="margin-right:0.02778em;">_</span><span class="mord"><span class="mord">10</span></span><span class="mord mathnormal">n</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span></span></span></span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">n</span></span></span></span>表示数据点个数。</li></ul><p><strong>输出序列</strong>:输出单个序列,类型为 DOUBLE。</p><h4 id="使用示例-13" tabindex="-1"><a class="header-anchor" href="#使用示例-13"><span>使用示例</span></a></h4><h5 id="指定滞后阶数" tabindex="-1"><a class="header-anchor" href="#指定滞后阶数"><span>指定滞后阶数</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 1|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 3|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 5|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> pacf(s1, </span><span style="color:#98C379;">&quot;lag&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;5&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------+</span></span>
<span class="line"><span>| Time|pacf(root.test.d1.s1, &quot;lag&quot;=&quot;5&quot;)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| -0.5744680851063829|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 0.3172297297297296|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| -0.2977686586304181|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| -2.0609033521065867|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-11-percentile" tabindex="-1"><a class="header-anchor" href="#_3-11-percentile"><span>3.11 Percentile</span></a></h3><h4 id="注册语句-14" tabindex="-1"><a class="header-anchor" href="#注册语句-14"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> percentile</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFPercentile&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-14" tabindex="-1"><a class="header-anchor" href="#函数简介-14"><span>函数简介</span></a></h4><p>本函数用于计算单列数值型数据的精确或近似分位数。</p><p><strong>函数名:</strong> PERCENTILE</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>rank</code>:所求分位数在所有数据中的排名百分比,取值范围为 (0,1],默认值为 0.5。如当设为 0.5时则计算中位数。</li><li><code>error</code>:近似分位数的基于排名的误差百分比,取值范围为 [0,1),默认值为0。如<code>rank</code>=0.5 且<code>error</code>=0.01,则计算出的分位数的真实排名百分比在 0.49~0.51之间。当<code>error</code>=0 时,计算结果为精确分位数。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型与输入序列相同。当<code>error</code>=0时,序列仅包含一个时间戳为分位数第一次出现的时间戳、值为分位数的数据点;否则,输出值的时间戳为0。</p><p><strong>提示:</strong> 数据中的空值、缺失值和<code>NaN</code>将会被忽略。</p><h4 id="使用示例-14" tabindex="-1"><a class="header-anchor" href="#使用示例-14"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|2021-03-17T10:32:17.054+08:00| 0.5319929|</span></span>
<span class="line"><span>|2021-03-17T10:32:18.054+08:00| 0.9304316|</span></span>
<span class="line"><span>|2021-03-17T10:32:19.054+08:00| -1.4800133|</span></span>
<span class="line"><span>|2021-03-17T10:32:20.054+08:00| 0.6114087|</span></span>
<span class="line"><span>|2021-03-17T10:32:21.054+08:00| 2.5163336|</span></span>
<span class="line"><span>|2021-03-17T10:32:22.054+08:00| -1.0845392|</span></span>
<span class="line"><span>|2021-03-17T10:32:23.054+08:00| 1.0562582|</span></span>
<span class="line"><span>|2021-03-17T10:32:24.054+08:00| 1.3867859|</span></span>
<span class="line"><span>|2021-03-17T10:32:25.054+08:00| -0.45429882|</span></span>
<span class="line"><span>|2021-03-17T10:32:26.054+08:00| 1.0353678|</span></span>
<span class="line"><span>|2021-03-17T10:32:27.054+08:00| 0.7307929|</span></span>
<span class="line"><span>|2021-03-17T10:32:28.054+08:00| 2.3167255|</span></span>
<span class="line"><span>|2021-03-17T10:32:29.054+08:00| 2.342443|</span></span>
<span class="line"><span>|2021-03-17T10:32:30.054+08:00| 1.5809103|</span></span>
<span class="line"><span>|2021-03-17T10:32:31.054+08:00| 1.4829416|</span></span>
<span class="line"><span>|2021-03-17T10:32:32.054+08:00| 1.5800357|</span></span>
<span class="line"><span>|2021-03-17T10:32:33.054+08:00| 0.7124368|</span></span>
<span class="line"><span>|2021-03-17T10:32:34.054+08:00| -0.78597564|</span></span>
<span class="line"><span>|2021-03-17T10:32:35.054+08:00| 1.2058644|</span></span>
<span class="line"><span>|2021-03-17T10:32:36.054+08:00| 1.4215064|</span></span>
<span class="line"><span>|2021-03-17T10:32:37.054+08:00| 1.2808295|</span></span>
<span class="line"><span>|2021-03-17T10:32:38.054+08:00| -0.6173715|</span></span>
<span class="line"><span>|2021-03-17T10:32:39.054+08:00| 0.06644377|</span></span>
<span class="line"><span>|2021-03-17T10:32:40.054+08:00| 2.349338|</span></span>
<span class="line"><span>|2021-03-17T10:32:41.054+08:00| 1.7335888|</span></span>
<span class="line"><span>|2021-03-17T10:32:42.054+08:00| 1.5872132|</span></span>
<span class="line"><span>............</span></span>
<span class="line"><span>Total line number = 10000</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> percentile(s0, </span><span style="color:#98C379;">&quot;rank&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.2&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;error&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.01&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>| Time|percentile(root.test.s0, &quot;rank&quot;=&quot;0.2&quot;, &quot;error&quot;=&quot;0.01&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>|2021-03-17T10:35:02.054+08:00| 0.1801469624042511|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------+</span></span>
<span class="line"><span>| Time|root.test2.s1|</span></span>
<span class="line"><span>+-----------------------------+-------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+-------------+</span></span>
<span class="line"><span>............</span></span>
<span class="line"><span>Total line number = 20</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> percentile(s1, </span><span style="color:#98C379;">&quot;rank&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.2&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;error&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.01&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------------------------------------+</span></span>
<span class="line"><span>| Time|percentile(root.test2.s1, &quot;rank&quot;=&quot;0.2&quot;, &quot;error&quot;=&quot;0.01&quot;)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| -1.0|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_3-12-quantile" tabindex="-1"><a class="header-anchor" href="#_3-12-quantile"><span>3.12 Quantile</span></a></h3><h4 id="注册语句-15" tabindex="-1"><a class="header-anchor" href="#注册语句-15"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> quantile</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFQuantile&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-15" tabindex="-1"><a class="header-anchor" href="#函数简介-15"><span>函数简介</span></a></h4><p>本函数用于计算单列数值型数据的近似分位数。本函数基于KLL sketch算法实现。</p><p><strong>函数名:</strong> QUANTILE</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>rank</code>:所求分位数在所有数据中的排名比,取值范围为 (0,1],默认值为 0.5。如当设为 0.5时则计算近似中位数。</li><li><code>K</code>:允许维护的KLL sketch大小,最小值为100,默认值为800。如<code>rank</code>=0.5 且<code>K</code>=800,则计算出的分位数的真实排名比有至少99%的可能性在 0.49~0.51之间。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型与输入序列相同。输出值的时间戳为0。</p><p><strong>提示:</strong> 数据中的空值、缺失值和<code>NaN</code>将会被忽略。</p><h4 id="使用示例-15" tabindex="-1"><a class="header-anchor" href="#使用示例-15"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------+</span></span>
<span class="line"><span>| Time|root.test1.s1|</span></span>
<span class="line"><span>+-----------------------------+-------------+</span></span>
<span class="line"><span>|2021-03-17T10:32:17.054+08:00| 7|</span></span>
<span class="line"><span>|2021-03-17T10:32:18.054+08:00| 15|</span></span>
<span class="line"><span>|2021-03-17T10:32:19.054+08:00| 36|</span></span>
<span class="line"><span>|2021-03-17T10:32:20.054+08:00| 39|</span></span>
<span class="line"><span>|2021-03-17T10:32:21.054+08:00| 40|</span></span>
<span class="line"><span>|2021-03-17T10:32:22.054+08:00| 41|</span></span>
<span class="line"><span>|2021-03-17T10:32:23.054+08:00| 20|</span></span>
<span class="line"><span>|2021-03-17T10:32:24.054+08:00| 18|</span></span>
<span class="line"><span>+-----------------------------+-------------+</span></span>
<span class="line"><span>............</span></span>
<span class="line"><span>Total line number = 8</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> quantile(s1, </span><span style="color:#98C379;">&quot;rank&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.2&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;K&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;800&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------------+</span></span>
<span class="line"><span>| Time|quantile(root.test1.s1, &quot;rank&quot;=&quot;0.2&quot;, &quot;K&quot;=&quot;800&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 7.000000000000001|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_3-13-period" tabindex="-1"><a class="header-anchor" href="#_3-13-period"><span>3.13 Period</span></a></h3><h4 id="注册语句-16" tabindex="-1"><a class="header-anchor" href="#注册语句-16"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> period</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFPeriod&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-16" tabindex="-1"><a class="header-anchor" href="#函数简介-16"><span>函数简介</span></a></h4><p>本函数用于计算单列数值型数据的周期。</p><p><strong>函数名:</strong> PERIOD</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>输出序列:</strong> 输出单个序列,类型为 INT32,序列仅包含一个时间戳为 0、值为周期的数据点。</p><h4 id="使用示例-16" tabindex="-1"><a class="header-anchor" href="#使用示例-16"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d3.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 3.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.006+08:00| 3.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.007+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.008+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.009+08:00| 3.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#C678DD;"> period</span><span style="color:#ABB2BF;">(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d3</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------------+</span></span>
<span class="line"><span>| Time|period(root.test.d3.s1)|</span></span>
<span class="line"><span>+-----------------------------+-----------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 3|</span></span>
<span class="line"><span>+-----------------------------+-----------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_3-14-qlb" tabindex="-1"><a class="header-anchor" href="#_3-14-qlb"><span>3.14 QLB</span></a></h3><h4 id="注册语句-17" tabindex="-1"><a class="header-anchor" href="#注册语句-17"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> qlb</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFQLB&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-17" tabindex="-1"><a class="header-anchor" href="#函数简介-17"><span>函数简介</span></a></h4><p>本函数对输入序列计算$Q_{LB} $统计量,并计算对应的p值。p值越小表明序列越有可能为非平稳序列。</p><p><strong>函数名:</strong> QLB</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>lag</code>:计算时用到的最大延迟阶数,取值应为 1 至 n-2 之间的整数,n 为序列采样总数。默认取 n-2。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。该序列是$Q_{LB} $统计量对应的 p 值,时间标签代表偏移阶数。</p><p><strong>提示:</strong> $Q_{LB} $统计量由自相关系数求得,如需得到统计量而非 p 值,可以使用 ACF 函数。</p><h4 id="使用示例-17" tabindex="-1"><a class="header-anchor" href="#使用示例-17"><span>使用示例</span></a></h4><h5 id="使用默认参数" tabindex="-1"><a class="header-anchor" href="#使用默认参数"><span>使用默认参数</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T00:00:00.100+08:00| 1.22|</span></span>
<span class="line"><span>|1970-01-01T00:00:00.200+08:00| -2.78|</span></span>
<span class="line"><span>|1970-01-01T00:00:00.300+08:00| 1.53|</span></span>
<span class="line"><span>|1970-01-01T00:00:00.400+08:00| 0.70|</span></span>
<span class="line"><span>|1970-01-01T00:00:00.500+08:00| 0.75|</span></span>
<span class="line"><span>|1970-01-01T00:00:00.600+08:00| -0.72|</span></span>
<span class="line"><span>|1970-01-01T00:00:00.700+08:00| -0.22|</span></span>
<span class="line"><span>|1970-01-01T00:00:00.800+08:00| 0.28|</span></span>
<span class="line"><span>|1970-01-01T00:00:00.900+08:00| 0.57|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.000+08:00| -0.22|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.100+08:00| -0.72|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.200+08:00| 1.34|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.300+08:00| -0.25|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.400+08:00| 0.17|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.500+08:00| 2.51|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.600+08:00| 1.42|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.700+08:00| -1.34|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.800+08:00| -0.01|</span></span>
<span class="line"><span>|1970-01-01T00:00:01.900+08:00| -0.49|</span></span>
<span class="line"><span>|1970-01-01T00:00:02.000+08:00| 1.63|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> QLB(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------------+</span></span>
<span class="line"><span>| Time| QLB(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+---------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.021+08:00| -0.31671|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 0.12748561639660716|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.022+08:00| -0.17051499999999997|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 0.21941409592365868|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.023+08:00| -0.11341499999999997|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 0.3384920824593398|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.024+08:00| 0.26146|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 0.26293189359893154|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.025+08:00| 0.06431999999999996|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 0.37265953802871943|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.026+08:00| 0.036919999999999994|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.006+08:00| 0.4923218142923832|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.027+08:00|-0.009294999999999993|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.007+08:00| 0.609628728420623|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.028+08:00| 0.12271499999999999|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.008+08:00| 0.6510708392264906|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.029+08:00| 0.008480000000000033|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.009+08:00| 0.7430561964288097|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.030+08:00| -0.21764500000000003|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.010+08:00| 0.6236738200492055|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.031+08:00| 0.35853999999999997|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.011+08:00| 0.21487390993160937|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.032+08:00| 0.18115499999999998|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.012+08:00| 0.18479562182870324|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.033+08:00| -0.27745499999999995|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.013+08:00| 0.07329862193377235|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.034+08:00| -0.22418500000000002|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.014+08:00| 0.038000864459751926|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.035+08:00| 0.31609000000000004|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.015+08:00| 0.004052989734200874|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.036+08:00| -0.06078500000000001|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.016+08:00| 0.005663787468609627|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.037+08:00| 0.19219499999999998|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.017+08:00|0.0016316380755082571|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.038+08:00| -0.25646|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.018+08:00|2.0047954405910673E-5|</span></span>
<span class="line"><span>+-----------------------------+---------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-15-resample" tabindex="-1"><a class="header-anchor" href="#_3-15-resample"><span>3.15 Resample</span></a></h3><h4 id="注册语句-18" tabindex="-1"><a class="header-anchor" href="#注册语句-18"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> re_sample</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFResample&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-18" tabindex="-1"><a class="header-anchor" href="#函数简介-18"><span>函数简介</span></a></h4><p>本函数对输入序列按照指定的频率进行重采样,包括上采样和下采样。目前,本函数支持的上采样方法包括<code>NaN</code>填充法 (NaN)、前值填充法 (FFill)、后值填充法 (BFill) 以及线性插值法 (Linear);本函数支持的下采样方法为分组聚合,聚合方法包括最大值 (Max)、最小值 (Min)、首值 (First)、末值 (Last)、平均值 (Mean)和中位数 (Median)。</p><p><strong>函数名:</strong> RESAMPLE</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>every</code>:重采样频率,是一个有单位的正数。目前支持五种单位,分别是 &#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。该参数不允许缺省。</li><li><code>interp</code>:上采样的插值方法,取值为 &#39;NaN&#39;、&#39;FFill&#39;、&#39;BFill&#39; 或 &#39;Linear&#39;。在缺省情况下,使用<code>NaN</code>填充法。</li><li><code>aggr</code>:下采样的聚合方法,取值为 &#39;Max&#39;、&#39;Min&#39;、&#39;First&#39;、&#39;Last&#39;、&#39;Mean&#39; 或 &#39;Median&#39;。在缺省情况下,使用平均数聚合。</li><li><code>start</code>:重采样的起始时间(包含),是一个格式为 &#39;yyyy-MM-dd HH:mm:ss&#39; 的时间字符串。在缺省情况下,使用第一个有效数据点的时间戳。</li><li><code>end</code>:重采样的结束时间(不包含),是一个格式为 &#39;yyyy-MM-dd HH:mm:ss&#39; 的时间字符串。在缺省情况下,使用最后一个有效数据点的时间戳。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。该序列按照重采样频率严格等间隔分布。</p><p><strong>提示:</strong> 数据中的<code>NaN</code>将会被忽略。</p><h4 id="使用示例-18" tabindex="-1"><a class="header-anchor" href="#使用示例-18"><span>使用示例</span></a></h4><h5 id="上采样" tabindex="-1"><a class="header-anchor" href="#上采样"><span>上采样</span></a></h5><p>当重采样频率高于数据原始频率时,将会进行上采样。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2021-03-06T16:00:00.000+08:00| 3.09|</span></span>
<span class="line"><span>|2021-03-06T16:15:00.000+08:00| 3.53|</span></span>
<span class="line"><span>|2021-03-06T16:30:00.000+08:00| 3.5|</span></span>
<span class="line"><span>|2021-03-06T16:45:00.000+08:00| 3.51|</span></span>
<span class="line"><span>|2021-03-06T17:00:00.000+08:00| 3.41|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#C678DD;"> resample</span><span style="color:#ABB2BF;">(s1,</span><span style="color:#98C379;">&#39;every&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;5m&#39;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&#39;interp&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;linear&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------------------------------------------+</span></span>
<span class="line"><span>| Time|resample(root.test.d1.s1, &quot;every&quot;=&quot;5m&quot;, &quot;interp&quot;=&quot;linear&quot;)|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------------------------+</span></span>
<span class="line"><span>|2021-03-06T16:00:00.000+08:00| 3.0899999141693115|</span></span>
<span class="line"><span>|2021-03-06T16:05:00.000+08:00| 3.2366665999094644|</span></span>
<span class="line"><span>|2021-03-06T16:10:00.000+08:00| 3.3833332856496177|</span></span>
<span class="line"><span>|2021-03-06T16:15:00.000+08:00| 3.5299999713897705|</span></span>
<span class="line"><span>|2021-03-06T16:20:00.000+08:00| 3.5199999809265137|</span></span>
<span class="line"><span>|2021-03-06T16:25:00.000+08:00| 3.509999990463257|</span></span>
<span class="line"><span>|2021-03-06T16:30:00.000+08:00| 3.5|</span></span>
<span class="line"><span>|2021-03-06T16:35:00.000+08:00| 3.503333330154419|</span></span>
<span class="line"><span>|2021-03-06T16:40:00.000+08:00| 3.506666660308838|</span></span>
<span class="line"><span>|2021-03-06T16:45:00.000+08:00| 3.509999990463257|</span></span>
<span class="line"><span>|2021-03-06T16:50:00.000+08:00| 3.4766666889190674|</span></span>
<span class="line"><span>|2021-03-06T16:55:00.000+08:00| 3.443333387374878|</span></span>
<span class="line"><span>|2021-03-06T17:00:00.000+08:00| 3.4100000858306885|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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><h5 id="下采样" tabindex="-1"><a class="header-anchor" href="#下采样"><span>下采样</span></a></h5><p>当重采样频率低于数据原始频率时,将会进行下采样。</p><p>输入序列同上,用于查询的 SQL 语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#C678DD;"> resample</span><span style="color:#ABB2BF;">(s1,</span><span style="color:#98C379;">&#39;every&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;30m&#39;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&#39;aggr&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;first&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------------------------------+</span></span>
<span class="line"><span>| Time|resample(root.test.d1.s1, &quot;every&quot;=&quot;30m&quot;, &quot;aggr&quot;=&quot;first&quot;)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------+</span></span>
<span class="line"><span>|2021-03-06T16:00:00.000+08:00| 3.0899999141693115|</span></span>
<span class="line"><span>|2021-03-06T16:30:00.000+08:00| 3.5|</span></span>
<span class="line"><span>|2021-03-06T17:00:00.000+08:00| 3.4100000858306885|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="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><h6 id="指定重采样时间段" tabindex="-1"><a class="header-anchor" href="#指定重采样时间段"><span>指定重采样时间段</span></a></h6><p>可以使用<code>start</code><code>end</code>两个参数指定重采样的时间段,超出实际时间范围的部分会被插值填补。</p><p>输入序列同上,用于查询的 SQL 语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#C678DD;"> resample</span><span style="color:#ABB2BF;">(s1,</span><span style="color:#98C379;">&#39;every&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;30m&#39;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&#39;start&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;2021-03-06 15:00:00&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------------------------------------------------------------+</span></span>
<span class="line"><span>| Time|resample(root.test.d1.s1, &quot;every&quot;=&quot;30m&quot;, &quot;start&quot;=&quot;2021-03-06 15:00:00&quot;)|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------------------------------------------------+</span></span>
<span class="line"><span>|2021-03-06T15:00:00.000+08:00| NaN|</span></span>
<span class="line"><span>|2021-03-06T15:30:00.000+08:00| NaN|</span></span>
<span class="line"><span>|2021-03-06T16:00:00.000+08:00| 3.309999942779541|</span></span>
<span class="line"><span>|2021-03-06T16:30:00.000+08:00| 3.5049999952316284|</span></span>
<span class="line"><span>|2021-03-06T17:00:00.000+08:00| 3.4100000858306885|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-16-sample" tabindex="-1"><a class="header-anchor" href="#_3-16-sample"><span>3.16 Sample</span></a></h3><h4 id="注册语句-19" tabindex="-1"><a class="header-anchor" href="#注册语句-19"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> sample</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFSample&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-19" tabindex="-1"><a class="header-anchor" href="#函数简介-19"><span>函数简介</span></a></h4><p>本函数对输入序列进行采样,即从输入序列中选取指定数量的数据点并输出。目前,本函数支持三种采样方法:<strong>蓄水池采样法 (reservoir sampling)</strong> 对数据进行随机采样,所有数据点被采样的概率相同;<strong>等距采样法 (isometric sampling)</strong> 按照相等的索引间隔对数据进行采样,<strong>最大三角采样法 (triangle sampling)</strong> 对所有数据会按采样率分桶,每个桶内会计算数据点间三角形面积,并保留面积最大的点,该算法通常用于数据的可视化展示中,采用过程可以保证一些关键的突变点在采用中得到保留,更多抽样算法细节可以阅读论文 <a href="http://skemman.is/stream/get/1946/15343/37285/3/SS_MSthesis.pdf" target="_blank" rel="noopener noreferrer">here</a></p><p><strong>函数名:</strong> SAMPLE</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型可以是任意的。</p><p><strong>参数:</strong></p><ul><li><code>method</code>:采样方法,取值为 &#39;reservoir&#39;,&#39;isometric&#39; 或 &#39;triangle&#39; 。在缺省情况下,采用蓄水池采样法。</li><li><code>k</code>:采样数,它是一个正整数,在缺省情况下为 1。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型与输入序列相同。该序列的长度为采样数,序列中的每一个数据点都来自于输入序列。</p><p><strong>提示:</strong> 如果采样数大于序列长度,那么输入序列中所有的数据点都会被输出。</p><h4 id="使用示例-19" tabindex="-1"><a class="header-anchor" href="#使用示例-19"><span>使用示例</span></a></h4><h5 id="蓄水池采样" tabindex="-1"><a class="header-anchor" href="#蓄水池采样"><span>蓄水池采样</span></a></h5><p><code>method</code>参数为 &#39;reservoir&#39; 或缺省时,采用蓄水池采样法对输入序列进行采样。由于该采样方法具有随机性,下面展示的输出序列只是一种可能的结果。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 2.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 3.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 4.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 5.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 6.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:07.000+08:00| 7.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 8.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:09.000+08:00| 9.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 10.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#C678DD;"> sample</span><span style="color:#ABB2BF;">(s1,</span><span style="color:#98C379;">&#39;method&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;reservoir&#39;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&#39;k&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;5&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>| Time|sample(root.test.d1.s1, &quot;method&quot;=&quot;reservoir&quot;, &quot;k&quot;=&quot;5&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 5.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 6.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 8.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:09.000+08:00| 9.0|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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><h5 id="等距采样" tabindex="-1"><a class="header-anchor" href="#等距采样"><span>等距采样</span></a></h5><p><code>method</code>参数为 &#39;isometric&#39; 时,采用等距采样法对输入序列进行采样。</p><p>输入序列同上,用于查询的 SQL 语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#C678DD;"> sample</span><span style="color:#ABB2BF;">(s1,</span><span style="color:#98C379;">&#39;method&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;isometric&#39;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&#39;k&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;5&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>| Time|sample(root.test.d1.s1, &quot;method&quot;=&quot;isometric&quot;, &quot;k&quot;=&quot;5&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 3.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 5.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:07.000+08:00| 7.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:09.000+08:00| 9.0|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-17-segment" tabindex="-1"><a class="header-anchor" href="#_3-17-segment"><span>3.17 Segment</span></a></h3><h4 id="注册语句-20" tabindex="-1"><a class="header-anchor" href="#注册语句-20"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> segment</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFSegment&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-20" tabindex="-1"><a class="header-anchor" href="#函数简介-20"><span>函数简介</span></a></h4><p>本函数按照数据的线性变化趋势将数据划分为多个子序列,返回分段直线拟合后的子序列首值或所有拟合值。</p><p><strong>函数名:</strong> SEGMENT</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>output</code>:&quot;all&quot; 输出所有拟合值;&quot;first&quot; 输出子序列起点拟合值。默认为 &quot;first&quot;。</li><li><code>error</code>:判定存在线性趋势的误差允许阈值。误差的定义为子序列进行线性拟合的误差的绝对值的均值。默认为 0.1.</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。</p><p><strong>提示:</strong> 函数默认所有数据等时间间隔分布。函数读取所有数据,若原始数据过多,请先进行降采样处理。拟合采用自底向上方法,子序列的尾值可能会被认作子序列首值输出。</p><h4 id="使用示例-20" tabindex="-1"><a class="header-anchor" href="#使用示例-20"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 5.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 3.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 4.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 5.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 6.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 8.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 9.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 9.1|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 9.2|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| 9.3|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 9.4|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 9.5|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 9.6|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 9.7|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 9.8|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| 9.9|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.100+08:00| 8.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.200+08:00| 6.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.300+08:00| 4.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.400+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.600+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.700+08:00| -4.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.800+08:00| -6.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.900+08:00| -8.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| -10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.100+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.200+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.300+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.400+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.500+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.600+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.700+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.800+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.900+08:00| 10.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> segment(s1,</span><span style="color:#98C379;">&quot;error&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.1&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------+</span></span>
<span class="line"><span>| Time|segment(root.test.s1, &quot;error&quot;=&quot;0.1&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 5.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 9.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| -10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.200+08:00| 10.0|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-18-skew" tabindex="-1"><a class="header-anchor" href="#_3-18-skew"><span>3.18 Skew</span></a></h3><h4 id="注册语句-21" tabindex="-1"><a class="header-anchor" href="#注册语句-21"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> skew</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFSkew&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-21" tabindex="-1"><a class="header-anchor" href="#函数简介-21"><span>函数简介</span></a></h4><p>本函数用于计算单列数值型数据的总体偏度</p><p><strong>函数名:</strong> SKEW</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE,序列仅包含一个时间戳为 0、值为总体偏度的数据点。</p><p><strong>提示:</strong> 数据中的空值、缺失值和<code>NaN</code>将会被忽略。</p><h4 id="使用示例-21" tabindex="-1"><a class="header-anchor" href="#使用示例-21"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:00.000+08:00| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| 2.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 3.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 4.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 5.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 6.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 7.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:07.000+08:00| 8.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 9.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:09.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:11.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:12.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:13.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:17.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 10.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:19.000+08:00| 10.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> skew(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------------+</span></span>
<span class="line"><span>| Time| skew(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+-----------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| -0.9998427402292644|</span></span>
<span class="line"><span>+-----------------------------+-----------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_3-19-spline" tabindex="-1"><a class="header-anchor" href="#_3-19-spline"><span>3.19 Spline</span></a></h3><h4 id="注册语句-22" tabindex="-1"><a class="header-anchor" href="#注册语句-22"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> spline</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFSpline&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-22" tabindex="-1"><a class="header-anchor" href="#函数简介-22"><span>函数简介</span></a></h4><p>本函数提供对原始序列进行三次样条曲线拟合后的插值重采样。</p><p><strong>函数名:</strong> SPLINE</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>points</code>:重采样个数。</li></ul><p><strong>输出序列</strong>:输出单个序列,类型为 DOUBLE。</p><p><strong>提示</strong>:输出序列保留输入序列的首尾值,等时间间隔采样。仅当输入点个数不少于 4 个时才计算插值。</p><h4 id="使用示例-22" tabindex="-1"><a class="header-anchor" href="#使用示例-22"><span>使用示例</span></a></h4><h5 id="指定插值个数" tabindex="-1"><a class="header-anchor" href="#指定插值个数"><span>指定插值个数</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 1.7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 2.1|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 1.8|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| 1.2|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 1.6|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> spline(s1, </span><span style="color:#98C379;">&quot;points&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;151&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------+</span></span>
<span class="line"><span>| Time|spline(root.test.s1, &quot;points&quot;=&quot;151&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.010+08:00| 0.04870000251134237|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.020+08:00| 0.09680000495910646|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.030+08:00| 0.14430000734329226|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.040+08:00| 0.19120000966389972|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.050+08:00| 0.23750001192092896|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.060+08:00| 0.2832000141143799|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.070+08:00| 0.32830001624425253|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.080+08:00| 0.3728000183105469|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.090+08:00| 0.416700020313263|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.4600000222524008|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.110+08:00| 0.5027000241279602|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.120+08:00| 0.5448000259399414|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.130+08:00| 0.5863000276883443|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.140+08:00| 0.627200029373169|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.150+08:00| 0.6675000309944153|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.160+08:00| 0.7072000325520833|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.170+08:00| 0.7463000340461731|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.180+08:00| 0.7848000354766846|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.190+08:00| 0.8227000368436178|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.8600000381469728|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.210+08:00| 0.8967000393867494|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.220+08:00| 0.9328000405629477|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.230+08:00| 0.9683000416755676|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.240+08:00| 1.0032000427246095|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.250+08:00| 1.037500043710073|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.260+08:00| 1.071200044631958|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.270+08:00| 1.1043000454902647|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.280+08:00| 1.1368000462849934|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.290+08:00| 1.1687000470161437|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.2000000476837158|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.310+08:00| 1.2307000483103594|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.320+08:00| 1.2608000489139557|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.330+08:00| 1.2903000494873524|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.340+08:00| 1.3192000500233967|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.350+08:00| 1.3475000505149364|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.360+08:00| 1.3752000509548186|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.370+08:00| 1.402300051335891|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.380+08:00| 1.4288000516510009|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.390+08:00| 1.4547000518929958|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 1.480000052054723|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.410+08:00| 1.5047000521290301|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.420+08:00| 1.5288000521087646|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.430+08:00| 1.5523000519867738|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.440+08:00| 1.575200051755905|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.450+08:00| 1.597500051409006|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.460+08:00| 1.619200050938924|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.470+08:00| 1.6403000503385066|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.480+08:00| 1.660800049600601|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.490+08:00| 1.680700048718055|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 1.7000000476837158|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.510+08:00| 1.7188475466453037|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.520+08:00| 1.7373800457262996|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.530+08:00| 1.7555825448831923|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.540+08:00| 1.7734400440724702|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.550+08:00| 1.790937543250622|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.560+08:00| 1.8080600423741364|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.570+08:00| 1.8247925413995016|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.580+08:00| 1.8411200402832066|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.590+08:00| 1.8570275389817397|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 1.8725000374515897|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.610+08:00| 1.8875225356492449|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.620+08:00| 1.902080033531194|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.630+08:00| 1.9161575310539258|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.640+08:00| 1.9297400281739288|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.650+08:00| 1.9428125248476913|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.660+08:00| 1.9553600210317021|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.670+08:00| 1.96736751668245|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.680+08:00| 1.9788200117564232|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.690+08:00| 1.9897025062101101|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.710+08:00| 2.0097024933913334|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.720+08:00| 2.0188199867081615|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.730+08:00| 2.027367479995188|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.740+08:00| 2.0353599732971155|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.750+08:00| 2.0428124666586482|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.760+08:00| 2.049739960124489|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.770+08:00| 2.056157453739342|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.780+08:00| 2.06207994754791|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.790+08:00| 2.067522441594897|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.072499935925006|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.810+08:00| 2.07702743058294|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.820+08:00| 2.081119925613404|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.830+08:00| 2.0847924210611|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.840+08:00| 2.0880599169707317|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.850+08:00| 2.0909374133870027|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.860+08:00| 2.0934399103546166|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.870+08:00| 2.0955824079182768|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.880+08:00| 2.0973799061226863|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.890+08:00| 2.098847405012549|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 2.0999999046325684|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.910+08:00| 2.1005574051201332|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.920+08:00| 2.1002599065303778|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.930+08:00| 2.0991524087846245|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.940+08:00| 2.0972799118041947|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.950+08:00| 2.0946874155104105|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.960+08:00| 2.0914199198245944|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.970+08:00| 2.0875224246680673|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.980+08:00| 2.083039929962151|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.990+08:00| 2.0780174356281687|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 2.0724999415874406|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.010+08:00| 2.06653244776129|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.020+08:00| 2.060159954071038|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.030+08:00| 2.053427460438006|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.040+08:00| 2.046379966783517|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.050+08:00| 2.0390624730288924|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.060+08:00| 2.031519979095454|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.070+08:00| 2.0237974849045237|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.080+08:00| 2.015939990377423|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.090+08:00| 2.0079924954354746|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.110+08:00| 1.9907018211101906|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.120+08:00| 1.9788509124245144|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.130+08:00| 1.9645127287932083|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.140+08:00| 1.9477527250665083|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.150+08:00| 1.9286363560946513|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.160+08:00| 1.9072290767278735|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.170+08:00| 1.8835963418164114|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.180+08:00| 1.8578036062105014|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.190+08:00| 1.8299163247603802|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 1.7999999523162842|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.210+08:00| 1.7623635841923329|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.220+08:00| 1.7129696477516976|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.230+08:00| 1.6543635959181928|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.240+08:00| 1.5890908816156328|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.250+08:00| 1.5196969577678319|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.260+08:00| 1.4487272772986044|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.270+08:00| 1.3787272931317647|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.280+08:00| 1.3122424581911272|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.290+08:00| 1.251818225400506|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| 1.2000000476837158|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.310+08:00| 1.1548000470995912|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.320+08:00| 1.1130667107899999|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.330+08:00| 1.0756000393033045|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.340+08:00| 1.043200033187868|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.350+08:00| 1.016666692992053|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.360+08:00| 0.9968000192642223|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.370+08:00| 0.9844000125527389|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.380+08:00| 0.9802666734059655|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.390+08:00| 0.9852000023722649|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.410+08:00| 1.023999999165535|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.420+08:00| 1.0559999990463256|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.430+08:00| 1.0959999996423722|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.440+08:00| 1.1440000009536744|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.450+08:00| 1.2000000029802322|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.460+08:00| 1.264000005722046|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.470+08:00| 1.3360000091791153|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.480+08:00| 1.4160000133514405|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.490+08:00| 1.5040000182390214|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 1.600000023841858|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_3-20-spread" tabindex="-1"><a class="header-anchor" href="#_3-20-spread"><span>3.20 Spread</span></a></h3><h4 id="注册语句-23" tabindex="-1"><a class="header-anchor" href="#注册语句-23"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> spread</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDAFSpread&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-23" tabindex="-1"><a class="header-anchor" href="#函数简介-23"><span>函数简介</span></a></h4><p>本函数用于计算时间序列的极差,即最大值减去最小值的结果。</p><p><strong>函数名:</strong> SPREAD</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>输出序列:</strong> 输出单个序列,类型与输入相同,序列仅包含一个时间戳为 0 、值为极差的数据点。</p><p><strong>提示:</strong> 数据中的空值、缺失值和<code>NaN</code>将会被忽略。</p><h4 id="使用示例-23" tabindex="-1"><a class="header-anchor" href="#使用示例-23"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> spread(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">30</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------------+</span></span>
<span class="line"><span>| Time|spread(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+-----------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 26.0|</span></span>
<span class="line"><span>+-----------------------------+-----------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_3-21-zscore" tabindex="-1"><a class="header-anchor" href="#_3-21-zscore"><span>3.21 ZScore</span></a></h3><h4 id="注册语句-24" tabindex="-1"><a class="header-anchor" href="#注册语句-24"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> zscore</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dprofile.UDTFZScore&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-24" tabindex="-1"><a class="header-anchor" href="#函数简介-24"><span>函数简介</span></a></h4><p>本函数将输入序列使用z-score方法进行归一化。</p><p><strong>函数名:</strong> ZSCORE</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>compute</code>:若设置为 &quot;batch&quot;,则将数据全部读入后转换;若设置为 &quot;stream&quot;,则需用户提供均值及方差进行流式计算转换。默认为 &quot;batch&quot;。</li><li><code>avg</code>:使用流式计算时的均值。</li><li><code>sd</code>:使用流式计算时的标准差。</li></ul><p><strong>输出序列</strong>:输出单个序列,类型为 DOUBLE。</p><h4 id="使用示例-24" tabindex="-1"><a class="header-anchor" href="#使用示例-24"><span>使用示例</span></a></h4><h5 id="全数据计算-1" tabindex="-1"><a class="header-anchor" href="#全数据计算-1"><span>全数据计算</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> zscore(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>| Time|zscore(root.test.s1)|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -0.6201736729460423|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -1.033622788243404|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 0.6201736729460423|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -0.6201736729460423|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -0.6201736729460423|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 3.9277665953249348|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 0.6201736729460423|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -1.033622788243404|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00|-0.20672455764868078|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_4-异常检测" tabindex="-1"><a class="header-anchor" href="#_4-异常检测"><span>4. 异常检测</span></a></h2><h3 id="_4-1-iqr" tabindex="-1"><a class="header-anchor" href="#_4-1-iqr"><span>4.1 IQR</span></a></h3><h4 id="注册语句-25" tabindex="-1"><a class="header-anchor" href="#注册语句-25"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> iqr</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.anomaly.UDTFIQR&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-25" tabindex="-1"><a class="header-anchor" href="#函数简介-25"><span>函数简介</span></a></h4><p>本函数用于检验超出上下四分位数1.5倍IQR的数据分布异常。</p><p><strong>函数名:</strong> IQR</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>method</code>:若设置为 &quot;batch&quot;,则将数据全部读入后检测;若设置为 &quot;stream&quot;,则需用户提供上下四分位数进行流式检测。默认为 &quot;batch&quot;。</li><li><code>q1</code>:使用流式计算时的下四分位数。</li><li><code>q3</code>:使用流式计算时的上四分位数。</li></ul><p><strong>输出序列</strong>:输出单个序列,类型为 DOUBLE。</p><p><strong>说明</strong><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>I</mi><mi>Q</mi><mi>R</mi><mo>=</mo><mi>Q</mi><mi mathvariant="normal">_</mi><mn>3</mn><mo></mo><mi>Q</mi><mi mathvariant="normal">_</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">IQR=Q\_3-Q\_1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8778em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.07847em;">I</span><span class="mord mathnormal" style="margin-right:0.00773em;">QR</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.9933em;vertical-align:-0.31em;"></span><span class="mord mathnormal">Q</span><span class="mord">_3</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.9933em;vertical-align:-0.31em;"></span><span class="mord mathnormal">Q</span><span class="mord">_1</span></span></span></span></p><h4 id="使用示例-25" tabindex="-1"><a class="header-anchor" href="#使用示例-25"><span>使用示例</span></a></h4><h5 id="全数据计算-2" tabindex="-1"><a class="header-anchor" href="#全数据计算-2"><span>全数据计算</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| -2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> iqr(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------+</span></span>
<span class="line"><span>| Time|iqr(root.test.s1)|</span></span>
<span class="line"><span>+-----------------------------+-----------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 10.0|</span></span>
<span class="line"><span>+-----------------------------+-----------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_4-2-ksigma" tabindex="-1"><a class="header-anchor" href="#_4-2-ksigma"><span>4.2 KSigma</span></a></h3><h4 id="注册语句-26" tabindex="-1"><a class="header-anchor" href="#注册语句-26"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> ksigma</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.anomaly.UDTFKSigma&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-26" tabindex="-1"><a class="header-anchor" href="#函数简介-26"><span>函数简介</span></a></h4><p>本函数利用动态 K-Sigma 算法进行异常检测。在一个窗口内,与平均值的差距超过k倍标准差的数据将被视作异常并输出。</p><p><strong>函数名:</strong> KSIGMA</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>k</code>:在动态 K-Sigma 算法中,分布异常的标准差倍数阈值,默认值为 3。</li><li><code>window</code>:动态 K-Sigma 算法的滑动窗口大小,默认值为 10000。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型与输入序列相同。</p><p><strong>提示:</strong> k 应大于 0,否则将不做输出。</p><h4 id="使用示例-26" tabindex="-1"><a class="header-anchor" href="#使用示例-26"><span>使用示例</span></a></h4><h5 id="指定k" tabindex="-1"><a class="header-anchor" href="#指定k"><span>指定k</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 50.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 150.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 200.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 200.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 200.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 200.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 200.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 200.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 150.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 50.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 0.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> ksigma(s1,</span><span style="color:#98C379;">&quot;k&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1.0&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">30</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------------------------+</span></span>
<span class="line"><span>|Time |ksigma(root.test.d1.s1,&quot;k&quot;=&quot;3.0&quot;)|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 50.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 50.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_4-3-lof" tabindex="-1"><a class="header-anchor" href="#_4-3-lof"><span>4.3 LOF</span></a></h3><h4 id="注册语句-27" tabindex="-1"><a class="header-anchor" href="#注册语句-27"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> LOF</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.anomaly.UDTFLOF&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-27" tabindex="-1"><a class="header-anchor" href="#函数简介-27"><span>函数简介</span></a></h4><p>本函数使用局部离群点检测方法用于查找序列的密度异常。将根据提供的第k距离数及局部离群点因子(lof)阈值,判断输入数据是否为离群点,即异常,并输出各点的 LOF 值。</p><p><strong>函数名:</strong> LOF</p><p><strong>输入序列:</strong> 多个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>method</code>:使用的检测方法。默认为 default,以高维数据计算。设置为 series,将一维时间序列转换为高维数据计算。</li><li><code>k</code>:使用第k距离计算局部离群点因子.默认为 3。</li><li><code>window</code>:每次读取数据的窗口长度。默认为 10000.</li><li><code>windowsize</code>:使用series方法时,转化高维数据的维数,即单个窗口的大小。默认为 5。</li></ul><p><strong>输出序列:</strong> 输出单时间序列,类型为DOUBLE。</p><p><strong>提示:</strong> 不完整的数据行会被忽略,不参与计算,也不标记为离群点。</p><h4 id="使用示例-27" tabindex="-1"><a class="header-anchor" href="#使用示例-27"><span>使用示例</span></a></h4><h5 id="默认参数" tabindex="-1"><a class="header-anchor" href="#默认参数"><span>默认参数</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|root.test.d1.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.0| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 0.0| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 1.0| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 0.0| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| -1.0| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| -1.0| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.0| null|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> lof(s1,s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;">&lt;</span><span style="color:#D19A66;">1000</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------------------+</span></span>
<span class="line"><span>| Time|lof(root.test.d1.s1, root.test.d1.s2)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 3.8274824267668244|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 3.0117631741126156|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 2.838155437762879|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 3.0117631741126156|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 2.73518261244453|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 2.371440975708148|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 2.73518261244453|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 1.7561416374270742|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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><h5 id="诊断一维时间序列" tabindex="-1"><a class="header-anchor" href="#诊断一维时间序列"><span>诊断一维时间序列</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 3.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 4.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 5.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 6.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 8.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 9.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 11.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 12.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| 13.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 14.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 15.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 16.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.700+08:00| 17.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.800+08:00| 18.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.900+08:00| 19.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 20.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> lof(s1, </span><span style="color:#98C379;">&quot;method&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;series&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;">&lt;</span><span style="color:#D19A66;">1000</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>| Time|lof(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 3.77777777777778|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 4.32727272727273|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 4.85714285714286|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 5.40909090909091|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 5.94999999999999|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 6.43243243243243|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 6.79999999999999|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 6.79999999999999|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 6.43243243243243|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 5.94999999999999|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| 5.40909090909091|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 4.85714285714286|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 4.32727272727273|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.600+08:00| 3.77777777777778|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_4-4-missdetect" tabindex="-1"><a class="header-anchor" href="#_4-4-missdetect"><span>4.4 MissDetect</span></a></h3><h4 id="注册语句-28" tabindex="-1"><a class="header-anchor" href="#注册语句-28"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> missdetect</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.anomaly.UDTFMissDetect&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-28" tabindex="-1"><a class="header-anchor" href="#函数简介-28"><span>函数简介</span></a></h4><p>本函数用于检测数据中的缺失异常。在一些数据中,缺失数据会被线性插值填补,在数据中出现完美的线性片段,且这些片段往往长度较大。本函数通过在数据中发现这些完美线性片段来检测缺失异常。</p><p><strong>函数名:</strong> MISSDETECT</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>minlen</code>:被标记为异常的完美线性片段的最小长度,是一个大于等于 10 的整数,默认值为 10。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 BOOLEAN,即该数据点是否为缺失异常。</p><p><strong>提示:</strong> 数据中的<code>NaN</code>将会被忽略。</p><h4 id="使用示例-28" tabindex="-1"><a class="header-anchor" href="#使用示例-28"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2021-07-01T12:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:01.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:02.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:03.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:04.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:05.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:06.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:07.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:08.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:09.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:10.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:11.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:12.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:13.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:14.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:15.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:16.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:17.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:18.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:19.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:20.000+08:00| 1.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> missdetect(s2,</span><span style="color:#98C379;">&#39;minlen&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;10&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------+</span></span>
<span class="line"><span>| Time|missdetect(root.test.d2.s2, &quot;minlen&quot;=&quot;10&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------+</span></span>
<span class="line"><span>|2021-07-01T12:00:00.000+08:00| false|</span></span>
<span class="line"><span>|2021-07-01T12:00:01.000+08:00| false|</span></span>
<span class="line"><span>|2021-07-01T12:00:02.000+08:00| false|</span></span>
<span class="line"><span>|2021-07-01T12:00:03.000+08:00| false|</span></span>
<span class="line"><span>|2021-07-01T12:00:04.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:05.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:06.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:07.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:08.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:09.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:10.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:11.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:12.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:13.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:14.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:15.000+08:00| true|</span></span>
<span class="line"><span>|2021-07-01T12:00:16.000+08:00| false|</span></span>
<span class="line"><span>|2021-07-01T12:00:17.000+08:00| false|</span></span>
<span class="line"><span>|2021-07-01T12:00:18.000+08:00| false|</span></span>
<span class="line"><span>|2021-07-01T12:00:19.000+08:00| false|</span></span>
<span class="line"><span>|2021-07-01T12:00:20.000+08:00| false|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_4-5-range" tabindex="-1"><a class="header-anchor" href="#_4-5-range"><span>4.5 Range</span></a></h3><h4 id="注册语句-29" tabindex="-1"><a class="header-anchor" href="#注册语句-29"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> range</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.anomaly.UDTFRange&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-29" tabindex="-1"><a class="header-anchor" href="#函数简介-29"><span>函数简介</span></a></h4><p>本函数用于查找时间序列的范围异常。将根据提供的上界与下界,判断输入数据是否越界,即异常,并输出所有异常点为新的时间序列。</p><p><strong>函数名:</strong> RANGE</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>lower_bound</code>:范围异常检测的下界。</li><li><code>upper_bound</code>:范围异常检测的上界。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型与输入序列相同。</p><p><strong>提示:</strong> 应满足<code>upper_bound</code>大于<code>lower_bound</code>,否则将不做输出。</p><h4 id="使用示例-29" tabindex="-1"><a class="header-anchor" href="#使用示例-29"><span>使用示例</span></a></h4><h5 id="指定上界与下界" tabindex="-1"><a class="header-anchor" href="#指定上界与下界"><span>指定上界与下界</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#C678DD;"> range</span><span style="color:#ABB2BF;">(s1,</span><span style="color:#98C379;">&quot;lower_bound&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;101.0&quot;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&quot;upper_bound&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;125.0&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">30</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------------------------------+</span></span>
<span class="line"><span>|Time |range(root.test.d1.s1,&quot;lower_bound&quot;=&quot;101.0&quot;,&quot;upper_bound&quot;=&quot;125.0&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="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="_4-6-twosidedfilter" tabindex="-1"><a class="header-anchor" href="#_4-6-twosidedfilter"><span>4.6 TwoSidedFilter</span></a></h3><h4 id="注册语句-30" tabindex="-1"><a class="header-anchor" href="#注册语句-30"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> twosidedfilter</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.anomaly.UDTFTwoSidedFilter&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-30" tabindex="-1"><a class="header-anchor" href="#函数简介-30"><span>函数简介</span></a></h4><p>本函数基于双边窗口检测法对输入序列中的异常点进行过滤。</p><p><strong>函数名:</strong> TWOSIDEDFILTER</p><p><strong>输出序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>输出序列:</strong> 输出单个序列,类型与输入相同,是输入序列去除异常点后的结果。</p><p><strong>参数:</strong></p><ul><li><code>len</code>:双边窗口检测法中的窗口大小,取值范围为正整数,默认值为 5.如当<code>len</code>=3 时,算法向前、向后各取长度为3的窗口,在窗口中计算异常度。</li><li><code>threshold</code>:异常度的阈值,取值范围为(0,1),默认值为 0.3。阈值越高,函数对于异常度的判定标准越严格。</li></ul><h4 id="使用示例-30" tabindex="-1"><a class="header-anchor" href="#使用示例-30"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 2002.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 1946.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 1958.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| 2012.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:04.000+08:00| 2051.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:05.000+08:00| 1898.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:06.000+08:00| 2014.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:07.000+08:00| 2052.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:08.000+08:00| 1935.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:09.000+08:00| 1901.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:10.000+08:00| 1972.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:11.000+08:00| 1969.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:12.000+08:00| 1984.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:13.000+08:00| 2018.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:37.000+08:00| 1484.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:38.000+08:00| 1055.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:39.000+08:00| 1050.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:05.000+08:00| 1023.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:06.000+08:00| 1056.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:07.000+08:00| 978.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:08.000+08:00| 1050.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:09.000+08:00| 1123.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:10.000+08:00| 1150.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:11.000+08:00| 1034.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:12.000+08:00| 950.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:13.000+08:00| 1059.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> TwoSidedFilter(s0, </span><span style="color:#98C379;">&#39;len&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;5&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&#39;threshold&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;0.3&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 2002.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 1946.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 1958.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| 2012.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:04.000+08:00| 2051.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:05.000+08:00| 1898.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:06.000+08:00| 2014.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:07.000+08:00| 2052.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:08.000+08:00| 1935.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:09.000+08:00| 1901.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:10.000+08:00| 1972.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:11.000+08:00| 1969.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:12.000+08:00| 1984.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:13.000+08:00| 2018.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:05.000+08:00| 1023.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:06.000+08:00| 1056.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:07.000+08:00| 978.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:08.000+08:00| 1050.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:09.000+08:00| 1123.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:10.000+08:00| 1150.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:11.000+08:00| 1034.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:12.000+08:00| 950.0|</span></span>
<span class="line"><span>|1970-01-01T08:01:13.000+08:00| 1059.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_4-7-outlier" tabindex="-1"><a class="header-anchor" href="#_4-7-outlier"><span>4.7 Outlier</span></a></h3><h4 id="注册语句-31" tabindex="-1"><a class="header-anchor" href="#注册语句-31"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> outlier</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.anomaly.UDTFOutlier&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-31" tabindex="-1"><a class="header-anchor" href="#函数简介-31"><span>函数简介</span></a></h4><p>本函数用于检测基于距离的异常点。在当前窗口中,如果一个点距离阈值范围内的邻居数量(包括它自己)少于密度阈值,则该点是异常点。</p><p><strong>函数名:</strong> OUTLIER</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>r</code>:基于距离异常检测中的距离阈值。</li><li><code>k</code>:基于距离异常检测中的密度阈值。</li><li><code>w</code>:用于指定滑动窗口的大小。</li><li><code>s</code>:用于指定滑动窗口的步长。</li></ul><p><strong>输出序列</strong>:输出单个序列,类型与输入序列相同。</p><h4 id="使用示例-31" tabindex="-1"><a class="header-anchor" href="#使用示例-31"><span>使用示例</span></a></h4><h5 id="指定查询参数" tabindex="-1"><a class="header-anchor" href="#指定查询参数"><span>指定查询参数</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>| Time|root.test.s1|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span>
<span class="line"><span>|2020-01-04T23:59:55.000+08:00| 56.0|</span></span>
<span class="line"><span>|2020-01-04T23:59:56.000+08:00| 55.1|</span></span>
<span class="line"><span>|2020-01-04T23:59:57.000+08:00| 54.2|</span></span>
<span class="line"><span>|2020-01-04T23:59:58.000+08:00| 56.3|</span></span>
<span class="line"><span>|2020-01-04T23:59:59.000+08:00| 59.0|</span></span>
<span class="line"><span>|2020-01-05T00:00:00.000+08:00| 60.0|</span></span>
<span class="line"><span>|2020-01-05T00:00:01.000+08:00| 60.5|</span></span>
<span class="line"><span>|2020-01-05T00:00:02.000+08:00| 64.5|</span></span>
<span class="line"><span>|2020-01-05T00:00:03.000+08:00| 69.0|</span></span>
<span class="line"><span>|2020-01-05T00:00:04.000+08:00| 64.2|</span></span>
<span class="line"><span>|2020-01-05T00:00:05.000+08:00| 62.3|</span></span>
<span class="line"><span>|2020-01-05T00:00:06.000+08:00| 58.0|</span></span>
<span class="line"><span>|2020-01-05T00:00:07.000+08:00| 58.9|</span></span>
<span class="line"><span>|2020-01-05T00:00:08.000+08:00| 52.0|</span></span>
<span class="line"><span>|2020-01-05T00:00:09.000+08:00| 62.3|</span></span>
<span class="line"><span>|2020-01-05T00:00:10.000+08:00| 61.0|</span></span>
<span class="line"><span>|2020-01-05T00:00:11.000+08:00| 64.2|</span></span>
<span class="line"><span>|2020-01-05T00:00:12.000+08:00| 61.8|</span></span>
<span class="line"><span>|2020-01-05T00:00:13.000+08:00| 64.0|</span></span>
<span class="line"><span>|2020-01-05T00:00:14.000+08:00| 63.0|</span></span>
<span class="line"><span>+-----------------------------+------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> outlier(s1,</span><span style="color:#98C379;">&quot;r&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;5.0&quot;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&quot;k&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;4&quot;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&quot;w&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;10&quot;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&quot;s&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;5&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------------------------------+</span></span>
<span class="line"><span>| Time|outlier(root.test.s1,&quot;r&quot;=&quot;5.0&quot;,&quot;k&quot;=&quot;4&quot;,&quot;w&quot;=&quot;10&quot;,&quot;s&quot;=&quot;5&quot;)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-05T00:00:03.000+08:00| 69.0|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-05T00:00:08.000+08:00| 52.0|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="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="_5-频域分析" tabindex="-1"><a class="header-anchor" href="#_5-频域分析"><span>5. 频域分析</span></a></h2><h3 id="_5-1-conv" tabindex="-1"><a class="header-anchor" href="#_5-1-conv"><span>5.1 Conv</span></a></h3><h4 id="注册语句-32" tabindex="-1"><a class="header-anchor" href="#注册语句-32"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> conv</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.frequency.UDTFConv&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-32" tabindex="-1"><a class="header-anchor" href="#函数简介-32"><span>函数简介</span></a></h4><p>本函数对两个输入序列进行卷积,即多项式乘法。</p><p><strong>函数名:</strong> CONV</p><p><strong>输入序列:</strong> 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,它是两个序列卷积的结果。序列的时间戳从0开始,仅用于表示顺序。</p><p><strong>提示:</strong> 输入序列中的<code>NaN</code>将被忽略。</p><h4 id="使用示例-32" tabindex="-1"><a class="header-anchor" href="#使用示例-32"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s1|root.test.d2.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 1.0| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 0.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 1.0| null|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> conv(s1,s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------------+</span></span>
<span class="line"><span>| Time|conv(root.test.d2.s1, root.test.d2.s2)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 2.0|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_5-2-deconv" tabindex="-1"><a class="header-anchor" href="#_5-2-deconv"><span>5.2 Deconv</span></a></h3><h4 id="注册语句-33" tabindex="-1"><a class="header-anchor" href="#注册语句-33"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> deconv</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.frequency.UDTFDeconv&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-33" tabindex="-1"><a class="header-anchor" href="#函数简介-33"><span>函数简介</span></a></h4><p>本函数对两个输入序列进行去卷积,即多项式除法运算。</p><p><strong>函数名:</strong> DECONV</p><p><strong>输入序列:</strong> 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>result</code>:去卷积的结果,取值为&#39;quotient&#39;或&#39;remainder&#39;,分别对应于去卷积的商和余数。在缺省情况下,输出去卷积的商。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE。它是将第二个序列从第一个序列中去卷积(第一个序列除以第二个序列)的结果。序列的时间戳从0开始,仅用于表示顺序。</p><p><strong>提示:</strong> 输入序列中的<code>NaN</code>将被忽略。</p><h4 id="使用示例-33" tabindex="-1"><a class="header-anchor" href="#使用示例-33"><span>使用示例</span></a></h4><h5 id="计算去卷积的商" tabindex="-1"><a class="header-anchor" href="#计算去卷积的商"><span>计算去卷积的商</span></a></h5><p><code>result</code>参数缺省或为&#39;quotient&#39;时,本函数计算去卷积的商。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s3|root.test.d2.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 8.0| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 2.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 7.0| null|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 2.0| null|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> deconv(s3,s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------------------------+</span></span>
<span class="line"><span>| Time|deconv(root.test.d2.s3, root.test.d2.s2)|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 1.0|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="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><h5 id="计算去卷积的余数" tabindex="-1"><a class="header-anchor" href="#计算去卷积的余数"><span>计算去卷积的余数</span></a></h5><p><code>result</code>参数为&#39;remainder&#39;时,本函数计算去卷积的余数。输入序列同上,用于查询的SQL语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> deconv(s3,s2,</span><span style="color:#98C379;">&#39;result&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;remainder&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------------------------------------+</span></span>
<span class="line"><span>| Time|deconv(root.test.d2.s3, root.test.d2.s2, &quot;result&quot;=&quot;remainder&quot;)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_5-3-dwt" tabindex="-1"><a class="header-anchor" href="#_5-3-dwt"><span>5.3 DWT</span></a></h3><h4 id="注册语句-34" tabindex="-1"><a class="header-anchor" href="#注册语句-34"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> dwt</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.frequency.UDTFDWT&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-34" tabindex="-1"><a class="header-anchor" href="#函数简介-34"><span>函数简介</span></a></h4><p>本函数对输入序列进行一维离散小波变换。</p><p><strong>函数名:</strong> DWT</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>method</code>:小波滤波的类型,提供&#39;Haar&#39;, &#39;DB4&#39;, &#39;DB6&#39;, &#39;DB8&#39;,其中DB指代Daubechies。若不设置该参数,则用户需提供小波滤波的系数。不区分大小写。</li><li><code>coef</code>:小波滤波的系数。若提供该参数,请使用英文逗号&#39;,&#39;分割各项,不添加空格或其它符号。</li><li><code>layer</code>:进行变换的次数,最终输出的向量个数等同于<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>l</mi><mi>a</mi><mi>y</mi><mi>e</mi><mi>r</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">layer+1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.02778em;">yer</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>.默认取1。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,长度与输入相等。</p><p><strong>提示:</strong> 输入序列长度必须为2的整数次幂。</p><h4 id="使用示例-34" tabindex="-1"><a class="header-anchor" href="#使用示例-34"><span>使用示例</span></a></h4><h5 id="haar变换" tabindex="-1"><a class="header-anchor" href="#haar变换"><span>Haar变换</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 1.5|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 0.6|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 1.7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.5|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 2.1|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 1.8|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| 1.2|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 1.6|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> dwt(s1,</span><span style="color:#98C379;">&quot;method&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;haar&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------------------+</span></span>
<span class="line"><span>| Time|dwt(root.test.d1.s1, &quot;method&quot;=&quot;haar&quot;)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.14142135834465192|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 1.909188342921157|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 1.6263456473052773|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.9798989957517026|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 3.252691126023161|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 1.414213562373095|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 2.1213203435596424|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 1.8384776479437628|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| -0.14142135834465192|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.21213200063848547|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| -0.7778174761639416|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| -0.8485281289944873|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 0.2828427799095765|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.414213562373095|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 0.42426400127697095|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| -0.42426408557066786|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_5-4-idwt" tabindex="-1"><a class="header-anchor" href="#_5-4-idwt"><span>5.4 IDWT</span></a></h3><h4 id="注册语句-35" tabindex="-1"><a class="header-anchor" href="#注册语句-35"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> idwt</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.frequency.UDTFIDWT&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-35" tabindex="-1"><a class="header-anchor" href="#函数简介-35"><span>函数简介</span></a></h4><p>本函数对输入序列进行一维离散小波逆变换,将 DWT 分解后的小波系数还原为原始数据。</p><p><strong>函数名:</strong> IDWT</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>method</code>:小波滤波的类型,提供&#39;Haar&#39;, &#39;DB4&#39;, &#39;DB6&#39;, &#39;DB8&#39;,其中DB指代Daubechies。若不设置该参数,则用户需提供小波滤波的系数。不区分大小写。</li><li><code>coef</code>:小波滤波的系数。若提供该参数,请使用英文逗号&#39;,&#39;分割各项,不添加空格或其它符号。</li><li><code>layer</code>:进行变换的次数,最终输出的向量个数等同于<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>l</mi><mi>a</mi><mi>y</mi><mi>e</mi><mi>r</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">layer+1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.02778em;">yer</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>.默认取1。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,长度与输入相等。</p><p><strong>提示:</strong></p><ul><li>输入序列长度必须为2的整数次幂。</li><li>IDWT 函数的参数设置(method/coef/layer)应与对应 DWT 变换时保持一致,才能正确还原原始数据。</li><li>通常 IDWT 的输入为 DWT 函数的输出结果。</li></ul><h4 id="使用示例-35" tabindex="-1"><a class="header-anchor" href="#使用示例-35"><span>使用示例</span></a></h4><h5 id="haar变换-1" tabindex="-1"><a class="header-anchor" href="#haar变换-1"><span>Haar变换</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>| Time| root.test.d1.s2|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.1414213562373095|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 1.909188309203678|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 1.6263455967290592|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.979898987322333|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 3.2526911934581184|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 1.414213562373095|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 2.1213203435596424|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 1.8384776310850235|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| -0.1414213562373095|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 0.21213203435596428|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| -0.7778174593052022|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| -0.8485281374238569|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 0.2828427124746189|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| -1.414213562373095|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 0.42426406871192857|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00|-0.42426406871192857|</span></span>
<span class="line"><span>+-----------------------------+--------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> idwt(s2,</span><span style="color:#98C379;">&quot;method&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;haar&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------------+</span></span>
<span class="line"><span>| Time|idwt(root.test.d1.s2, &quot;method&quot;=&quot;haar&quot;)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.100+08:00| 0.19999999999999998|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.200+08:00| 1.4999999999999996|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.300+08:00| 1.1999999999999997|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.400+08:00| 0.6|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.500+08:00| 1.6999999999999997|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.600+08:00| 0.7999999999999998|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.700+08:00| 1.9999999999999996|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.800+08:00| 2.4999999999999996|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.900+08:00| 2.1|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.100+08:00| 1.9999999999999996|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.200+08:00| 1.7999999999999998|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.300+08:00| 1.1999999999999997|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.400+08:00| 0.9999999999999998|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.500+08:00| 1.5999999999999999|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_5-5-fft" tabindex="-1"><a class="header-anchor" href="#_5-5-fft"><span>5.5 FFT</span></a></h3><h4 id="注册语句-36" tabindex="-1"><a class="header-anchor" href="#注册语句-36"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> fft</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.frequency.UDTFFFT&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-36" tabindex="-1"><a class="header-anchor" href="#函数简介-36"><span>函数简介</span></a></h4><p>本函数对输入序列进行快速傅里叶变换。</p><p><strong>函数名:</strong> FFT</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>method</code>:傅里叶变换的类型,取值为&#39;uniform&#39;或&#39;nonuniform&#39;,缺省情况下为&#39;uniform&#39;。当取值为&#39;uniform&#39;时,时间戳将被忽略,所有数据点都将被视作等距的,并应用等距快速傅里叶算法;当取值为&#39;nonuniform&#39;时,将根据时间戳应用非等距快速傅里叶算法(未实现)。</li><li><code>result</code>:傅里叶变换的结果,取值为&#39;real&#39;、&#39;imag&#39;、&#39;abs&#39;或&#39;angle&#39;,分别对应于变换结果的实部、虚部、模和幅角。在缺省情况下,输出变换的模。</li><li><code>compress</code>:压缩参数,取值范围(0,1],是有损压缩时保留的能量比例。在缺省情况下,不进行压缩。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,长度与输入相等。序列的时间戳从0开始,仅用于表示顺序。</p><p><strong>提示:</strong> 输入序列中的<code>NaN</code>将被忽略。</p><h4 id="使用示例-36" tabindex="-1"><a class="header-anchor" href="#使用示例-36"><span>使用示例</span></a></h4><h5 id="等距傅里叶变换" tabindex="-1"><a class="header-anchor" href="#等距傅里叶变换"><span>等距傅里叶变换</span></a></h5><p><code>type</code>参数缺省或为&#39;uniform&#39;时,本函数进行等距傅里叶变换。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 2.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| -2.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| -1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:04.000+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:05.000+08:00| 1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:06.000+08:00| 0.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:07.000+08:00| -1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:08.000+08:00| -0.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:09.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:10.000+08:00| 0.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:11.000+08:00| 1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:12.000+08:00| -0.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:13.000+08:00| -1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:14.000+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:15.000+08:00| 1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:16.000+08:00| 2.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:17.000+08:00| -1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:18.000+08:00| -2.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:19.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> fft(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------+</span></span>
<span class="line"><span>| Time| fft(root.test.d1.s1)|</span></span>
<span class="line"><span>+-----------------------------+----------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 1.2727111142703152E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 2.385520799101839E-7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 8.723291723972645E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 19.999999960195904|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 9.999999850988388|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.006+08:00| 3.2260694930700566E-7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.007+08:00| 8.723291605373329E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.008+08:00| 1.108657103979944E-7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.009+08:00| 1.2727110997246171E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.010+08:00|1.9852334701272664E-23|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.011+08:00| 1.2727111194499847E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.012+08:00| 1.108657103979944E-7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.013+08:00| 8.723291785769131E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.014+08:00| 3.226069493070057E-7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.015+08:00| 9.999999850988388|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.016+08:00| 19.999999960195904|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.017+08:00| 8.723291747109068E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.018+08:00| 2.3855207991018386E-7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.019+08:00| 1.2727112069910878E-8|</span></span>
<span class="line"><span>+-----------------------------+----------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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>注:输入序列服从<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mi>t</mi><mi mathvariant="normal">/</mi><mn>4</mn><mo stretchy="false">)</mo><mo>+</mo><mn>2</mn><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mi>t</mi><mi mathvariant="normal">/</mi><mn>5</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">y=sin(2\pi t/4)+2sin(2\pi t/5)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">in</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span><span class="mord mathnormal">t</span><span class="mord">/4</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord mathnormal">s</span><span class="mord mathnormal">in</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span><span class="mord mathnormal">t</span><span class="mord">/5</span><span class="mclose">)</span></span></span></span>,长度为20,因此在输出序列中<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>=</mo><mn>4</mn></mrow><annotation encoding="application/x-tex">k=4</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">4</span></span></span></span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>=</mo><mn>5</mn></mrow><annotation encoding="application/x-tex">k=5</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">5</span></span></span></span>处有尖峰。</p><h5 id="等距傅里叶变换并压缩" tabindex="-1"><a class="header-anchor" href="#等距傅里叶变换并压缩"><span>等距傅里叶变换并压缩</span></a></h5><p>输入序列同上,用于查询的SQL语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> fft(s1, </span><span style="color:#98C379;">&#39;result&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;real&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&#39;compress&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;0.99&#39;</span><span style="color:#ABB2BF;">), fft(s1, </span><span style="color:#98C379;">&#39;result&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;imag&#39;</span><span style="color:#ABB2BF;">,</span><span style="color:#98C379;">&#39;compress&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;0.99&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------+----------------------+</span></span>
<span class="line"><span>| Time| fft(root.test.d1.s1,| fft(root.test.d1.s1,|</span></span>
<span class="line"><span>| | &quot;result&quot;=&quot;real&quot;,| &quot;result&quot;=&quot;imag&quot;,|</span></span>
<span class="line"><span>| | &quot;compress&quot;=&quot;0.99&quot;)| &quot;compress&quot;=&quot;0.99&quot;)|</span></span>
<span class="line"><span>+-----------------------------+----------------------+----------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| -3.932894010461041E-9| 1.2104201863039066E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00|-1.4021739447490164E-7| 1.9299268669082926E-7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| -7.057291240286645E-8| 5.127422242345858E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 19.021130288047125| -6.180339875198807|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 9.999999850988388| 3.501852745067114E-16|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.019+08:00| -3.932894898639461E-9|-1.2104202549376264E-8|</span></span>
<span class="line"><span>+-----------------------------+----------------------+----------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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>注:基于傅里叶变换结果的共轭性质,压缩结果只保留前一半;根据给定的压缩参数,从低频到高频保留数据点,直到保留的能量比例超过该值;保留最后一个数据点以表示序列长度。</p><h3 id="_5-6-highpass" tabindex="-1"><a class="header-anchor" href="#_5-6-highpass"><span>5.6 HighPass</span></a></h3><h4 id="注册语句-37" tabindex="-1"><a class="header-anchor" href="#注册语句-37"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> highpass</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.frequency.UDTFHighPass&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-37" tabindex="-1"><a class="header-anchor" href="#函数简介-37"><span>函数简介</span></a></h4><p>本函数对输入序列进行高通滤波,提取高于截止频率的分量。输入序列的时间戳将被忽略,所有数据点都将被视作等距的。</p><p><strong>函数名:</strong> HIGHPASS</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>wpass</code>:归一化后的截止频率,取值为(0,1),不可缺省。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,它是滤波后的序列,长度与时间戳均与输入一致。</p><p><strong>提示:</strong> 输入序列中的<code>NaN</code>将被忽略。</p><h4 id="使用示例-37" tabindex="-1"><a class="header-anchor" href="#使用示例-37"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 2.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| -2.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| -1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:04.000+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:05.000+08:00| 1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:06.000+08:00| 0.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:07.000+08:00| -1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:08.000+08:00| -0.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:09.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:10.000+08:00| 0.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:11.000+08:00| 1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:12.000+08:00| -0.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:13.000+08:00| -1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:14.000+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:15.000+08:00| 1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:16.000+08:00| 2.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:17.000+08:00| -1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:18.000+08:00| -2.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:19.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> highpass(s1,</span><span style="color:#98C379;">&#39;wpass&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;0.45&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------------------------------+</span></span>
<span class="line"><span>| Time|highpass(root.test.d1.s1, &quot;wpass&quot;=&quot;0.45&quot;)|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.9999999534830373|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 1.7462829277628608E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| -0.9999999593178128|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| -4.1115269056426626E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:04.000+08:00| 0.9999999925494194|</span></span>
<span class="line"><span>|1970-01-01T08:00:05.000+08:00| 3.328126513330016E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:06.000+08:00| -1.0000000183304454|</span></span>
<span class="line"><span>|1970-01-01T08:00:07.000+08:00| 6.260191433311374E-10|</span></span>
<span class="line"><span>|1970-01-01T08:00:08.000+08:00| 1.0000000018134796|</span></span>
<span class="line"><span>|1970-01-01T08:00:09.000+08:00| -3.097210911744423E-17|</span></span>
<span class="line"><span>|1970-01-01T08:00:10.000+08:00| -1.0000000018134794|</span></span>
<span class="line"><span>|1970-01-01T08:00:11.000+08:00| -6.260191627862097E-10|</span></span>
<span class="line"><span>|1970-01-01T08:00:12.000+08:00| 1.0000000183304454|</span></span>
<span class="line"><span>|1970-01-01T08:00:13.000+08:00| -3.328126501424346E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:14.000+08:00| -0.9999999925494196|</span></span>
<span class="line"><span>|1970-01-01T08:00:15.000+08:00| 4.111526915498874E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:16.000+08:00| 0.9999999593178128|</span></span>
<span class="line"><span>|1970-01-01T08:00:17.000+08:00| -1.7462829341296528E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:18.000+08:00| -0.9999999534830369|</span></span>
<span class="line"><span>|1970-01-01T08:00:19.000+08:00| -1.035237222742873E-16|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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>注:输入序列服从<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mi>t</mi><mi mathvariant="normal">/</mi><mn>4</mn><mo stretchy="false">)</mo><mo>+</mo><mn>2</mn><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mi>t</mi><mi mathvariant="normal">/</mi><mn>5</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">y=sin(2\pi t/4)+2sin(2\pi t/5)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">in</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span><span class="mord mathnormal">t</span><span class="mord">/4</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord mathnormal">s</span><span class="mord mathnormal">in</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span><span class="mord mathnormal">t</span><span class="mord">/5</span><span class="mclose">)</span></span></span></span>,长度为20,因此高通滤波之后的输出序列服从<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mi>t</mi><mi mathvariant="normal">/</mi><mn>4</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">y=sin(2\pi t/4)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">in</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span><span class="mord mathnormal">t</span><span class="mord">/4</span><span class="mclose">)</span></span></span></span></p><h3 id="_5-7-ifft" tabindex="-1"><a class="header-anchor" href="#_5-7-ifft"><span>5.7 IFFT</span></a></h3><h4 id="注册语句-38" tabindex="-1"><a class="header-anchor" href="#注册语句-38"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> ifft</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.frequency.UDTFIFFT&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-38" tabindex="-1"><a class="header-anchor" href="#函数简介-38"><span>函数简介</span></a></h4><p>本函数将输入的两个序列作为实部和虚部视作一个复数,进行逆快速傅里叶变换,并输出结果的实部。输入数据的格式参见<code>FFT</code>函数的输出,并支持以<code>FFT</code>函数压缩后的输出作为本函数的输入。</p><p><strong>函数名:</strong> IFFT</p><p><strong>输入序列:</strong> 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>start</code>:输出序列的起始时刻,是一个格式为&#39;yyyy-MM-dd HH:mm:ss&#39;的时间字符串。在缺省情况下,为&#39;1970-01-01 08:00:00&#39;。</li><li><code>interval</code>:输出序列的时间间隔,是一个有单位的正数。目前支持五种单位,分别是&#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。在缺省情况下,为1s。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE。该序列是一个等距时间序列,它的值是将两个输入序列依次作为实部和虚部进行逆快速傅里叶变换的结果。</p><p><strong>提示:</strong> 如果某行数据中包含空值或<code>NaN</code>,该行数据将会被忽略。</p><h4 id="使用示例-38" tabindex="-1"><a class="header-anchor" href="#使用示例-38"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------+----------------------+</span></span>
<span class="line"><span>| Time| root.test.d1.re| root.test.d1.im|</span></span>
<span class="line"><span>+-----------------------------+----------------------+----------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| -3.932894010461041E-9| 1.2104201863039066E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00|-1.4021739447490164E-7| 1.9299268669082926E-7|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| -7.057291240286645E-8| 5.127422242345858E-8|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 19.021130288047125| -6.180339875198807|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 9.999999850988388| 3.501852745067114E-16|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.019+08:00| -3.932894898639461E-9|-1.2104202549376264E-8|</span></span>
<span class="line"><span>+-----------------------------+----------------------+----------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> ifft(re, im, </span><span style="color:#98C379;">&#39;interval&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;1m&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&#39;start&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;2021-01-01 00:00:00&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------------------------------------+</span></span>
<span class="line"><span>| Time|ifft(root.test.d1.re, root.test.d1.im, &quot;interval&quot;=&quot;1m&quot;,|</span></span>
<span class="line"><span>| | &quot;start&quot;=&quot;2021-01-01 00:00:00&quot;)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------------------------+</span></span>
<span class="line"><span>|2021-01-01T00:00:00.000+08:00| 2.902112992431231|</span></span>
<span class="line"><span>|2021-01-01T00:01:00.000+08:00| 1.1755704705132448|</span></span>
<span class="line"><span>|2021-01-01T00:02:00.000+08:00| -2.175570513757101|</span></span>
<span class="line"><span>|2021-01-01T00:03:00.000+08:00| -1.9021130389094498|</span></span>
<span class="line"><span>|2021-01-01T00:04:00.000+08:00| 0.9999999925494194|</span></span>
<span class="line"><span>|2021-01-01T00:05:00.000+08:00| 1.902113046743454|</span></span>
<span class="line"><span>|2021-01-01T00:06:00.000+08:00| 0.17557053610884188|</span></span>
<span class="line"><span>|2021-01-01T00:07:00.000+08:00| -1.1755704886020932|</span></span>
<span class="line"><span>|2021-01-01T00:08:00.000+08:00| -0.9021130371347148|</span></span>
<span class="line"><span>|2021-01-01T00:09:00.000+08:00| 3.552713678800501E-16|</span></span>
<span class="line"><span>|2021-01-01T00:10:00.000+08:00| 0.9021130371347154|</span></span>
<span class="line"><span>|2021-01-01T00:11:00.000+08:00| 1.1755704886020932|</span></span>
<span class="line"><span>|2021-01-01T00:12:00.000+08:00| -0.17557053610884144|</span></span>
<span class="line"><span>|2021-01-01T00:13:00.000+08:00| -1.902113046743454|</span></span>
<span class="line"><span>|2021-01-01T00:14:00.000+08:00| -0.9999999925494196|</span></span>
<span class="line"><span>|2021-01-01T00:15:00.000+08:00| 1.9021130389094498|</span></span>
<span class="line"><span>|2021-01-01T00:16:00.000+08:00| 2.1755705137571004|</span></span>
<span class="line"><span>|2021-01-01T00:17:00.000+08:00| -1.1755704705132448|</span></span>
<span class="line"><span>|2021-01-01T00:18:00.000+08:00| -2.902112992431231|</span></span>
<span class="line"><span>|2021-01-01T00:19:00.000+08:00| -3.552713678800501E-16|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_5-8-lowpass" tabindex="-1"><a class="header-anchor" href="#_5-8-lowpass"><span>5.8 LowPass</span></a></h3><h4 id="注册语句-39" tabindex="-1"><a class="header-anchor" href="#注册语句-39"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> lowpass</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.frequency.UDTFLowPass&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-39" tabindex="-1"><a class="header-anchor" href="#函数简介-39"><span>函数简介</span></a></h4><p>本函数对输入序列进行低通滤波,提取低于截止频率的分量。输入序列的时间戳将被忽略,所有数据点都将被视作等距的。</p><p><strong>函数名:</strong> LOWPASS</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>wpass</code>:归一化后的截止频率,取值为(0,1),不可缺省。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为DOUBLE,它是滤波后的序列,长度与时间戳均与输入一致。</p><p><strong>提示:</strong> 输入序列中的<code>NaN</code>将被忽略。</p><h4 id="使用示例-39" tabindex="-1"><a class="header-anchor" href="#使用示例-39"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 2.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| -2.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| -1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:04.000+08:00| 1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:05.000+08:00| 1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:06.000+08:00| 0.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:07.000+08:00| -1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:08.000+08:00| -0.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:09.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:10.000+08:00| 0.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:11.000+08:00| 1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:12.000+08:00| -0.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:13.000+08:00| -1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:14.000+08:00| -1.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:15.000+08:00| 1.9021131|</span></span>
<span class="line"><span>|1970-01-01T08:00:16.000+08:00| 2.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:17.000+08:00| -1.1755705|</span></span>
<span class="line"><span>|1970-01-01T08:00:18.000+08:00| -2.902113|</span></span>
<span class="line"><span>|1970-01-01T08:00:19.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> lowpass(s1,</span><span style="color:#98C379;">&#39;wpass&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;0.45&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------------------------+</span></span>
<span class="line"><span>| Time|lowpass(root.test.d1.s1, &quot;wpass&quot;=&quot;0.45&quot;)|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 1.9021130073323922|</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 1.1755704705132448|</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| -1.1755705286582614|</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| -1.9021130389094498|</span></span>
<span class="line"><span>|1970-01-01T08:00:04.000+08:00| 7.450580419288145E-9|</span></span>
<span class="line"><span>|1970-01-01T08:00:05.000+08:00| 1.902113046743454|</span></span>
<span class="line"><span>|1970-01-01T08:00:06.000+08:00| 1.1755705212076808|</span></span>
<span class="line"><span>|1970-01-01T08:00:07.000+08:00| -1.1755704886020932|</span></span>
<span class="line"><span>|1970-01-01T08:00:08.000+08:00| -1.9021130222335536|</span></span>
<span class="line"><span>|1970-01-01T08:00:09.000+08:00| 3.552713678800501E-16|</span></span>
<span class="line"><span>|1970-01-01T08:00:10.000+08:00| 1.9021130222335536|</span></span>
<span class="line"><span>|1970-01-01T08:00:11.000+08:00| 1.1755704886020932|</span></span>
<span class="line"><span>|1970-01-01T08:00:12.000+08:00| -1.1755705212076801|</span></span>
<span class="line"><span>|1970-01-01T08:00:13.000+08:00| -1.902113046743454|</span></span>
<span class="line"><span>|1970-01-01T08:00:14.000+08:00| -7.45058112983088E-9|</span></span>
<span class="line"><span>|1970-01-01T08:00:15.000+08:00| 1.9021130389094498|</span></span>
<span class="line"><span>|1970-01-01T08:00:16.000+08:00| 1.1755705286582616|</span></span>
<span class="line"><span>|1970-01-01T08:00:17.000+08:00| -1.1755704705132448|</span></span>
<span class="line"><span>|1970-01-01T08:00:18.000+08:00| -1.9021130073323924|</span></span>
<span class="line"><span>|1970-01-01T08:00:19.000+08:00| -2.664535259100376E-16|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_5-9-envelope" tabindex="-1"><a class="header-anchor" href="#_5-9-envelope"><span>5.9 Envelope</span></a></h3><h4 id="函数简介-40" tabindex="-1"><a class="header-anchor" href="#函数简介-40"><span>函数简介</span></a></h4><p>本函数通过输入一维浮点数数组和用户指定的调制频率,实现对信号的解调和包络提取。解调的目标是从复杂的信号中提取感兴趣的部分,使其更易理解。比如通过解调可以找到信号的包络,即振幅的变化趋势。</p><p><strong>函数名:</strong> Envelope</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>frequency</code>:频率(选填,正数。不填此参数,系统会基于序列对应时间的时间间隔来推断频率)。</li><li><code>amplification</code>: 扩增倍数(选填,正整数。输出Time列的结果为正整数的集合,不会输出小数。当频率小1时,可通过此参数对频率进行扩增以展示正常的结果)。</li></ul><p><strong>输出序列:</strong></p><ul><li><code>Time</code>: 该列返回的值的含义是频率而并非时间,如果输出的格式为时间格式(如:1970-01-01T08:00:19.000+08:00),请将其转为时间戳值。</li><li><code>Envelope(Path, &#39;frequency&#39;=&#39;{frequency}&#39;)</code>:输出单个序列,类型为DOUBLE,它是包络分析之后的结果。</li></ul><p><strong>提示:</strong> 当解调的原始序列的值不连续时,本函数会视为连续处理,建议被分析的时间序列是一段值完整的时间序列。同时建议指定开始时间与结束时间。</p><h4 id="使用示例-40" tabindex="-1"><a class="header-anchor" href="#使用示例-40"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:01.000+08:00| 1.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:02.000+08:00| 2.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:03.000+08:00| 3.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:04.000+08:00| 4.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:05.000+08:00| 5.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:06.000+08:00| 6.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:07.000+08:00| 7.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:08.000+08:00| 8.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:09.000+08:00| 9.0 |</span></span>
<span class="line"><span>|1970-01-01T08:00:10.000+08:00| 10.0 |</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">set</span><span style="color:#ABB2BF;"> time_display_type</span><span style="color:#56B6C2;">=</span><span style="color:#ABB2BF;">long;</span></span>
<span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> envelope(s1),envelope(s1,</span><span style="color:#98C379;">&#39;frequency&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;1000&#39;</span><span style="color:#ABB2BF;">),envelope(s1,</span><span style="color:#98C379;">&#39;amplification&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;10&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+----+-------------------------+---------------------------------------------+-----------------------------------------------+</span></span>
<span class="line"><span>|Time|envelope(root.test.d1.s1)|envelope(root.test.d1.s1, &quot;frequency&quot;=&quot;1000&quot;)|envelope(root.test.d1.s1, &quot;amplification&quot;=&quot;10&quot;)|</span></span>
<span class="line"><span>+----+-------------------------+---------------------------------------------+-----------------------------------------------+</span></span>
<span class="line"><span>| 0| 6.284350808484124| 6.284350808484124| 6.284350808484124|</span></span>
<span class="line"><span>| 100| 1.5581923657404393| 1.5581923657404393| null|</span></span>
<span class="line"><span>| 200| 0.8503211038340728| 0.8503211038340728| null|</span></span>
<span class="line"><span>| 300| 0.512808785945551| 0.512808785945551| null|</span></span>
<span class="line"><span>| 400| 0.26361156774506744| 0.26361156774506744| null|</span></span>
<span class="line"><span>|1000| null| null| 1.5581923657404393|</span></span>
<span class="line"><span>|2000| null| null| 0.8503211038340728|</span></span>
<span class="line"><span>|3000| null| null| 0.512808785945551|</span></span>
<span class="line"><span>|4000| null| null| 0.26361156774506744|</span></span>
<span class="line"><span>+----+-------------------------+---------------------------------------------+-----------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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>注:输入序列服从<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mi>t</mi><mi mathvariant="normal">/</mi><mn>4</mn><mo stretchy="false">)</mo><mo>+</mo><mn>2</mn><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mi>t</mi><mi mathvariant="normal">/</mi><mn>5</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">y=sin(2\pi t/4)+2sin(2\pi t/5)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">in</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span><span class="mord mathnormal">t</span><span class="mord">/4</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord mathnormal">s</span><span class="mord mathnormal">in</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span><span class="mord mathnormal">t</span><span class="mord">/5</span><span class="mclose">)</span></span></span></span>,长度为20,因此低通滤波之后的输出序列服从<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mn>2</mn><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>2</mn><mi>π</mi><mi>t</mi><mi mathvariant="normal">/</mi><mn>5</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">y=2sin(2\pi t/5)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord mathnormal">s</span><span class="mord mathnormal">in</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span><span class="mord mathnormal">t</span><span class="mord">/5</span><span class="mclose">)</span></span></span></span></p><h2 id="_6-数据匹配" tabindex="-1"><a class="header-anchor" href="#_6-数据匹配"><span>6. 数据匹配</span></a></h2><h3 id="_6-1-cov" tabindex="-1"><a class="header-anchor" href="#_6-1-cov"><span>6.1 Cov</span></a></h3><h4 id="注册语句-40" tabindex="-1"><a class="header-anchor" href="#注册语句-40"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> cov</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dmatch.UDAFCov&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-41" tabindex="-1"><a class="header-anchor" href="#函数简介-41"><span>函数简介</span></a></h4><p>本函数用于计算两列数值型数据的总体协方差。</p><p><strong>函数名:</strong> COV</p><p><strong>输入序列:</strong> 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。序列仅包含一个时间戳为 0、值为总体协方差的数据点。</p><p><strong>提示:</strong></p><ul><li>如果某行数据中包含空值、缺失值或<code>NaN</code>,该行数据将会被忽略;</li><li>如果数据中所有的行都被忽略,函数将会输出<code>NaN</code></li></ul><h4 id="使用示例-41" tabindex="-1"><a class="header-anchor" href="#使用示例-41"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s1|root.test.d2.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0| null|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0| 103.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:12.000+08:00| null| 103.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0| null|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0| 105.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0| 105.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 100.0| 106.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN| 108.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> cov(s1,s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------------------+</span></span>
<span class="line"><span>| Time|cov(root.test.d2.s1, root.test.d2.s2)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 12.291666666666666|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_6-2-dtw" tabindex="-1"><a class="header-anchor" href="#_6-2-dtw"><span>6.2 Dtw</span></a></h3><h4 id="注册语句-41" tabindex="-1"><a class="header-anchor" href="#注册语句-41"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> dtw</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dmatch.UDAFDtw&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-42" tabindex="-1"><a class="header-anchor" href="#函数简介-42"><span>函数简介</span></a></h4><p>本函数用于计算两列数值型数据的 DTW 距离。</p><p><strong>函数名:</strong> DTW</p><p><strong>输入序列:</strong> 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。序列仅包含一个时间戳为 0、值为两个时间序列的 DTW 距离值。</p><p><strong>提示:</strong></p><ul><li>如果某行数据中包含空值、缺失值或<code>NaN</code>,该行数据将会被忽略;</li><li>如果数据中所有的行都被忽略,函数将会输出 0。</li></ul><h4 id="使用示例-42" tabindex="-1"><a class="header-anchor" href="#使用示例-42"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s1|root.test.d2.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.006+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.007+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.008+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.009+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.010+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.011+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.012+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.013+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.014+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.015+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.016+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.017+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.018+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.019+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.020+08:00| 1.0| 2.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> dtw(s1,s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------------------+</span></span>
<span class="line"><span>| Time|dtw(root.test.d2.s1, root.test.d2.s2)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 20.0|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_6-3-pearson" tabindex="-1"><a class="header-anchor" href="#_6-3-pearson"><span>6.3 Pearson</span></a></h3><h4 id="注册语句-42" tabindex="-1"><a class="header-anchor" href="#注册语句-42"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> pearson</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dmatch.UDAFPearson&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-43" tabindex="-1"><a class="header-anchor" href="#函数简介-43"><span>函数简介</span></a></h4><p>本函数用于计算两列数值型数据的皮尔森相关系数。</p><p><strong>函数名:</strong> PEARSON</p><p><strong>输入序列:</strong> 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。序列仅包含一个时间戳为 0、值为皮尔森相关系数的数据点。</p><p><strong>提示:</strong></p><ul><li>如果某行数据中包含空值、缺失值或<code>NaN</code>,该行数据将会被忽略;</li><li>如果数据中所有的行都被忽略,函数将会输出<code>NaN</code></li></ul><h4 id="使用示例-43" tabindex="-1"><a class="header-anchor" href="#使用示例-43"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s1|root.test.d2.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0| null|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0| 103.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:12.000+08:00| null| 103.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0| null|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0| 105.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0| 105.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 100.0| 106.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN| 108.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> pearson(s1,s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------------------------------+</span></span>
<span class="line"><span>| Time|pearson(root.test.d2.s1, root.test.d2.s2)|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.5630881927754872|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_6-4-ptnsym" tabindex="-1"><a class="header-anchor" href="#_6-4-ptnsym"><span>6.4 PtnSym</span></a></h3><h4 id="注册语句-43" tabindex="-1"><a class="header-anchor" href="#注册语句-43"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> ptnsym</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dmatch.UDTFPtnSym&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-44" tabindex="-1"><a class="header-anchor" href="#函数简介-44"><span>函数简介</span></a></h4><p>本函数用于寻找序列中所有对称度小于阈值的对称子序列。对称度通过 DTW 计算,值越小代表序列对称性越高。</p><p><strong>函数名:</strong> PTNSYM</p><p><strong>输入序列:</strong> 仅支持一个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>window</code>:对称子序列的长度,是一个正整数,默认值为 10。</li><li><code>threshold</code>:对称度阈值,是一个非负数,只有对称度小于等于该值的对称子序列才会被输出。在缺省情况下,所有的子序列都会被输出。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。序列中的每一个数据点对应于一个对称子序列,时间戳为子序列的起始时刻,值为对称度。</p><h4 id="使用示例-44" tabindex="-1"><a class="header-anchor" href="#使用示例-44"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s4|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2021-01-01T12:00:00.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:01.000+08:00| 2.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:02.000+08:00| 3.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:03.000+08:00| 2.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:04.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:05.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:06.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:07.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:08.000+08:00| 2.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:09.000+08:00| 3.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:10.000+08:00| 2.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:11.000+08:00| 1.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> ptnsym(s4, </span><span style="color:#98C379;">&#39;window&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;5&#39;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&#39;threshold&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;0&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>| Time|ptnsym(root.test.d1.s4, &quot;window&quot;=&quot;5&quot;, &quot;threshold&quot;=&quot;0&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>|2021-01-01T12:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>|2021-01-01T12:00:07.000+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="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="_6-5-xcorr" tabindex="-1"><a class="header-anchor" href="#_6-5-xcorr"><span>6.5 XCorr</span></a></h3><h4 id="注册语句-44" tabindex="-1"><a class="header-anchor" href="#注册语句-44"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> xcorr</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dmatch.UDTFXCorr&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-45" tabindex="-1"><a class="header-anchor" href="#函数简介-45"><span>函数简介</span></a></h4><p>本函数用于计算两条时间序列的互相关函数值,<br> 对离散序列而言,互相关函数可以表示为</p><p class="katex-block"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>C</mi><mi>R</mi><mo stretchy="false">(</mo><mi>n</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mi>N</mi></mfrac><mo></mo><mi mathvariant="normal">_</mi><msup><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></msup><mi>S</mi><mi mathvariant="normal">_</mi><mn>1</mn><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mi>m</mi><mo stretchy="false">]</mo><mi>S</mi><mi mathvariant="normal">_</mi><mn>2</mn><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mi>m</mi><mo>+</mo><mi>n</mi><mo stretchy="false">]</mo></mrow><annotation encoding="application/x-tex">CR(n) = \frac{1}{N} \sum\_{m=1}^N S\_1\[m]S\_2\[m+n] </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">CR</span><span class="mopen">(</span><span class="mord mathnormal">n</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:2.0074em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop op-symbol large-op" style="position:relative;top:0em;"></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord" style="margin-right:0.02778em;">_</span><span class="mord"><span class="mord"><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">1</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8913em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.10903em;">N</span></span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord">_1</span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mord mathnormal">m</span><span class="mclose">]</span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord">_2</span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">n</span><span class="mclose">]</span></span></span></span></span></p><p>常用于表征两条序列在不同对齐条件下的相似度。</p><p><strong>函数名:</strong> XCORR</p><p><strong>输入序列:</strong> 仅支持两个输入序列,类型均为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。序列中共包含<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mi>N</mi><mo></mo><mn>1</mn></mrow><annotation encoding="application/x-tex">2N-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7667em;vertical-align:-0.0833em;"></span><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>个数据点,<br> 其中正中心的值为两条序列按照预先对齐的结果计算的互相关系数(即等于以上公式的<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>C</mi><mi>R</mi><mo stretchy="false">(</mo><mn>0</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">CR(0)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">CR</span><span class="mopen">(</span><span class="mord">0</span><span class="mclose">)</span></span></span></span>),<br> 前半部分的值表示将后一条输入序列向前平移时计算的互相关系数,<br> 直至两条序列没有重合的数据点(不包含完全分离时的结果<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>C</mi><mi>R</mi><mo stretchy="false">(</mo><mo></mo><mi>N</mi><mo stretchy="false">)</mo><mo>=</mo><mn>0.0</mn></mrow><annotation encoding="application/x-tex">CR(-N)=0.0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">CR</span><span class="mopen">(</span><span class="mord"></span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">0.0</span></span></span></span>),<br> 后半部分类似。<br> 用公式可表示为(所有序列的索引从1开始计数):</p><p class="katex-block"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>O</mi><mi>S</mi><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mi>i</mi><mo stretchy="false">]</mo><mo>=</mo><mi>C</mi><mi>R</mi><mo stretchy="false">(</mo><mo></mo><mi>N</mi><mo>+</mo><mi>i</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mi>N</mi></mfrac><mo></mo><mi mathvariant="normal">_</mi><msup><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><mi>i</mi></msup><mi>S</mi><mi mathvariant="normal">_</mi><mn>1</mn><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mi>m</mi><mo stretchy="false">]</mo><mi>S</mi><mi mathvariant="normal">_</mi><mn>2</mn><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mi>N</mi><mo></mo><mi>i</mi><mo>+</mo><mi>m</mi><mo stretchy="false">]</mo><mo separator="true">,</mo><mtext> </mtext><mi>i</mi><mi>f</mi><mtext> </mtext><mi>i</mi><mo>&lt;</mo><mo>=</mo><mi>N</mi></mrow><annotation encoding="application/x-tex">OS\[i] = CR(-N+i) = \frac{1}{N} \sum\_{m=1}^{i} S\_1\[m]S\_2\[N-i+m],\ if\ i &lt;= N </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">OS</span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mord mathnormal">i</span><span class="mclose">]</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">CR</span><span class="mopen">(</span><span class="mord"></span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">i</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:2.0074em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop op-symbol large-op" style="position:relative;top:0em;"></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord" style="margin-right:0.02778em;">_</span><span class="mord"><span class="mord"><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">1</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8747em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span></span></span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord">_1</span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mord mathnormal">m</span><span class="mclose">]</span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord">_2</span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7429em;vertical-align:-0.0833em;"></span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">m</span><span class="mclose">]</span><span class="mpunct">,</span><span class="mspace"> </span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mspace"> </span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">&lt;=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span></span></span></span></span></p><p class="katex-block"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>O</mi><mi>S</mi><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mi>i</mi><mo stretchy="false">]</mo><mo>=</mo><mi>C</mi><mi>R</mi><mo stretchy="false">(</mo><mi>i</mi><mo></mo><mi>N</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mi>N</mi></mfrac><mo></mo><mi mathvariant="normal">_</mi><msup><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><mrow><mn>2</mn><mi>N</mi><mo></mo><mi>i</mi></mrow></msup><mi>S</mi><mi mathvariant="normal">_</mi><mn>1</mn><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mi>i</mi><mo></mo><mi>N</mi><mo>+</mo><mi>m</mi><mo stretchy="false">]</mo><mi>S</mi><mi mathvariant="normal">_</mi><mn>2</mn><mstyle mathcolor="#cc0000"><mtext>\[</mtext></mstyle><mi>m</mi><mo stretchy="false">]</mo><mo separator="true">,</mo><mtext> </mtext><mi>i</mi><mi>f</mi><mtext> </mtext><mi>i</mi><mo>&gt;</mo><mi>N</mi></mrow><annotation encoding="application/x-tex">OS\[i] = CR(i-N) = \frac{1}{N} \sum\_{m=1}^{2N-i} S\_1\[i-N+m]S\_2\[m],\ if\ i &gt; N </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">OS</span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mord mathnormal">i</span><span class="mclose">]</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">CR</span><span class="mopen">(</span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:2.0074em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop op-symbol large-op" style="position:relative;top:0em;"></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord" style="margin-right:0.02778em;">_</span><span class="mord"><span class="mord"><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">1</span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8913em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="mord mathnormal mtight" style="margin-right:0.10903em;">N</span><span class="mbin mtight"></span><span class="mord mathnormal mtight">i</span></span></span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord">_1</span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin"></span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.7667em;vertical-align:-0.0833em;"></span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1.06em;vertical-align:-0.31em;"></span><span class="mord mathnormal">m</span><span class="mclose">]</span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord">_2</span><span class="mord text" style="color:#cc0000;"><span class="mord" style="color:#cc0000;">\[</span></span><span class="mord mathnormal">m</span><span class="mclose">]</span><span class="mpunct">,</span><span class="mspace"> </span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mspace"> </span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">&gt;</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span></span></span></span></span></p><p><strong>提示:</strong></p><ul><li>两条序列中的<code>null</code><code>NaN</code> 值会被忽略,在计算中表现为 0。</li></ul><h4 id="使用示例-45" tabindex="-1"><a class="header-anchor" href="#使用示例-45"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|root.test.d1.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| null| 6|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 2| 7|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 3| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 4| 9|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 5| 10|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> xcorr(s1, s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1 </span><span style="color:#C678DD;">where</span><span style="color:#C678DD;"> time</span><span style="color:#56B6C2;"> &lt;=</span><span style="color:#D19A66;"> 2020</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#D19A66;"> 00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">05</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------------------------------+</span></span>
<span class="line"><span>| Time|xcorr(root.test.d1.s1, root.test.d1.s2)|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.000+08:00| 0.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 10.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| 16.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.003+08:00| 16.75|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.004+08:00| 20.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.005+08:00| 13.2|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.006+08:00| 5.6|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.007+08:00| 7.0|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.008+08:00| 0.0|</span></span>
<span class="line"><span>+-----------------------------+---------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_6-6-pattern-match" tabindex="-1"><a class="header-anchor" href="#_6-6-pattern-match"><span>6.6 Pattern_match</span></a></h3><h4 id="注册语句-45" tabindex="-1"><a class="header-anchor" href="#注册语句-45"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> pattern_match</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.match.UDAFPatternMatch&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-46" tabindex="-1"><a class="header-anchor" href="#函数简介-46"><span>函数简介</span></a></h4><p>本函数用于对输入的某一条时间序列与预设的<code>pattern</code>进行模式匹配,当相似度小于等于某个预设阈值时判定为匹配成功,并将最终匹配结果以<code>json</code>列表的方式输出。</p><p><strong>函数名:</strong> PATTERN_MATCH</p><p><strong>输入序列:</strong> 仅支持一个输入序列,类型为INT32,INT64,FLOAT,DOUBLE,BOOLEAN。</p><p><strong>参数:</strong></p><ul><li><code>timePattern</code> :以时间戳组成的字符串,以逗号分隔。长度必须大于1。必填项。</li><li><code>valuePattern </code> :以数字组成的字符串,以逗号分隔。数量与 <code>timePattern </code> 相同,长度必须大于1。必填项。</li></ul><blockquote><p>提示:布尔类型的<code>valuePattern </code> ,需要用1,0来表示<code>true</code><code>false</code></p></blockquote><ul><li><code>threshold</code> :阈值。Float类型。必填项。</li></ul><p><strong>输出序列</strong>:输出结果为包含所有成功匹配段落的起始时间戳<code>startTime</code>、终止时间戳<code>endTime</code>及相似度值<code>distance</code><code>json</code>列表。</p><h4 id="使用示例-46" tabindex="-1"><a class="header-anchor" href="#使用示例-46"><span>使用示例</span></a></h4><ol><li>线性数据</li></ol><p>输入序列:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#C678DD;"> select</span><span style="color:#ABB2BF;"> s0 </span><span style="color:#C678DD;">from</span><span style="color:#C678DD;"> root</span><span style="color:#ABB2BF;">.**</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#C678DD;">Time</span><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">d0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">s0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">001</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">002</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">003</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">004</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">005</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> pattern_match (s0, </span><span style="color:#98C379;">&quot;timePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1,2,3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;valuePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1.1,1.2,1.3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;threshold&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.5&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> match_result </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.d0</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">--------------------------------------------------------------------------------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| match_result|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">--------------------------------------------------------------------------------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#E06C75;">[{&quot;distance&quot;:0.200000,&quot;startTime&quot;:1,&quot;endTime&quot;:3}, {&quot;distance&quot;:0.000000,&quot;startTime&quot;:2,&quot;endTime&quot;:4}]</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">--------------------------------------------------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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><ol><li>布尔类型数据</li></ol><p>输入序列:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#C678DD;"> select</span><span style="color:#ABB2BF;"> s1 </span><span style="color:#C678DD;">from</span><span style="color:#C678DD;"> root</span><span style="color:#ABB2BF;">.**</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#C678DD;">Time</span><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">d0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">s1</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">001</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| true|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">002</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| true|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">003</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| true|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">004</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| false|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">005</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| false|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> pattern_match (s1, </span><span style="color:#98C379;">&quot;timePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1,2,3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;valuePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1,1,1&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;threshold&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.5&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> match_result </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.d0</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-------------------------------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| match_result|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-------------------------------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#E06C75;">[{&quot;distance&quot;:0.000000,&quot;startTime&quot;:1,&quot;endTime&quot;:3}]</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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><ol><li>V型数据</li></ol><p>输入序列:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#C678DD;"> select</span><span style="color:#ABB2BF;"> s2 </span><span style="color:#C678DD;">from</span><span style="color:#C678DD;"> root</span><span style="color:#ABB2BF;">.**</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#C678DD;">Time</span><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">d0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">s2</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">001</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">002</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">003</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">004</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">005</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">006</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">007</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">008</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">009</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">010</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| -</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> pattern_match (s2, </span><span style="color:#98C379;">&quot;timePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1,2,3,4,5,6,7&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;valuePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.0,-1.0,-2.0,-3.0,-2.0,-1.0,-0.0&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;threshold&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;10&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> match_result </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.d0</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">----------------------------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| match_result|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">----------------------------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#E06C75;">[{&quot;distance&quot;:0.53,&quot;startTime&quot;:1,&quot;endTime&quot;:10}]</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">----------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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><ol><li>多个匹配模式</li></ol><p>输入序列:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#C678DD;"> select</span><span style="color:#ABB2BF;"> s0,s1 </span><span style="color:#C678DD;">from</span><span style="color:#C678DD;"> root</span><span style="color:#ABB2BF;">.**</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+-------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#C678DD;">Time</span><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">d0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">s0</span><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">d0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">s1</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+-------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">001</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">| true|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">002</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">| true|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">003</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">| true|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">004</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">| false|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#D19A66;">1970</span><span style="color:#ABB2BF;">-</span><span style="color:#D19A66;">01</span><span style="color:#ABB2BF;">-01T08:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">005</span><span style="color:#ABB2BF;">+</span><span style="color:#D19A66;">08</span><span style="color:#ABB2BF;">:</span><span style="color:#D19A66;">00</span><span style="color:#ABB2BF;">| </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">| false|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">-----------------------------+-------------+-------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> pattern_match (s0, </span><span style="color:#98C379;">&quot;timePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1,2,3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;valuePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1.1,1.2,1.3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;threshold&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.5&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> match_result1, pattern_match (s1, </span><span style="color:#98C379;">&quot;timePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1,2,3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;valuePattern&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;1,1,1&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;threshold&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;0.5&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">as</span><span style="color:#ABB2BF;"> match_result2 </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">db</span><span style="color:#ABB2BF;">.d0</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>输出序列:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">--------------------------------------------------------------------------------------------------+-------------------------------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| match_result1| match_result2|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">--------------------------------------------------------------------------------------------------+-------------------------------------------------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#E06C75;">[{&quot;distance&quot;:0.200000,&quot;startTime&quot;:1,&quot;endTime&quot;:3}, {&quot;distance&quot;:0.000000,&quot;startTime&quot;:2,&quot;endTime&quot;:4}]</span><span style="color:#ABB2BF;">|</span><span style="color:#E06C75;">[{&quot;distance&quot;:0.000000,&quot;startTime&quot;:1,&quot;endTime&quot;:3}]</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">--------------------------------------------------------------------------------------------------+-------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="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="_7-数据修复" tabindex="-1"><a class="header-anchor" href="#_7-数据修复"><span>7. 数据修复</span></a></h2><h3 id="_7-1-timestamprepair" tabindex="-1"><a class="header-anchor" href="#_7-1-timestamprepair"><span>7.1 TimestampRepair</span></a></h3><h4 id="注册语句-46" tabindex="-1"><a class="header-anchor" href="#注册语句-46"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> timestamprepair</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.drepair.UDTFTimestampRepair&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-47" tabindex="-1"><a class="header-anchor" href="#函数简介-47"><span>函数简介</span></a></h4><p>本函数用于时间戳修复。根据给定的标准时间间隔,采用最小化修复代价的方法,通过对数据时间戳的微调,将原本时间戳间隔不稳定的数据修复为严格等间隔的数据。在未给定标准时间间隔的情况下,本函数将使用时间间隔的中位数 (median)、众数 (mode) 或聚类中心 (cluster) 来推算标准时间间隔。</p><p><strong>函数名:</strong> TIMESTAMPREPAIR</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>interval</code>: 标准时间间隔(单位是毫秒),是一个正整数。在缺省情况下,将根据指定的方法推算。</li><li><code>method</code>:推算标准时间间隔的方法,取值为 &#39;median&#39;, &#39;mode&#39; 或 &#39;cluster&#39;,仅在<code>interval</code>缺省时有效。在缺省情况下,将使用中位数方法进行推算。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型与输入序列相同。该序列是修复后的输入序列。</p><h4 id="使用示例-47" tabindex="-1"><a class="header-anchor" href="#使用示例-47"><span>使用示例</span></a></h4><h4 id="指定标准时间间隔" tabindex="-1"><a class="header-anchor" href="#指定标准时间间隔"><span>指定标准时间间隔</span></a></h4><p>在给定<code>interval</code>参数的情况下,本函数将按照指定的标准时间间隔进行修复。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2021-07-01T12:00:00.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:10.000+08:00| 2.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:19.000+08:00| 3.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:30.000+08:00| 4.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:40.000+08:00| 5.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:50.000+08:00| 6.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:01.000+08:00| 7.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:11.000+08:00| 8.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:21.000+08:00| 9.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:31.000+08:00| 10.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> timestamprepair(s1,</span><span style="color:#98C379;">&#39;interval&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;10000&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------------------------------------+</span></span>
<span class="line"><span>| Time|timestamprepair(root.test.d2.s1, &quot;interval&quot;=&quot;10000&quot;)|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------------------+</span></span>
<span class="line"><span>|2021-07-01T12:00:00.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:10.000+08:00| 2.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:20.000+08:00| 3.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:30.000+08:00| 4.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:40.000+08:00| 5.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:50.000+08:00| 6.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:00.000+08:00| 7.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:10.000+08:00| 8.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:20.000+08:00| 9.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:30.000+08:00| 10.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:40.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+----------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="自动推算标准时间间隔" tabindex="-1"><a class="header-anchor" href="#自动推算标准时间间隔"><span>自动推算标准时间间隔</span></a></h4><p>如果<code>interval</code>参数没有给定,本函数将按照推算的标准时间间隔进行修复。</p><p>输入序列同上,用于查询的 SQL 语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> timestamprepair(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------+</span></span>
<span class="line"><span>| Time|timestamprepair(root.test.d2.s1)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------+</span></span>
<span class="line"><span>|2021-07-01T12:00:00.000+08:00| 1.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:10.000+08:00| 2.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:20.000+08:00| 3.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:30.000+08:00| 4.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:40.000+08:00| 5.0|</span></span>
<span class="line"><span>|2021-07-01T12:00:50.000+08:00| 6.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:00.000+08:00| 7.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:10.000+08:00| 8.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:20.000+08:00| 9.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:30.000+08:00| 10.0|</span></span>
<span class="line"><span>|2021-07-01T12:01:40.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_7-2-valuefill" tabindex="-1"><a class="header-anchor" href="#_7-2-valuefill"><span>7.2 ValueFill</span></a></h3><h4 id="注册语句-47" tabindex="-1"><a class="header-anchor" href="#注册语句-47"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> valuefill</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.drepair.UDTFValueFill&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-48" tabindex="-1"><a class="header-anchor" href="#函数简介-48"><span>函数简介</span></a></h4><p><strong>函数名:</strong> ValueFill</p><p><strong>输入序列:</strong> 单列时序数据,类型为INT32 / INT64 / FLOAT / DOUBLE</p><p><strong>参数:</strong></p><ul><li><code>method</code>: {&quot;mean&quot;, &quot;previous&quot;, &quot;linear&quot;, &quot;likelihood&quot;, &quot;AR&quot;, &quot;MA&quot;, &quot;SCREEN&quot;}, 默认为 &quot;linear&quot;。其中,“mean” 指使用均值填补的方法; “previous&quot; 指使用前值填补方法;“linear&quot; 指使用线性插值填补方法;“likelihood” 为基于速度的正态分布的极大似然估计方法;“AR” 指自回归的填补方法;“MA” 指滑动平均的填补方法;&quot;SCREEN&quot; 指约束填补方法;缺省情况下使用 “linear”。</li></ul><p><strong>输出序列:</strong> 填补后的单维序列。</p><p><strong>备注:</strong> AR 模型采用 AR(1),时序列需满足自相关条件,否则将输出单个数据点 (0, 0.0).</p><h4 id="使用示例-48" tabindex="-1"><a class="header-anchor" href="#使用示例-48"><span>使用示例</span></a></h4><h5 id="使用-linear-方法进行填补" tabindex="-1"><a class="header-anchor" href="#使用-linear-方法进行填补"><span>使用 linear 方法进行填补</span></a></h5><p><code>method</code>缺省或取值为 &#39;linear&#39; 时,本函数将使用线性插值方法进行填补。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| 128.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> valuefill(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------+</span></span>
<span class="line"><span>| Time|valuefill(root.test.d2.s1)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 110.5|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.66666666666667|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 121.33333333333333|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| 128.0|</span></span>
<span class="line"><span>+-----------------------------+--------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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><h5 id="使用-previous-方法进行填补" tabindex="-1"><a class="header-anchor" href="#使用-previous-方法进行填补"><span>使用 previous 方法进行填补</span></a></h5><p><code>method</code>取值为 &#39;previous&#39; 时,本函数将使前值填补方法进行数值填补。</p><p>输入序列同上,用于查询的 SQL 语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> valuefill(s1,</span><span style="color:#98C379;">&quot;method&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;previous&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-----------------------------------------------+</span></span>
<span class="line"><span>| Time|valuefill(root.test.d2.s1, &quot;method&quot;=&quot;previous&quot;)|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| NaN|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| 128.0|</span></span>
<span class="line"><span>+-----------------------------+-----------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_7-3-valuerepair" tabindex="-1"><a class="header-anchor" href="#_7-3-valuerepair"><span>7.3 ValueRepair</span></a></h3><h4 id="注册语句-48" tabindex="-1"><a class="header-anchor" href="#注册语句-48"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> valuerepair</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.drepair.UDTFValueRepair&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-49" tabindex="-1"><a class="header-anchor" href="#函数简介-49"><span>函数简介</span></a></h4><p>本函数用于对时间序列的数值进行修复。目前,本函数支持两种修复方法:<strong>Screen</strong> 是一种基于速度阈值的方法,在最小改动的前提下使得所有的速度符合阈值要求;<strong>LsGreedy</strong> 是一种基于速度变化似然的方法,将速度变化建模为高斯分布,并采用贪心算法极大化似然函数。</p><p><strong>函数名:</strong> VALUEREPAIR</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>method</code>:修复时采用的方法,取值为 &#39;Screen&#39; 或 &#39;LsGreedy&#39;. 在缺省情况下,使用 Screen 方法进行修复。</li><li><code>minSpeed</code>:该参数仅在使用 Screen 方法时有效。当速度小于该值时会被视作数值异常点加以修复。在缺省情况下为中位数减去三倍绝对中位差。</li><li><code>maxSpeed</code>:该参数仅在使用 Screen 方法时有效。当速度大于该值时会被视作数值异常点加以修复。在缺省情况下为中位数加上三倍绝对中位差。</li><li><code>center</code>:该参数仅在使用 LsGreedy 方法时有效。对速度变化分布建立的高斯模型的中心。在缺省情况下为 0。</li><li><code>sigma</code> :该参数仅在使用 LsGreedy 方法时有效。对速度变化分布建立的高斯模型的标准差。在缺省情况下为绝对中位差。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型与输入序列相同。该序列是修复后的输入序列。</p><p><strong>提示:</strong> 输入序列中的<code>NaN</code>在修复之前会先进行线性插值填补。</p><h4 id="使用示例-49" tabindex="-1"><a class="header-anchor" href="#使用示例-49"><span>使用示例</span></a></h4><h5 id="使用-screen-方法进行修复" tabindex="-1"><a class="header-anchor" href="#使用-screen-方法进行修复"><span>使用 Screen 方法进行修复</span></a></h5><p><code>method</code>缺省或取值为 &#39;Screen&#39; 时,本函数将使用 Screen 方法进行数值修复。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d2.s1|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| NaN|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> valuerepair(s1) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+----------------------------+</span></span>
<span class="line"><span>| Time|valuerepair(root.test.d2.s1)|</span></span>
<span class="line"><span>+-----------------------------+----------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 106.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| 128.0|</span></span>
<span class="line"><span>+-----------------------------+----------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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><h5 id="使用-lsgreedy-方法进行修复" tabindex="-1"><a class="header-anchor" href="#使用-lsgreedy-方法进行修复"><span>使用 LsGreedy 方法进行修复</span></a></h5><p><code>method</code>取值为 &#39;LsGreedy&#39; 时,本函数将使用 LsGreedy 方法进行数值修复。</p><p>输入序列同上,用于查询的 SQL 语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> valuerepair(s1,</span><span style="color:#98C379;">&#39;method&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;LsGreedy&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+-------------------------------------------------+</span></span>
<span class="line"><span>| Time|valuerepair(root.test.d2.s1, &quot;method&quot;=&quot;LsGreedy&quot;)|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| 100.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| 101.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| 102.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 104.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 106.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:10.000+08:00| 108.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:14.000+08:00| 112.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:15.000+08:00| 113.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:16.000+08:00| 114.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:18.000+08:00| 116.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:20.000+08:00| 118.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:22.000+08:00| 120.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:26.000+08:00| 124.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:28.000+08:00| 126.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:30.000+08:00| 128.0|</span></span>
<span class="line"><span>+-----------------------------+-------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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="_8-序列发现" tabindex="-1"><a class="header-anchor" href="#_8-序列发现"><span>8. 序列发现</span></a></h2><h3 id="_8-1-consecutivesequences" tabindex="-1"><a class="header-anchor" href="#_8-1-consecutivesequences"><span>8.1 ConsecutiveSequences</span></a></h3><h4 id="注册语句-49" tabindex="-1"><a class="header-anchor" href="#注册语句-49"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> consecutivesequences</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.series.UDTFConsecutiveSequences&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-50" tabindex="-1"><a class="header-anchor" href="#函数简介-50"><span>函数简介</span></a></h4><p>本函数用于在多维严格等间隔数据中发现局部最长连续子序列。</p><p>严格等间隔数据是指数据的时间间隔是严格相等的,允许存在数据缺失(包括行缺失和值缺失),但不允许存在数据冗余和时间戳偏移。</p><p>连续子序列是指严格按照标准时间间隔等距排布,不存在任何数据缺失的子序列。如果某个连续子序列不是任何连续子序列的真子序列,那么它是局部最长的。</p><p><strong>函数名:</strong> CONSECUTIVESEQUENCES</p><p><strong>输入序列:</strong> 支持多个输入序列,类型可以是任意的,但要满足严格等间隔的要求。</p><p><strong>参数:</strong></p><ul><li><code>gap</code>:标准时间间隔,是一个有单位的正数。目前支持五种单位,分别是&#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。在缺省情况下,函数会利用众数估计标准时间间隔。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 INT32。输出序列中的每一个数据点对应一个局部最长连续子序列,时间戳为子序列的起始时刻,值为子序列包含的数据点个数。</p><p><strong>提示:</strong> 对于不符合要求的输入,本函数不对输出做任何保证。</p><h4 id="使用示例-50" tabindex="-1"><a class="header-anchor" href="#使用示例-50"><span>使用示例</span></a></h4><h5 id="手动指定标准时间间隔" tabindex="-1"><a class="header-anchor" href="#手动指定标准时间间隔"><span>手动指定标准时间间隔</span></a></h5><p>本函数可以通过<code>gap</code>参数手动指定标准时间间隔。需要注意的是,错误的参数设置会导致输出产生严重错误。</p><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|root.test.d1.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:05:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:10:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:20:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:25:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:30:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:35:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:40:00.000+08:00| 1.0| null|</span></span>
<span class="line"><span>|2020-01-01T00:45:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:50:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> consecutivesequences(s1,s2,</span><span style="color:#98C379;">&#39;gap&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;5m&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------------------------------+</span></span>
<span class="line"><span>| Time|consecutivesequences(root.test.d1.s1, root.test.d1.s2, &quot;gap&quot;=&quot;5m&quot;)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:00.000+08:00| 3|</span></span>
<span class="line"><span>|2020-01-01T00:20:00.000+08:00| 4|</span></span>
<span class="line"><span>|2020-01-01T00:45:00.000+08:00| 2|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="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><h5 id="自动估计标准时间间隔" tabindex="-1"><a class="header-anchor" href="#自动估计标准时间间隔"><span>自动估计标准时间间隔</span></a></h5><p><code>gap</code>参数缺省时,本函数可以利用众数估计标准时间间隔,得到同样的结果。因此,这种用法更受推荐。</p><p>输入序列同上,用于查询的SQL语句如下:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> consecutivesequences(s1,s2) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>| Time|consecutivesequences(root.test.d1.s1, root.test.d1.s2)|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:00.000+08:00| 3|</span></span>
<span class="line"><span>|2020-01-01T00:20:00.000+08:00| 4|</span></span>
<span class="line"><span>|2020-01-01T00:45:00.000+08:00| 2|</span></span>
<span class="line"><span>+-----------------------------+------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="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="_8-2-consecutivewindows" tabindex="-1"><a class="header-anchor" href="#_8-2-consecutivewindows"><span>8.2 ConsecutiveWindows</span></a></h3><h4 id="注册语句-50" tabindex="-1"><a class="header-anchor" href="#注册语句-50"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> consecutivewindows</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.series.UDTFConsecutiveWindows&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-51" tabindex="-1"><a class="header-anchor" href="#函数简介-51"><span>函数简介</span></a></h4><p>本函数用于在多维严格等间隔数据中发现指定长度的连续窗口。</p><p>严格等间隔数据是指数据的时间间隔是严格相等的,允许存在数据缺失(包括行缺失和值缺失),但不允许存在数据冗余和时间戳偏移。</p><p>连续窗口是指严格按照标准时间间隔等距排布,不存在任何数据缺失的子序列。</p><p><strong>函数名:</strong> CONSECUTIVEWINDOWS</p><p><strong>输入序列:</strong> 支持多个输入序列,类型可以是任意的,但要满足严格等间隔的要求。</p><p><strong>参数:</strong></p><ul><li><code>gap</code>:标准时间间隔,是一个有单位的正数。目前支持五种单位,分别是 &#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。在缺省情况下,函数会利用众数估计标准时间间隔。</li><li><code>length</code>:序列长度,是一个有单位的正数。目前支持五种单位,分别是 &#39;ms&#39;(毫秒)、&#39;s&#39;(秒)、&#39;m&#39;(分钟)、&#39;h&#39;(小时)和&#39;d&#39;(天)。该参数不允许缺省。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 INT32。输出序列中的每一个数据点对应一个指定长度连续子序列,时间戳为子序列的起始时刻,值为子序列包含的数据点个数。</p><p><strong>提示:</strong> 对于不符合要求的输入,本函数不对输出做任何保证。</p><h4 id="使用示例-51" tabindex="-1"><a class="header-anchor" href="#使用示例-51"><span>使用示例</span></a></h4><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d1.s1|root.test.d1.s2|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:05:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:10:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:20:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:25:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:30:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:35:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:40:00.000+08:00| 1.0| null|</span></span>
<span class="line"><span>|2020-01-01T00:45:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:50:00.000+08:00| 1.0| 1.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的SQL语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> consecutivewindows(s1,s2,</span><span style="color:#98C379;">&#39;length&#39;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&#39;10m&#39;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d1</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+--------------------------------------------------------------------+</span></span>
<span class="line"><span>| Time|consecutivewindows(root.test.d1.s1, root.test.d1.s2, &quot;length&quot;=&quot;10m&quot;)|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:00.000+08:00| 3|</span></span>
<span class="line"><span>|2020-01-01T00:20:00.000+08:00| 4|</span></span>
<span class="line"><span>+-----------------------------+--------------------------------------------------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="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="_9-机器学习" tabindex="-1"><a class="header-anchor" href="#_9-机器学习"><span>9. 机器学习</span></a></h2><h3 id="_9-1-ar" tabindex="-1"><a class="header-anchor" href="#_9-1-ar"><span>9.1 AR</span></a></h3><h4 id="注册语句-51" tabindex="-1"><a class="header-anchor" href="#注册语句-51"><span>注册语句</span></a></h4><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> function</span><span style="color:#61AFEF;"> ar</span><span style="color:#C678DD;"> as</span><span style="color:#98C379;"> &#39;org.apache.iotdb.library.dlearn.UDTFAR&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="函数简介-52" tabindex="-1"><a class="header-anchor" href="#函数简介-52"><span>函数简介</span></a></h4><p>本函数用于学习数据的自回归模型系数。</p><p><strong>函数名:</strong> AR</p><p><strong>输入序列:</strong> 仅支持单个输入序列,类型为 INT32 / INT64 / FLOAT / DOUBLE。</p><p><strong>参数:</strong></p><ul><li><code>p</code>:自回归模型的阶数。默认为1。</li></ul><p><strong>输出序列:</strong> 输出单个序列,类型为 DOUBLE。第一行对应模型的一阶系数,以此类推。</p><p><strong>提示:</strong></p><ul><li><code>p</code>应为正整数。</li><li>序列中的大部分点为等间隔采样点。</li><li>序列中的缺失点通过线性插值进行填补后用于学习过程。</li></ul><h4 id="使用示例-52" tabindex="-1"><a class="header-anchor" href="#使用示例-52"><span>使用示例</span></a></h4><h5 id="指定阶数" tabindex="-1"><a class="header-anchor" href="#指定阶数"><span>指定阶数</span></a></h5><p>输入序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>| Time|root.test.d0.s0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span>
<span class="line"><span>|2020-01-01T00:00:01.000+08:00| -4.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:02.000+08:00| -3.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:03.000+08:00| -2.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:04.000+08:00| -1.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:05.000+08:00| 0.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:06.000+08:00| 1.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:07.000+08:00| 2.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:08.000+08:00| 3.0|</span></span>
<span class="line"><span>|2020-01-01T00:00:09.000+08:00| 4.0|</span></span>
<span class="line"><span>+-----------------------------+---------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>用于查询的 SQL 语句:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">select</span><span style="color:#ABB2BF;"> ar(s0,</span><span style="color:#98C379;">&quot;p&quot;</span><span style="color:#56B6C2;">=</span><span style="color:#98C379;">&quot;2&quot;</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">from</span><span style="color:#D19A66;"> root</span><span style="color:#ABB2BF;">.</span><span style="color:#D19A66;">test</span><span style="color:#ABB2BF;">.d0</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>输出序列:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-"><span class="line"><span>+-----------------------------+---------------------------+</span></span>
<span class="line"><span>| Time|ar(root.test.d0.s0,&quot;p&quot;=&quot;2&quot;)|</span></span>
<span class="line"><span>+-----------------------------+---------------------------+</span></span>
<span class="line"><span>|1970-01-01T08:00:00.001+08:00| 0.9429|</span></span>
<span class="line"><span>|1970-01-01T08:00:00.002+08:00| -0.2571|</span></span>
<span class="line"><span>+-----------------------------+---------------------------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="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></div><!----><!----><!----></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link vp-meta-label" href="https://github.com/apache/iotdb-docs/edit/main/src/zh/UserGuide/latest/SQL-Manual/UDF-Libraries_apache.md" aria-label="发现错误?在 GitHub 上编辑此页" rel="noopener noreferrer" target="_blank"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="edit icon" name="edit"><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><!--]-->发现错误?在 GitHub 上编辑此页<!----></a></div><div class="vp-meta-item git-info"><div class="update-time"><span class="vp-meta-label">最近更新: </span><time class="vp-meta-info" datetime="2026-04-16T03:02:58.000Z" data-allow-mismatch>2026/4/16 03:02</time></div><!----></div></footer><nav class="vp-page-nav"><!----><a class="route-link auto-link next" href="/zh/UserGuide/latest/SQL-Manual/Operator-and-Expression.html" aria-label="函数与运算符"><div class="hint">下一页<span class="arrow end"></span></div><div class="link">函数与运算符<!----></div></a></nav><!----><!----><!--]--></main><!--]--><footer class="site-footer"><span id="doc-version" style="display:none;">latest</span><p class="copyright-text">版权所有 © 2026 Apache软件基金会。
Apache IoTDB,IoTDB,Apache,Apache 羽毛标志和 Apache IoTDB 项目标志是 Apache 软件基金会在所有国家的注册商标或商标</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"><strong>有问题吗?</strong> 在 QQ、微信或 Slack 上联系我们。 <a href="https://github.com/apache/iotdb/issues/1995">立即加入社区</a></p></footer></div><!--]--><!--]--><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/assets/app-pmkzp6TS.js" defer></script>
</body>
</html>