Подтвердить что ты не робот

Что означает поле REPEATED в Google Bigquery?

Пожалуйста, проверьте мое понимание поля 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: Я пытался просмотреть документацию , но не могу найти объяснения об этом.

4b9b3361

Ответ 1

Закрыть. В вашем первом примере author представляет собой массив объектов, что соответствует повторной записи в BQ. Таким образом, схема будет выглядеть следующим образом:

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

Ваша вторая пара данных/схемы выглядит хорошо (но обратите внимание, что общая схема представляет собой массив, а не объект, и ему нужны запятые между элементами).

Здесь обсуждаются вложенные и повторяющиеся поля: https://cloud.google.com/bigquery/docs/data?hl=en#nested

Здесь также есть некоторые примеры объектов данных JSON: https://cloud.google.com/bigquery/preparing-data-for-bigquery#dataformats

Но я согласен, что мы не очень хорошо объясняем, как эти объекты сопоставляются с схемами BQ. Извините за это!