Я буду импортировать данные в файле JSON в Google BigQuery и хотел бы узнать, лучше ли вложить поля и добавить поле с режимом схемы «повторение», чтобы избежать дублирования или оставить дублированную информацию иметь меньше гнездовий. Еще одна причина оставить дублированную информацию, потому что, насколько я могу судить, BigQuery лучше всего работает с денормализованными данными. Однако я не уверен, должна ли эта денормализация выполняться после или до импорта данных.
Например, предположим, что мои данные:
Вложенная версия
{
"store": "Pete's Market",
"city": "NYC",
"product": [
{
"id": "2468",
"item": "apple",
"price": "$1"
},
{
"id": "1357",
"item": "cereal",
"price": "$3",
"brand": "Cheerios"
}
]
}
# The actual JSON data file will have this in one row:
# {"store":"Pete's Market","city":"NYC","product":[{"id":"2468","item":"apple","price":"$1"},{"id":"1357",item":"cereal","price":"$3","brand":"Cheerios"}]}
Дублированная версия информации
{
"store": "Pete's Market",
"city": "NYC",
"product":
{
"id": "2468",
"item": "apple",
"price": "$1"
}
}
{
"store": "Pete's Market",
"city": "NYC",
"product":
{
"id": "1357",
"item": "cereal",
"price": "$3",
"brand": "Cheerios"
}
}
# The actual JSON data file will have this in two rows:
# {"store":"Pete's Market","city":"NYC","product":{"id": "2468","item":"apple","price":"$1"}}
# {"store":"Pete's Market","city":"NYC","product":{"id":"1357",item":"cereal","price":"$3","brand":"Cheerios"}}
Дополнительные примечания
Могут быть тысячи products
, поле с повторением режима во вложенной версии. Некоторые products
могут иметь поля, которых нет у других. Поля в каждом product
могут иметь еще 2-3 вложенных уровня.
Повторяется вопрос
Лучше всего вкладывать поля и добавлять поле в режиме схемы «повторить» во избежание дублирования или оставить дублирующуюся информацию?