簡體   English   中英

卡在運動交錯窗口

[英]Stuck with kinesis stagger window

我設置了一個運動分析應用程序,它從具有以下模式的運動流中獲取數據。

--------------------------
Column          ColumnType
--------------------------
Level           varchar(10)
RootID          varchar(32)
ProcessID       varchar(16)
EntityName      varchar(64)
Message         varchar(512)
Threshold       varchar(32)
TriggerTime     timestamp

我的目標是創建一個實時運動分析解決方案,該解決方案將級別為“OVERFLOW”的記錄隔離開來,並根據 RootID 對它們進行分組。 理想情況下,屬於 RootID 的所有記錄都應在 5 分鍾內達到運動。 所以我正在考慮為此設置一個交錯窗口,到目前為止我已經想出了這個 SQL。

CREATE OR REPLACE STREAM "OVERFLOW_SQL_STREAM" (
    "Level" varchar (10),
    "RootID" varchar (32),
    "ProcessID" varchar(16),
    "EntityName" varchar(64),
    "Message" varchar(512),
    "Threshold" varchar(32),
    "TriggerTime" timestamp
);
CREATE OR REPLACE PUMP "STREAM_PUMP" AS
    INSERT INTO "OVERFLOW_SQL_STREAM"
        SELECT STREAM 
            "Level" varchar (10),
            "RootID" varchar (32),
            "ProcessID" varchar(16),
            "EntityName" varchar(64),
            "Message" varchar(512),
            "Threshold" varchar(32),
            "TriggerTime" timestamp
        FROM "SOURCE_SQL_STREAM_001"
        WHERE "Level" like "OVERFLOW"
        WINDOWED BY STAGGER (
            PARTITION BY "RootID",FLOOR("TriggerTime" TO MINUTE) RANGE INTERVAL '5' MINUTE);

我在 SQL 中收到一條錯誤消息,指出“PARTITION BY 子句沒有‘Level’列”。 我不明白為什么我應該將該列添加到分區,因為我希望我的記錄僅按 RootID 列而不按任何其他列進行分區。 添加該列會引發錯誤,提示我應該添加下一列,依此類推。 我無法理解錯誤。 請幫助我!謝謝!

此類問題有一個解決方法。 您可以使用 FIRST_VALUE() 或 LAST_VALUE() 來轉換結果而不是直接傳遞它們。

CREATE OR REPLACE PUMP "STREAM_PUMP" AS
    INSERT INTO "OVERFLOW_SQL_STREAM"
    SELECT STREAM 
        LAST_VALUE("Level") AS Level,
       "RootID" varchar (32),
       ....
       ....
       ....
       "TriggerTime" timestamp
    FROM "SOURCE_SQL_STREAM_001"
    WHERE "Level" like "OVERFLOW"
    WINDOWED BY STAGGER (
        PARTITION BY "RootID",FLOOR("TriggerTime" TO MINUTE) RANGE INTERVAL '5' MINUTE);

這是無需添加到 PARTITION BY 子句即可創建流泵的方法。

FIRST_VALUE() -- 獲取與流分區匹配的級別的第一個值(此處為 RootID)
LAST_VALUE() -- 反之亦然

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM