【问题标题】:AWS Kinesis Analytics SQL to transform rows to a listAWS Kinesis Analytics SQL 将行转换为列表
【发布时间】:2022-01-31 04:26:16
【问题描述】:

我有一个目的地Stream,例如如下所示:

Company_ID      Product      User_Tag    Count
   123            P1             T1        15
   123            P1             T2        10
   123            P1             T3        10

我想要最终输出如下:

Company_ID      Product       User_Tag    Count
   123            P1         [T1,T2,T3]    35

我尝试在User_Tag 上使用listagg,但我收到错误消息no function signature found。这甚至可以在 AWS Kinesis SQL 上处理流数据吗?

【问题讨论】:

    标签: sql amazon-web-services cloud postgresql-9.1 amazon-kinesis-analytics


    【解决方案1】:

    SQL - 数组聚合

    SELECT company_id,
           product,
           Array_agg(user_tag),
           Sum(count)
    FROM   stream
    GROUP  BY company_id,
              product; 
    
     company_id | product | array_agg  | sum
    ------------+---------+------------+-----
            123 | P1      | {T1,T2,T3} |  35
    

    SQL - 字符串聚合:

    SELECT company_id,
           product,
           String_agg(user_tag, ','),
           Sum(count)
    FROM   stream
    GROUP  BY company_id,
              product; 
        
    
       company_id | product | string_agg | sum
    ------------+---------+------------+-----
            123 | P1      | T1,T2,T3   |  35 
     
    

    编辑 Link 进行演示。

    【讨论】:

    • 我收到以下错误:找不到函数签名 STRING_AGG(, ) 的匹配项
    • array_agg 也一样,你还有什么想法吗?
    • 你是在 Postgresql 上运行这个吗?我已经添加了演示链接,视频编辑。
    • 在 aws kinesis analytics 上运行
    • 在这里docs.aws.amazon.com/kinesisanalytics/latest/sqlref/…检查了Kinesis Analytics的可用聚合函数,没有可用的AGG函数,我们需要找到其他方法。让我试试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多