限制与拒绝令牌
如果注册被拒绝,会被一起告知被拒绝的内容名称。 该令牌将原样出现在日志和 API 响应中,因此可以在此页面中找到对应行。
所有拒绝都会指明名称 — 不会跳过并继续执行
跳过的配置会导致语句处于 «运行、发送、错误» 状态 — 行数减少或列悄悄消失 — 且没有任何红色错误提示。 拒绝注册是操作员能够看到的唯一失败形式。
如何读取令牌 — 前缀表示 «是谁»
| 前缀 | 谁拒绝了 | 采取行动 |
|---|---|---|
aster: | 引擎自身在编译时拒绝 | 通常是语句问题 — 请检查列名·类型 |
| 其他令牌 | 规划器认为「无法降低至该引擎» | 移除该配置并重写语句 |
语言完全不接受的内容
| 令牌 | 含义 |
|---|---|
function:<name> | 语言未知的函数 (percentile · to_bigdecimal 等) |
view:<key> | 语言未知的视图 (std:size 等) |
pattern:not:unbounded | 无时限的缺失模式。 请像 not X for 30 min 那样填写时限 |
pattern:guard:timer:at · pattern:observer:timer:schedule | 不在列表中的 timer: 配置 |
window:tumbling:zone-without-calendar-alignment | 填写了时区但非日历对齐 |
默认后端 (Aster CEP) 拒绝的内容
| 令牌 | 含义 |
|---|---|
expr:case-without-else | 无 ELSE 的 CASE — 剩余情况无答案 |
function:stddev:non-numeric-argument · function:median:non-numeric-argument | 对非数值列使用统计函数 |
select:distinct:with-window | DISTINCT 已附加窗口 |
view:chain:second-window | 重复挂载窗口 |
view:on-pattern-source | 模式 «产出的行» 之上的窗口 |
view:std:firstevent | 语句生命周期内仅产出一行的视图 |
pattern:and · pattern:until | 无法降低该模式运算符 |
match-recognize:input:window | MATCH_RECOGNIZE 输入端的窗口 |
match-recognize:after-match-skip:past-last-row | SKIP PAST LAST ROW |
match-recognize:pattern:alternation · …:permute | 替代 · 排列 |
having:aggregate-not-selected | 使用 SELECT 不计算的聚合进行 HAVING |
Flink 拒绝的内容 (仅限 Oracle)
由于 Flink 不用于运行,这些令牌仅在对比时可见。
| 令牌 | 含义 |
|---|---|
from:join | 连接 |
select:distinct · order by · limit:<n> | 该子句 |
where:not | 一元 NOT |
insert into:<stream> | INSERT INTO |
pattern:not | 缺失模式 — 标准行模式中无否定 |
window:sliding:not-supported · window:tumbling:first-event-alignment | 该窗口形式 |
function:first · function:median · function:cast | 该函数 |
projection:operator:<op> · projection:case with an operand | 投影内的算术 · CASE |
«接受并忽略» 的子句比拒绝更糟糕
这是本文档反复监视的失败形式。
被拒绝的语句无法注册,操作员可见。 被接受并忽略的子句,语句运行、发送行,且该行看起来正常。
过去有四类属于此类 — OUTPUT LAST EVERY n (仅接收名称不实现) · ORDER BY · LIMIT (接受并悄悄丢弃) · pattern:without every (产出语句未请求的行) · to_string (对 产品中不存在的函数 回答 «可以使用»)。
🔴 最后一类最糟糕。 拒绝意味着 «请寻找其他拼写»,但错误的 SUPPORTED 是 «可以迁移» 的承诺。
其他限制
| 项目 | 状态 |
|---|---|
| 迟到事件 | 没有允许迟到的概念。迟到的事件将计入打开的存储桶 |
| 首段存储桶 | 不进行抑制 — 注册后的第一个存储桶为片段 |
| DST | 若转换幅度不是存储桶大小的倍数,则拒绝 |
stddev · median 经常被拒绝的原因 | 因为语料库的 value 列是字符串 — 这是模式问题而非语句问题 |
to_* 的失败值 | 转换失败或为 null 时,今日值为 −1 |
| 结果传递 | 若订阅者为 0,行将消失且仅保留警告 |
| 其他后端 «无法测量» 的列 | 请勿读取为 ✓。未测量与可行是不同的概念 |