限界と拒否トークン
登録が拒否された場合、何が拒否されたのかの名前が共に送られてきます。 そのトークンがそのままログと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 |
「受理して無視する」句は拒否よりも悪質です
本文書が繰り返し監視している失敗形態です。
拒否された文は登録されず、オペレーターが気づきます。 受理されて無視された句は、文が動作し、行を出力し、その行がもっともらしく見えます。
過去にこの類で4件が捕捉されました — OUTPUT LAST EVERY n(名前だけ受け取り実装せず) · ORDER BY·LIMIT(受理して静かに破棄) · pattern:without every(文が要求していない行が出力される) · to_string(製品にない関数を「使用できる」と回答).
🔴 最後のが最も悪質です。 拒否は「別の綴りを探せ」ということになりますが、誤った SUPPORTED は**「移行できる」という約束**になります。
その他の限界
| 項目 | 状態 |
|---|---|
| 遅延イベント | 許容遅延の概念がありません。 遅く届いたイベントは開いたバケットに合算されます |
| 初分バケット | 抑制しません — 登録直後の初バケットは断片となります |
| DST | 転換幅がバケットサイズの倍数でない場合は拒否します |
stddev · median が頻繁に拒否される理由 | コーパスの value 列が文字列であるためです — 文の問題ではなくスキーマの問題です |
to_* の失敗値 | 変換に失敗するかNULLの場合は、現在は −1 となります |
| 結果伝達 | サブスクライバーが0の場合、行は消失し警告のみが残ります |
| 他バックエンドの列が«計測不能»である欄 | ✓ として読み取らないでください。計測されなかったことと、可能であることは異なります |