Я пытаюсь выяснить, как загрузить долларовые значения в числовой столбец в BigQuery с помощью файла Avro.Я использую golang и пакет goavro для генерации файла avro.
Похоже, что соответствующий тип данных в go для обработки денег большой. Крыса.
BigQuery документация указывает на возможность использования Avro для этого.
Я вижу из нескольких тестов goavro , что кодирование * big.Rat в fixed.decimalвозможен тип.
Я использую goavro.OCFWriter для кодирования данных с использованием простой схемы avro следующим образом:
{
"type": "record",
"name": "MyData",
"fields": [
{
"name": "ID",
"type": [
"string"
]
},
{
"name": "Cost",
"type": [
"null",
{
"type": "fixed",
"size": 12,
"logicalType": "decimal",
"precision": 4,
"scale": 2
}
]
}
]
}
Я пытаюсь добавить данные с полем «Стоимость» какследует:
map[string]interface{}{"fixed.decimal": big.NewRat(617, 50)}
Это успешно закодировано, но полученный файл avro не загружается в BigQuery:
Err: load Table MyTable Job: {Location: ""; Message: "Error while reading data, error message: The Apache Avro library failed to parse the header with the following error: Missing Json field \"name\": {\"logicalType\":\"decimal\",\"precision\":4,\"scale\":2,\"size\":12,\"type\":\"fixed\"}"; Reason: "invalid"}
Так что я делаю что-то не так здесь ... Надеюсь, кто-то может указать мнев правильном направлении.