web-dev-qa-db-ja.com

Google BigqueryのREPEATEDフィールドはどういう意味ですか?

次の例で、REPEATEDフィールドの私の理解を確認してください。

{
    "title": "History of Alphabet",
    "author": [
        {
            "name": "Larry"
        },
    ]
}

このJSONにはスキーマがあります:

[
    {
        "name": "title",
        "type": "STRING"
    },
    {
        "name": "author",
        "type": "RECORD",
        "fields": [
            {
                "name": "name",
                "type": "STRING"
            }
        ]
    }
]

しかし、次のJSON

{
    "title": "History of Alphabet",
    "author": ["Larry", "Steve", "Eric"]
}

スキーマがあります:

[
    {
        "name": "title",
        "type": "STRING"
    },
    {
        "name": "author",
        "type": "STRING",
        "mode": "REPEATED"
    }
]

これは正しいです?

nb: documentation を試してみましたが、これについての説明はありません。

18
hans-t

閉じる。最初の例では、authorはオブジェクトの配列で、BQで繰り返されるレコードに対応しています。したがって、スキーマは次のようになります。

[
    {
        "name": "title",
        "type": "STRING"
    },
    {
        "name": "author",
        "type": "RECORD",
        "mode": "REPEATED",   <--- NOTE!
        "fields": [
            {
                "name": "name",
                "type": "STRING"
            }
        ]
    }
]

2番目のデータとスキーマのペアは適切に見えます(ただし、スキーマ全体はオブジェクトではなく配列であり、要素間にコンマが必要です)。

ネストされたフィールドと繰り返しフィールドについては、ここでいくつかの議論があります: https://cloud.google.com/bigquery/docs/data?hl=en#nested

ここにはいくつかのサンプルJSONデータオブジェクトもあります。 https://cloud.google.com/bigquery/preparing-data-for-bigquery#dataformats

しかし、これらのオブジェクトがBQスキーマにどのようにマップされるかを説明するのはうまくいきません。申し訳ありません!

19
Jeremy Condit