You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 21c中MATCH_RECOGNIZE函数使用问题求助

问题需求

现有设备会向数据库发送带时间戳的事件标签,当其外设故障时,受影响设备会按固定顺序发送16个特定事件标签。需统计该故障的发生次数及涉及设备。

尝试使用Oracle 21c的MATCH_RECOGNIZE函数实现时遇到问题:

  • 使用+作为量词时无匹配结果
  • 使用*作为量词时会包含无关标签
    需要实现精准匹配这16个标签的完整序列(注:这些标签并非该故障独有)

原代码

-- 原尝试代码示例
SELECT device_id, count(*) AS fault_count
FROM event_logs
MATCH_RECOGNIZE (
    PARTITION BY device_id
    ORDER BY event_timestamp
    MEASURES COUNT(*) AS match_count
    PATTERN (TAG1 TAG2 TAG3 ... TAG16+) -- 或使用*
    DEFINE
        TAG1 AS event_tag = 'TAG_001',
        TAG2 AS event_tag = 'TAG_002',
        -- ... 依次定义TAG3到TAG16
        TAG16 AS event_tag = 'TAG_016'
)
GROUP BY device_id;

样本数据

device_idevent_timestampevent_tag
D0012024-05-01 10:00:00TAG_001
D0012024-05-01 10:00:01TAG_002
.........
D0012024-05-01 10:00:15TAG_016
D0012024-05-01 10:05:00TAG_001
D0012024-05-01 10:05:01TAG_002
.........
D0012024-05-01 10:05:15TAG_016
D0022024-05-01 11:00:00TAG_001
D0022024-05-01 11:00:01TAG_003

期望输出

device_idfault_count
D0012
D0020

内容的提问来源于stack exchange,提问作者spyker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:46:59