首页 > 解决方案 > 将所有记录放在 Amazon Kinesis Analytics SQL 的数组列中?

问题描述

我想使用 Analytics SQL 将输入流中列的所有窗口值组合到输出流中的数组中。

假设我有一个看起来像这样的数据:

事件 product_id 产品价格
页面预览 1111 3.99
页面预览 2222 10.99

以下 SQL 将为我提供每 30 分钟窗口显示的输出,查看了多少产品以及其中的最高价格是多少。

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    "event_type" varchar(32),
    "count_products_viewed" integer,
    "max_price_viewed" decimal(7,2)
);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
    INSERT INTO "DESTINATION_SQL_STREAM"
        SELECT STREAM 
            "stream_1"."event",
            COUNT("stream_1"."product_id") as "count_products_viewed,
            MAX("stream_1"."product_price") as "max_price_viewed"
        FROM "SOURCE_SQL_STREAM_001" as "stream_1"
        WINDOWED BY STAGGER (
            PARTITION BY
            "stream_1"."event"
            RANGE INTERVAL '30' MINUTE
        );

所以输出数据会像

事件 count_products_viewed max_price_viewed
页面预览 2 10.99

如果我想添加另一列,使其看起来像

事件 count_products_viewed max_price_viewed list_products_viewed
页面预览 2 10.99 [1111, 2222]

我需要做什么?尝试梳理文档,但没有找到在窗口期间处理所有列值的任何内容。

它不需要是文字数组 - 我可以使用相同数据的 json 字符串。

谢谢!

标签: sqlamazon-kinesisamazon-kinesis-analytics

解决方案


推荐阅读