【问题标题】:How to create a leaderboard query with kinesis analytics如何使用 kinesis 分析创建排行榜查询
【发布时间】:2023-04-04 21:00:01
【问题描述】:

我正在尝试使用 kinesis 分析对实时排行榜进行概念验证,并尝试使用他们的入门示例,以及演示股票代码数据流的翻转时间段示例。但是,当我尝试模拟按价格排序的排行榜时,我收到错误 Leading column in ORDER BY must be monotonic

SELECT from and INSERT into like a TABLE
    -- PUMP: an entity used to continuously 'SELECT ... FROM' a source STREAM, and INSERT SQL results into an output STREAM
    -- Create output stream, which can be used to send to a destination
    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (ticker_symbol VARCHAR(4), price REAL);
    -- Create a pump which continuously selects from a source stream (SOURCE_SQL_STREAM_001)
    -- performs an aggregate count that is grouped by columns ticker over a 10-second tumbling window
    -- and inserts into output stream (DESTINATION_SQL_STREAM)
    CREATE OR REPLACE  PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"
    -- Aggregate function COUNT|AVG|MAX|MIN|SUM|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP)
    SELECT STREAM  ticker_symbol, price
    FROM "SOURCE_SQL_STREAM_001"
    ORDER BY price desc
    -- Uses a 10-second tumbling time window
    GROUP BY ticker_symbol, price, FLOOR(("SOURCE_SQL_STREAM_001".ROWTIME - TIMESTAMP '1970-01-01 00:00:00') SECOND / 10 TO SECOND);

【问题讨论】:

    标签: amazon-kinesis amazon-kinesis-firehose


    【解决方案1】:

    According to the documentation,除了单调之外,ORDER BY 必须是基于时间的:

    一个流式查询可以使用 ORDER BY 如果它的前导表达式是 基于时间和单调的

    在您的情况下,您似乎正在计算 GROUP BY 中的时间戳,但您必须将相同的计算添加到 ORDER BY 中(或者可能想办法在 SELECT 中执行它并给出它列别名)。

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2013-08-31
      相关资源
      最近更新 更多