Во время моего рабочего процесса после извлечения данных из API JSON имеет следующую структуру:
[
{
"fields":
[
{
"meta": {
"app_type": "ios"
},
"name": "app_id",
"value": 100
},
{
"meta": {},
"name": "country",
"value": "AE"
},
{
"meta": {
"name": "Top"
},
"name": "position",
"value": 1
}
],
"metrics": {
"click": 1,
"price": 1,
"count": 1
}
}
]
Затем он сохраняется как .jsonl и помещается в GCS. Однако, когда я загружаю его в BigQuery для дальнейшего извлечения, автоматический вывод схемы возвращает следующую ошибку:
Error while reading data, error message: JSON parsing error in row starting at position 0: Could not convert value to string. Field: value; Value: 100
Я хочу преобразовать его в следующую структуру:
Есть ли способ определить ручную схему в BigQuery для достижения этого результата? Или мне нужно предварительно обработать файл jsonl, прежде чем помещать его в BigQuery?
Вероятно, у вас есть варианты:
app_id
в качестве INTEGER
100
в кавычки, например "100"
Одним из ограничений загрузки данных JSON из GCS в BigQuery является то, что он не поддерживает карты или словари в JSON.
Недопустимым примером будет:
"metrics": {
"click": 1,
"price": 1,
"count": 1
}
Ваш файл jsonl должен быть примерно таким:
{"app_type":"ios","app_id":"100","country":"AE","position":"Top","click":"1","price":"1","count":"1"}
Я уже протестировал его, и он отлично работает.
Поэтому, где бы вы ни преобразовывали файлы json в файлы jsonl и хранилище в GCS, вам придется выполнять некоторую предварительную обработку.