

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# TOP\$1K\$1ITEMS\$1TUMBLING 函数
<a name="top-k"></a>

在滚动窗口中返回指定的应用程序内流列中最常出现的值。这可用于在指定列中查找趋势（最热门）值。

例如，入门练习使用演示流来提供持续的股价更新（股票代码、价格、变动和其他列）。假设您想在每个 1 分钟的滚动窗口中找到交易最频繁的三只股票。您可以使用此函数来查找这些股票代码。

在使用 `TOP_K_ITEMS_TUMBLING` 时，请注意以下事项：
+ 计数流式来源上的每条传入记录效率不高，因此该函数将估算最常出现的值。例如，在寻找交易量最大的三只股票时，该函数可能会返回交易量最大的五只股票中的三只。

此函数在一个[滚动窗口](https://docs.amazonaws.cn/kinesisanalytics/latest/dev/tumbling-window-concepts.html)内运行。您需要将窗口大小指定为参数。

有关包含 step-by-step说明的示例应用程序，请参阅[最常出现的值](https://docs.amazonaws.cn/kinesisanalytics/latest/dev/top-k-example.html)。

## 语法
<a name="top-k-syntax"></a>

```
TOP_K_ITEMS_TUMBLING (
      in-application-streamPointer,
      'columnName',     
      K,
      windowSize,
   )
```

## 参数
<a name="top-k-parameters"></a>

以下各节介绍了这些参数。

### in-application-stream指针
<a name="top-k-inputstream"></a>

指向应用程序内流的指针。您可以使用 CURSOR 函数设置指针。例如，以下语句将指针设置为 InputStream。

```
CURSOR(SELECT STREAM * FROM InputStream)
```

### columnName
<a name="top-k-column-name"></a>

应用程序内流中您希望用来计算 topK 值的列名称。请注意有关列名称的以下内容：

**注意**  
列名称必须用单引号 (') 括起来。例如 `'column1'`。

### K
<a name="top-k-k"></a>

使用此参数，您可以指定希望从特定列中返回多少个最常出现的值。值 K 必须大于或等于 1 且不能超过 100000。

### windowSize
<a name="top-k-window-size"></a>

滚动窗口的大小，以秒为单位。大小必须大于或等于 1 秒，且不得超过 3600 秒 (1 小时)。

## 示例
<a name="top-k-examples"></a>

### 示例数据集
<a name="w2aac22b7c48c18b3"></a>

以下示例基于样本股票数据集，后者是 *Amazon Kinesis Analytics 开发人员指南*中的[入门](https://docs.amazonaws.cn/kinesisanalytics/latest/dev/get-started-exercise.html)的一部分。要运行每个示例，您需要一个具有样本股票代码输入流的 Amazon Kinesis Analytics 应用程序。要了解如何创建 Analytics 应用程序和配置样本股票代码输入流，请参阅 *Amazon Kinesis Analytics 开发人员指南*中的[入门](https://docs.amazonaws.cn/kinesisanalytics/latest/dev/get-started-exercise.html)。

具有以下架构的示例股票数据集。

```
(ticker_symbol  VARCHAR(4),
sector          VARCHAR(16),
change          REAL,
price           REAL)
```

### 示例 1：返回最常出现的值
<a name="w2aac22b7c48c18b5"></a>

以下示例在[入门](https://docs.amazonaws.cn/kinesisanalytics/latest/dev/getting-started.html)教程中创建的示例流中检索最常出现的值。

```
CREATE OR REPLACE STREAM DESTINATION_SQL_STREAM (
  "TICKER_SYMBOL" VARCHAR(4), 
  "MOST_FREQUENT_VALUES" BIGINT
);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
    INSERT INTO "DESTINATION_SQL_STREAM"
    SELECT STREAM * 
        FROM TABLE (TOP_K_ITEMS_TUMBLING(
            CURSOR(SELECT STREAM * FROM "SOURCE_SQL_STREAM_001"),
            'TICKER_SYMBOL',         -- name of column in single quotes
            5,                       -- number of the most frequently occurring values
            60                       -- tumbling window size in seconds
            )
        );
```

上一示例输出的流与以下内容类似。

![\[Table showing data stream with columns for timestamp, ticker symbol, and frequency values.\]](http://docs.amazonaws.cn/kinesisanalytics/latest/sqlref/images/sql-reference-topk-example-1.png)
