跳到主要内容

限制与拒绝令牌

如果注册被拒绝,会被一起告知被拒绝的内容名称。 该令牌将原样出现在日志和 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-windowDISTINCT 已附加窗口
view:chain:second-window重复挂载窗口
view:on-pattern-source模式 «产出的行» 之上的窗口
view:std:firstevent语句生命周期内仅产出一行的视图
pattern:and · pattern:until无法降低该模式运算符
match-recognize:input:windowMATCH_RECOGNIZE 输入端的窗口
match-recognize:after-match-skip:past-last-rowSKIP PAST LAST ROW
match-recognize:pattern:alternation · …:permute替代 · 排列
having:aggregate-not-selected使用 SELECT 不计算的聚合进行 HAVING

由于 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,行将消失且仅保留警告
其他后端 «无法测量» 的列请勿读取为 ✓。未测量与可行是不同的概念

相关文档​