3.5.4.3. S3 JSON の解析


JSON ドキュメントでは、オブジェクトまたは配列内で制限なく値をネストできます。S3 select エンジンで JSON ドキュメント内の特定の値をクエリーする場合、値の場所は SELECT ステートメントのパスで指定されます。

JSON ドキュメントの一般的な構造には、CSV や Parquet のような行と列の構造はありません。代わりに、SQL ステートメント自体が、JSON ドキュメントをクエリーするときに行と列を定義します。

S3 select エンジンの JSON パーサーは、S3 オブジェクトを次のように解析します。

  • SELECT ステートメントの FROM 句は行の境界を定義します。
  • JSON ドキュメント内の行は、行区切り文字を使用して CSV オブジェクトの行を定義する方法や、行グループを使用して Parquet オブジェクトの行を定義する方法と似ています。
  • 以下の例を考慮してください。

    {
        "firstName": "Joe",
        "lastName": "Jackson",
        "gender": "male",
        "age": "twenty"
    },
    
    {
        "firstName": "Joe_2",
        "lastName": "Jackson_2",
        "gender": "male",
        "age": 21
    },
    
    "phoneNumbers":
    [
        { "type": "home1", "number": "734928_1","addr": 11 },
        { "type": "home2", "number": "734928_2","addr": 22 }
    ],
    
    "key_after_array": "XXX",
    
    "description" :
    {
        "main_desc" : "value_1",
        "second_desc" : "value_2"
    }
    
    # the from-clause define a single row.
    # _1 points to root object level.
    # _1.age appears twice in Documnet-row, the last value is used for the operation.
    query = "select _1.firstname,_1.key_after_array,_1.age+4,_1.description.main_desc,_1.description.second_desc from s3object[*].aa.bb.cc;";
    
    expected_result = Joe_2,XXX,25,value_1,value_2

    • このステートメントは、リーダーにパス aa.bb.cc を検索するように指示し、このパスの出現に基づいて行の境界を定義します。
    • 行は、リーダーがパスを検出したときに始まり、リーダーがパスの最も内側の部分 (この場合はオブジェクト cc) を出たときに終了します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る