範例:轉換字串值 - 亞馬遜 Kinesis SQL 應用程式資料分析開發人員指南

對於新專案,我們建議您使用適用於 Apache Flink Studio 的全新受管理服務,取代適用於應用程式的 Kinesis Data Analytics。SQLManaged Service for Apache Flink Studio 易於使用且具備進階分析功能,讓您在幾分鐘內建置複雜的串流處理應用程式。

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

範例:轉換字串值

Amazon Kinesis Data Analytics 支援 JSON 和 CSV 等格式,用於串流來源上的記錄。如需詳細資訊,請參閱RecordFormat。然後,這些記錄會根據輸入組態映射到應用程式內串流的列。如需詳細資訊,請參閱設定應用程式輸入。輸入組態會指定串流來源中的記錄欄位的映射方式,將其對應至應用程式內串流中的資料欄。

當串流來源上的記錄遵循支援的格式時,此映射就會運作,產出內含標準化資料的應用程式內串流。但如果串流來源上的資料不符合支援的標準,該怎麼辦? 舉例來說,如果您的串流來源包含點擊流資料、IoT 感應器和應用程式日誌等資料,該怎麼辦?

請考量以下範例:

  • 串流來源包含應用程式日誌:應用程式日誌會遵循標準 Apache 日誌格式,並使用 JSON 格式寫入串流。

    { "Log":"192.168.254.30 - John [24/May/2004:22:01:02 -0700] "GET /icons/apache_pb.gif HTTP/1.1" 304 0" }

    如需有關標準 Apache 日誌格式的詳細資訊,請參閱 Apache 網站上的日誌檔案

     

  • 串流來源包含半結構化資料:下列範例顯示兩筆記錄。Col_E_Unstructured 欄位值是一系列逗號分隔值。共有五個資料欄:前四個資料行具有字串類型值,最後一欄包含逗號分隔值。

    { "Col_A" : "string", "Col_B" : "string", "Col_C" : "string", "Col_D" : "string", "Col_E_Unstructured" : "value,value,value,value"} { "Col_A" : "string", "Col_B" : "string", "Col_C" : "string", "Col_D" : "string", "Col_E_Unstructured" : "value,value,value,value"}
  • 串流來源上的記錄包含 URL,而您需要部分 URL 網域名稱以進行分析。

    { "referrer" : "http://www.amazon.com"} { "referrer" : "http://www.stackoverflow.com" }

在這種情況下,下列兩步驟程序通常適用於建立內含標準化資料的應用程式內串流:

  1. 設定應用程式輸入,將非結構化欄位映射至所建立的應用程式內輸入串流中 VARCHAR(N) 類型的資料欄。

  2. 在應用程式碼中,使用字串函數將此單一欄分割成多個資料欄,然後將資料列儲存在另一個應用程式內串流中。您的應用程式碼建立的應用程式內串流將有標準化資料。接著您可以分析應用程式內串流。

Amazon Kinesis Data Analytics 提供下列字串操作、標準 SQL 函數,以及 SQL 標準的擴充功能,以便使用字串欄:

  • 字串運算子:運算子 (例如 LIKESIMILAR ) 在比較字串時很有用。如需詳細資訊,請參閱 Amazon Managed Service for Apache Flink SQL 參考資料中的字串運算子

  • SQL 函數:下列函數在操作個別字串時非常有用。如需詳細資訊,請參閱 Amazon Managed Service for Apache Flink SQL 參考資料中的字串與搜尋函數

    • CHAR_LENGTH - 提供字串的長度。

    • INITCAP - 傳回輸入字串的轉換版本,使得每個空格分隔文字的第一個字元都是大寫字母,而其他所有字元都是小寫字母。

    • LOWER/UPPER - 將字串轉換為小寫或大寫。

    • OVERLAY - 以第二個字串引數 (取代字串) 取代第一個字串引數 (原始字串) 的一部分。

    • POSITION - 搜尋另一個字串中的字串。

    • REGEX_REPLACE - 以替代子字串取代子字串。

    • SUBSTRING - 從特定位置開始擷取來源字串的一部分。

    • TRIM - 從來源字串的開頭或結尾移除指定字元的執行個體。

  • SQL 擴充功能:這些對於使用非結構化字串 (例如日誌和 URI) 非常有用。如需詳細資訊,請參閱 Amazon Managed Service for Apache Flink SQL 參考資料中的日誌剖析函數

    • FAST_REGEX_LOG_PARSER - 工作方式類似於 regex 剖析器,但需要幾個快捷方式來確保更快的結果。舉例來說,快速 regex 剖析器找到第一個匹配 (稱為懶惰語義) 後就會停止。

    • FIXED_COLUMN_LOG_PARSE - 剖析固定寬度欄位,並自動將其轉換為指定的 SQL 類型。

    • REGEX_LOG_PARSE - 根據預設 Java 規則運算式模式剖析字串。

    • SYS_LOG_PARSE - 剖析 UNIX/Linux 系統日誌中常見的項目。

    • VARIABLE_COLUMN_LOG_PARSE - 將輸入字串分割為以分隔符號字元或字串分隔的欄位。

    • W3C_LOG_PARSE - 可用於快速格式化 Apache 日誌。

如需使用這些函式的範例,請參閱主題: