缠有运动学交错窗口

问题描述 投票:0回答:1

我设置了运动学分析应用程序,该应用程序从具有以下模式的运动学流中获取数据。

--------------------------
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列而不是任何其他分区来对记录进行分区。添加该列会引发错误,提示我应该添加下一个列,依此类推。我无法理解该错误。请帮助我!谢谢!

amazon-web-services amazon-kinesis
1个回答
0
投票

对于这种类型的问题,有一种解决方法。您可以使用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()-反之亦然

© www.soinside.com 2019 - 2024. All rights reserved.