メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

JSON 関数

相対的に小さい一連のキーと値のペアを格納する必要がある場合は、データを JSON 形式で格納すると、スペースを節約できます。JSON 文字列は単一の列に格納できるため、データを表形式で格納するより、JSON を使用する方が効率的である可能性があります。例えば、スパース表があるとします。その表では、すべての属性を完全に表すために列が多数必要ですが、指定された行または指定された列のほとんどの列値が NULL であるとします。格納に JSON を使用することによって、行のデータを単一の JSON 文字列にキーと値のペアで格納できる可能性があり、格納データの少ない表の列を除去できる可能性があります。

その上、JSON 文字列を簡単に変更することによって、列を表に追加することなく、キーと値のペアをさらに格納することもできます。

JSON の使用は控えめにすることをお勧めします。JSON では、単一の列にさまざまなデータが格納され、Amazon Redshift の列格納アーキテクチャが活用されないため、JSON は大きいデータセットの格納には適していません。

JSON は UTF-8 でエンコードされたテキスト文字列を使用するため、JSON 文字列を CHAR データ型または VARCHAR データ型として格納できます。文字列にマルチバイト文字が含まれている場合は、VARCHAR を使用します。

JSON 文字列は、以下のルールに従って、正しくフォーマットされた JSON である必要があります。

  • ルートレベルの JSON には、JSON オブジェクトまたは JSON 配列を使用できます。JSON オブジェクトは、順序が設定されていない一連のキーと値のペアがカンマで区切られ、中括弧で囲まれたものです。

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

  • JSON 配列は、順序が設定された値がカンマで区切られ、角括弧で囲まれたものです。

    例: ["first", {"one":1}, "second", 3, null]

  • JSON 配列は、0 から始まるインデックスを使用します。配列内の最初の要素の位置は 0 です。JSON のキーと値のペアでは、キーは二重引用符で囲まれた文字列です。

  • JSON 値には以下のいずれかを使用できます。

    • JSON オブジェクト

    • JSON 配列

    • 文字列 (二重引用符付き)

    • 数値 (整数および浮動小数点数)

    • boolean

    • null

  • 空のオブジェクトおよび空の配列は、有効な JSON 値です。

  • JSON フィールドでは、大文字と小文字が区別されます。

  • JSON 構造要素 ({ }, [ ] など) は無視されます。

Amazon Redshift JSON 関数および Amazon Redshift COPY コマンドは、同じメソッドを使用して JSON 形式のデータを操作します。JSON の操作方法の詳細については、「JSON 形式からの COPY」を参照してください。