JSON函數 - Amazon Redshift

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

JSON函數

注意

我們建議您使用下列函數來處理JSON:

使用 JSON _PARSE,您只需要在擷取時將JSON文字轉換為SUPER類型值一次,之後就可以對SUPER值進行操作。Amazon Redshift 比VARCHAR以文本JSON為基礎的函SUPER數的輸出更有效地解析值。如需使用資SUPER料類型的詳細資訊,請移至在 Amazon Redshift 中擷取和查詢半結構化資料

當您需要存儲一組相對較小的鍵值對時,可以通過以JSON格式存儲數據來節省空間。由於JSON字串可以儲存在單一資料行中,因此使用可JSON能會比以表格格式儲存資料更有效率。例如,假設您有一個稀疏資料表,其中您需要有許多資料行才能完全代表所有可能的屬性,但大部分的資料行值都是NULL針對任何指定資料列或任何指定資料行。透過使用 JSON for storage,您可以將資料列的資料儲存在單一JSON字串中的 key: value 組中,並排除稀疏填入的資料表資料行。

此外,當JSON結構定義變更時,您可以輕鬆修改JSON字串以儲存其他 key: value 配對,而不需要將資料欄新增至資料表。

我們建議JSON謹慎使用。JSON不是存放大型資料集的好選擇,因為透過將不同的資料存放在單一資料行中,JSON不會使用 Amazon Redshift 資料行存放區架構。雖然 Amazon Redshift 支援JSON函數CHAR和VARCHAR欄位,但我們建議您使用來處SUPER理JSON序列化格式的資料。SUPER使用可以有效地查詢分層數據的解析後無結構描述表示。如需資SUPER料類型的詳細資訊,請參閱在 Amazon Redshift 中擷取和查詢半結構化資料

JSON使用 UTF -8 編碼的文本字符串,因此JSON字符串可以存儲為CHAR或VARCHAR數據類型。

JSON字符串必須正確格式化JSON,根據以下規則:

  • 根級別JSON可以是對JSON象或數JSON組。JSON物件是一組以大括號括住的逗號分隔鍵:value 對的無序集合。

    例如 {"one":1, "two":2}

  • JSON陣列是一組以括號括住的逗號分隔值的有序集合。

    以下是範例:["first", {"one":1}, "second", 3, null]

  • JSON陣列使用從零開始的索引;陣列中的第一個元素位於 0 的位置。在JSON鍵:值對中,鍵是雙引號中的字符串。

  • JSON值可以是下列任一項:

    • JSON物件

    • 陣列

    • string

      • 使用雙引號表示

    • number

      • 包括整數、小數和浮點數

    • boolean

    • null

  • 空對象和空數組是有效JSON值。

  • JSON欄位區分大小寫。

  • 會忽略JSON結構元素之間的空白區域 (例如{ }, [ ])。

Amazon Redshift JSON 函數和 Amazon Redshift COPY 命令使用相同的方法來處理格式化的數據。JSON若要取得有關使用的更多資訊JSON,請參閱 COPY從JSON格式