行模式识别的功能分析查找多行数据的拐点和规律

本文介绍了SQL:2016标准中的行模式识别功能,用于查找多行数据间的规律,如在股票行情分析、金融欺诈检测中的应用。通过MATCH_RECOGNIZE子句,可以定义模式并进行过滤、分组和聚合操作。示例展示了如何识别股票V型曲线和检测银行可疑转账行为,揭示了行模式识别在处理复杂事件和模式检测上的强大能力。
摘要由CSDN通过智能技术生成

行模式识别的功能分析查找多行数据的拐点和规律
本篇我们介绍 SQL:2016 标准新增的一个功能:行模式识别(Row Pattern Recognition)。

  • 行模式识别

行模式识别用于查找多行数据之间的规律。行模式识别通过指定一个模式(正则表达式),找到匹配该模式的一组数据行;并且可以对这些匹配的一组数据进行过滤、分组和聚合操作。

行模式识别可以用于分析各种时间序列数据,例如股票行情数据分析、金融欺诈检测或者系统事件日志分析等。

行模式识别用于查找多行数据之间的规律,与查询条件中的 LIKE 模式匹配是不同的概念。

目前只有 Oracle 12c 实现了该功能,因此本篇的示例仅支持 Oracle 数据库。本篇使用的示例表和数据(stockandbank.sql)可以从 GitHub 下载。

分析股票走势图
以下是一个纯属虚构的股票曲线图:
在这里插入图片描述
其中的数据来源于示例脚本中的股票价格表(stock),表中的字段包括股票代码(scode)、交易日期(tradedate)和收盘价格(price)。以下是该表中的部分数据:
在这里插入图片描述
SQL 标准使用 MATCH_RECOGNIZE 子句表示行模式识别。利用该功能,我们可以找出股票曲线中的各种变化模式,例如 V 型曲线或 W 型曲线。以下语句用于查找所有的 V 型曲线:

SELECT *
FROM stock MATCH_RECOGNIZE (
     PARTITION BY scode
     ORDER BY tradedate
     MEASURES STRT.tradedate AS start_date,
              LAST(DOWN.tradedate) AS bottom_date,
              LAST(UP.tradedate) AS end_date
     ONE ROW PER MATCH 
     AFTER MATCH SKIP TO LAST UP
     PATTERN (STRT DOWN+ UP+)
     DEFINE 
      DOWN AS DOWN.price < PREV(DOWN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值