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

使用 Amazon S3 Select 篩選和擷取資料

利用 Amazon S3 Select,您可以使用結構式查詢語言 (SQL) 陳述式篩選與擷取 Amazon S3 物件內容,取得您只需要的資料子集。藉由使用 Amazon S3 Select 篩選資料,您可以降低 Amazon S3 的傳輸量,減少成本和擷取資料的延遲。

Amazon S3 選取只允許您一次查詢一個物件。它適用於以 CSV,JSON 或Apache Parquet格式存儲的對象。它也適用於使用 GZIP 或 BZIP2 壓縮的物件 (僅適用於 CSV 和 JSON 物件),以及伺服器端加密物件。您也可以指定結果格式,CSV 或 JSON,決定您要如何分隔記錄結果。

您在要求中,傳遞 SQL 運算式給 Amazon S3。Amazon S3 Select 支援 SQL 的子集。關於由 Amazon S3 Select 所支援的 SQL 元素之詳細資訊,請參閱 適用於 Amazon S3 Select 的 SQL 參考

您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、SelectObjectContent其餘 API 作業或 AWS 開發套件來執行 SQL 查詢。

注意

Amazon S3 主控台限制傳回資料檔流量為 40 MB。若要擷取更多資料,請使用 AWS CLI 或 API。

需求與限制

以下是使用 Amazon S3 Select 的需求:

  • 您必須擁有您正在查詢物件的 s3:GetObject 許可。

  • 如果要查詢的物件,使用客戶提供的加密金鑰 (SSE-C) 進行加密,您需使用 https,也必須在請求中提供加密金鑰。

以下是使用 Amazon S3 Select 時套用的限制:

  • S3 Select 每個請求只能查詢一個物件。

  • SQL 運算式字串的長度上限為 256 KB。

  • 輸入或結果記錄的長度上限為 1 MB。

  • Amazon S3 Select 只可使用 JSON 輸出格式發送巢狀資料。

  • 您無法查詢存放在 S3 Glacier 彈性擷取、S3 Glacier Deep Archive 或低冗餘儲存 (RRS) 儲存類別中的物件。您也無法查詢存放在 S3 智慧型分層封存存取層或 S3 智慧型分層深度存檔存取層中的物件。如需儲存體方案的詳細資訊,請參閱「使用 Amazon S3 儲存體方案」。

將 Amazon S3 選取與Parquet物件搭配使用時,會套用其他限制:

  • Amazon S3 Select 只支援使用 GZIP 或 Snappy 的單欄式壓縮。Amazon S3 選擇不支援物件的整個Parquet物件壓縮。

  • Amazon S3 Select 不支援 Parquet 輸出。您必須將輸出格式指定為 CSV 或 JSON。

  • 未壓縮的列群組大小上限為 512 MB。

  • 您必須使用物件結構描述中指定的資料類型。

  • 選取重複的欄位只會傳回最後一個值。

建構與要求

當您建構一項請求時,您需提供使用 InputSerialization 物件查詢的物件的詳細資訊。您提供使用 OutputSerialization 物件傳回結果的詳細資訊。也還包況括使用 Amazon S3 的 SQL 運算式,篩選要求。

如需建構 Amazon S3 Select 請求的詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 SelectObjectContent。您也可以在以下章節中,看到其中一則 SDK 程式碼範例:

使用掃描範圍的要求

Amazon S3 Select 可讓您以指定要查詢的位元範圍方式掃描一個物件的子集。此功能可讓您透過將一系列非重疊掃描範圍的工作分割成個別 Amazon S3 Select 要求的方式,平行掃描整個物件。

掃描範圍不需要與記錄界線對齊。Amazon S3 Select 掃描範圍要求將在指定的位元範圍中執行。記錄如果在指定的掃描範圍中開始,但超出掃描範圍,則會由查詢處理。例如:以下內容顯示了一個 Amazon S3 物件,其中包含以行分隔的 CSV 格式的一系列記錄:

A,B C,D D,E E,F G,H I,J

假設您使用 Amazon S3 Select ScanRange 參數,並以 (位元) 1 開始,然後以 (位元) 4 結束。因此,掃描範圍會從「,」開始,然後掃描至從記錄結尾 C 為止。您的掃描範圍請求將返回結果 C, D,因為這是記錄的結尾。

Amazon S3 選取掃描範圍請求支援Parquet、CSV (不含加引號的分隔符號) 或 JSON 物件 (僅限LINES模式)。CSV 和 JSON 物件必須為未壓縮。如為行式 CSV 和 JSON 物件,當掃描範圍指定為 Amazon S3 Select 要求的一部��時,所有在掃描範圍內開始的記錄都會進行處理。如為 Parquet 物件,所有在請求的掃描範圍內開始的列群組都會進行處理。

Amazon S3 精選掃描範圍請求可與 Amazon S3 API 和 AWS 開發套件搭配使用。 AWS CLI您可以在此功能的 Amazon S3 Select 要求中使用 ScanRange 參數。如需詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 SelectObjectContent

錯誤

當 Amazon S3 Select 嘗試執行查詢且遇到問題時,會傳回錯誤代碼及其相關訊息。如需錯誤代碼和說明清單,請參閱 Amazon Simple Storage Service API 參考中,錯誤回應頁面的 SELECT 物件內容錯誤代碼清單一節。

如需 Amazon S3 Select 的詳細資訊,請參閱下方主題。