

在仔細考慮之後，我們決定停止 Amazon Kinesis Data Analytics for SQL 應用程式：

1. 從 **2025 年 9 月 1 日起，**我們不會為 Amazon Kinesis Data Analytics for SQL 應用程式提供任何錯誤修正，因為考慮到即將終止，我們將對其提供有限的支援。

2. 從 **2025 年 10 月 15 日起，**您將無法建立新的 Kinesis Data Analytics for SQL 應用程式。

3. 我們將自 **2026 年 1 月 27** 日起刪除您的應用程式。您將無法啟動或操作 Amazon Kinesis Data Analytics for SQL 應用程式。從那時起，Amazon Kinesis Data Analytics for SQL 將不再提供支援。如需詳細資訊，請參閱[Amazon Kinesis Data Analytics for SQL 應用程式終止](discontinuation.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定應用程式輸入
<a name="how-it-works-input"></a>

您的 Amazon Kinesis Data Analytics 應用程式可以從單一串流來源接收輸入，並選擇性地使用一個參考資料來源。如需詳細資訊，請參閱[Amazon Kinesis Data Analytics for SQL 應用程式：運作方式](how-it-works.md)。本主題中的各節說明應用程式輸入來源。

**Topics**
+ [設定串流來源](#source-streaming)
+ [配置參考來源](#source-reference)
+ [使用 JSONPath](about-json-path.md)
+ [將串流來源元素映射至 SQL 輸入資料欄](sch-mapping.md)
+ [在串流資料上使用結構描述探索功能](sch-dis.md)
+ [在靜態資料上使用結構描述探索功能](sch-dis-ref.md)
+ [使用 Lambda 函數預處理資料](lambda-preprocessing.md)
+ [平行化輸入串流以提高輸送量](input-parallelism.md)

## 設定串流來源
<a name="source-streaming"></a>

當您建立應用程式時，就要指定串流來源。您也可以在建立應用程式後修改輸入。Amazon Kinesis Data Analytics 支援您的應用程式採用下列串流來源：
+ Kinesis 資料串流 
+ Firehose 交付串流

**注意**  
2023 年 9 月 12 日之後，如果尚未使用 Kinesis Data Analytics for SQL，您將無法使用 Kinesis Data Firehose 做為建立新應用程式的來源。搭配使用 Kinesis Data Analytics for SQL 應用程式與 `KinesisFirehoseInput` 的現有客戶，可以繼續使用 `KinesisFirehoseInput`，在使用 Kinesis Data Analytics 的現有帳戶中新增應用程式。如果您是現有客戶，並且希望使用 Kinesis Data Analytics for SQL 與 `KinesisFirehoseInput` 建立新帳戶，您可以使用增加服務限制額度表單來開立案例。如需詳細資訊，請參閱 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)。我們建議在推廣生產之前，務必測試任何新的應用程式。

**注意**  
如果 Kinesis 資料串流經過加密，Kinesis Data Analytics 就能順暢存取加密串流中的資料，無需進一步設定。Kinesis Data Analytics 不會儲存從 Kinesis 資料串流讀取的未加密資料。如需詳細資訊，請參閱[什麼是 Kinesis Data Streams 伺服器端加密？](https://docs.aws.amazon.com/streams/latest/dev/what-is-sse.html)。

Kinesis Data Analytics 會持續輪詢串流來源是否有新資料，並根據輸入組態將其擷取至應用程式內串流。

**注意**  
將 Kinesis Stream 新增為應用程式的輸入不會影響串流中的資料。如果 Firehose 交付串流等其他資源也存取相同的 Kinesis 串流，則 Firehose 交付串流和 Kinesis Data Analytics 應用程式都會收到相同的資料。但是，輸送量和限流可能會受到影響。

應用程式碼會查詢應用程式內串流 。作為輸入組態的一部分，您提供以下項目：
+ **串流來源**：您提供的串流 Amazon Resource Name (ARN) 和 IAM 角色，可讓 Kinesis Data Analytics 代您存取串流。
+ **應用程式內串流名稱字首**：當您啟動應用程式時，Kinesis Data Analytics 會建立指定的應用程式內串流。在應用程式碼中，您可以使用此名稱存取應用程式內串流。

  您可以選擇性地將串流來源映射至多個應用程式內串流。如需詳細資訊，請參閱[限制](limits.md)。在這種情況下，Amazon Kinesis Data Analytics 會建立指定數量的應用程式內串流，名稱如下：{{字首}} `_001`、{{字首}} `_002` 和{{字首}} `_003`。根據預設，Kinesis Data Analytics 會將串流來源映射到一個名為{{字首}} `_001` 的應用程式內串流。

  您在應用程式內串流中插入資料列的速率有其限制。因此，Kinesis Data Analytics 支援多個此類應用程式內串流，讓您更快速地將記錄匯入應用程式。如果發現應用程式未跟上串流來源中的資料，您可以新增平行處理單位以改善效能。
+ **映射結構描述**：描述串流來源上的記錄格式 (JSON、CSV)。同時也描述串流上的每條記錄，如何映射至所建立應用程式內串流的資料欄。這是您提供資料欄名稱和資料類型的地方。

**注意**  
建立輸入應用程式內串流時，Kinesis Data Analytics 會在識別符 (串流名稱和資料欄名稱) 周圍加上引號。查詢此串流和資料欄時，您必須使用相同的大小寫 (完全符合小寫和大寫字母) ，並以引號指定。如需識別符的詳細資訊，請參閱《Amazon Managed Service for Apache Flink SQL 參考資料》**中的[識別符](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-identifiers.html)。

您可以在 Amazon Kinesis Data Analytics 主控台中建立應用程式並設定輸入。然後，主控台進行必要的 API 呼叫。在建立新應用程式 API，或將輸入組態新增至現有應用程式時，您可以設定應用程式輸入。如需詳細資訊，請參閱 [CreateApplication](API_CreateApplication.md) 及 [AddApplicationInput](API_AddApplicationInput.md)。以下是 `Createapplication` API 請求主體的輸入組態部分：

```
 "Inputs": [
        {
            "InputSchema": {
                "RecordColumns": [
                    {
                        "Mapping": "string",
                        "Name": "string",
                        "SqlType": "string"
                    }
                ],
                "RecordEncoding": "string",
                "RecordFormat": {
                    "MappingParameters": {
                        "CSVMappingParameters": {
                            "RecordColumnDelimiter": "string",
                            "RecordRowDelimiter": "string"
                        },
                        "JSONMappingParameters": {
                            "RecordRowPath": "string"
                        }
                    },
                    "RecordFormatType": "string"
                }
            },
            "KinesisFirehoseInput": {
                "ResourceARN": "string",
                "RoleARN": "string"
            },
            "KinesisStreamsInput": {
                "ResourceARN": "string",
                "RoleARN": "string"
            },
            "Name": "string"
        }
    ]
```

## 配置參考來源
<a name="source-reference"></a>

您也可以選擇將參考資料來源新增至現有的應用程式，以豐富來自串流來源的資料。您必須將參考資料作為物件存放在 S3 儲存貯體中。Amazon Kinesis Data Analytics 會在應用程式啟動時讀取 Amazon S3 物件，並建立應用程式內參考資料表。接著，您的應用程式程式碼就可以將其與應用程式內串流聯結。

您可以使用支援的格式 (CSV、JSON) 將參考資料存放在 Amazon S3 物件中。舉例來說，假設您的應用程式對股票訂單執行分析。假設串流來源採用以下記錄格式：

```
Ticker, SalePrice, OrderId

AMZN     $700        1003
XYZ      $250        1004
...
```

在這種情況下，您可以考慮維護一個參考資料來源，以提供每個股票代號的詳細資料，例如公司名稱

```
Ticker, Company
AMZN, Amazon
XYZ, SomeCompany
...
```

您可以使用 API 或主控台新增應用程式參考資料來源。Amazon Kinesis Data Analytics 提供下列 API 動作來管理參考資料來源：
+  [AddApplicationReferenceDataSource](API_AddApplicationReferenceDataSource.md)
+ [UpdateApplication](API_UpdateApplication.md)

如需使用主控台新增任務的詳細資訊，請參閱 [範例：將參考資料新增至 Kinesis Data Analytics 應用程式](app-add-reference-data.md)。

注意下列事項：
+ 如果應用程式正在執行，Kinesis Data Analytics 會建立應用程式內參考資料表，然後立即載入參考資料。
+ 如果應用程式未執行 (例如處於就緒狀態)，Kinesis Data Analytics 只會儲存更新的輸入組態。當應用程式開始執行時，Kinesis Data Analytics 會將參考資料以表格形式載入您的應用程式。

假設在 Kinesis Data Analytics 建立應用程式內參考資料表之後，您想要重新整理資料。也許你更新了 Amazon S3 物件，或者你想使用不同的 Amazon S3 物件。在此情況下，您可以明確呼叫 [UpdateApplication](API_UpdateApplication.md)，或選擇主控台中的**動作**、**同步化參考資料表**。Kinesis Data Analytics 不會自動重新整理應用程式內參考資料表。

您可以建立為參考資料來源的 Amazon S3 物件大小有其限制。如需詳細資訊，請參閱[限制](limits.md)。如果物件大小超過限制，Kinesis Data Analytics 將無法載入資料。應用程式狀態會顯示為執行中，但不會讀取資料。

當新增參考資料來源時，您要提供以下資訊：
+ **S3 儲存貯體和物件金鑰名稱**：除了儲存貯體名稱和物件金鑰之外，您還要提供一個 Kinesis Data Analytics 可以擔任的 IAM 角色，以代表您讀取物件。
+ **應用程式內參考資料表名稱**：Kinesis Data Analytics 會建立此應用程式內表格，並透過讀取 Amazon S3 物件來填入資料。這是您在應用程式碼中指定的資料表名稱。
+ **映射結構描述**：描述記錄格式 (JSON、CSV)，以及儲存在 Amazon S3 物件中的資料編碼。同時也說明每個資料元素如何對應至應用程式內參考資料表中的資料欄。

以下顯示 `AddApplicationReferenceDataSource` API 請求中的請求主體。

```
{
    "applicationName": "string",
    "CurrentapplicationVersionId": number,
    "ReferenceDataSource": {
        "ReferenceSchema": {
            "RecordColumns": [
                {
                    "IsDropped": boolean,
                    "Mapping": "string",
                    "Name": "string",
                    "SqlType": "string"
                }
            ],
            "RecordEncoding": "string",
            "RecordFormat": {
                "MappingParameters": {
                    "CSVMappingParameters": {
                        "RecordColumnDelimiter": "string",
                        "RecordRowDelimiter": "string"
                    },
                    "JSONMappingParameters": {
                        "RecordRowPath": "string"
                    }
                },
                "RecordFormatType": "string"
            }
        },
        "S3ReferenceDataSource": {
            "BucketARN": "string",
            "FileKey": "string",
            "ReferenceRoleARN": "string"
        },
        "TableName": "string"
    }
}
```