Я пытаюсь вставить приведенные ниже данные json в таблицу больших запросов с помощью процессора Nifi. PutBigQueryBatch 1.9.2
{
"Revenue_Label": "Dining Room",
"StoreName": "STORE A",
"Revenue_Id": "1",
"Alteration_Flag": "False",
"Order_Mode_Label": "DriveThru",
"checkClosetime": "2019-10-24T13:43:19+13:00",
"Alterations": [ {
"Alteration_Product_Code": "211136",
"Alteration_Product_Net_Amount": 0.0,
"Altered_Product_Code": "211135",
"Alteration_Product_Amount": 0.0,
"Altered_Product_Name": "Burger",
"Alteration_Product_Name": "Add Sauce",
"Alteration_Product_Qty": 1.0 } ],
"StoreId": "1234",
"dob": "20191024",
"Order_Mode_Id": "3",
"checknumber": "54321"}
Однако я продолжаю получать приведенную ниже ошибку
PutBigQueryBatch: поле RECORD должно содержать хотя бы одно подполе: java.lang.IllegalArgumentException: поле RECORD должно содержать хотя бы одно подполе
в свойствах PutBigQueryBatch, которые я использовалприведенное ниже определение схемы, которое соответствует определению таблицы BigQuery по порядку, режиму, имени и типу
[
{"mode": "NULLABLE","name": "Revenue_Label","type": "STRING"},
{"mode": "NULLABLE","name": "StoreName","type": "STRING"},
{"mode": "NULLABLE","name": "Revenue_Id", "type": "STRING" },
{"mode": "NULLABLE","name": "Alteration_Flag","type": "STRING"},
{"mode": "NULLABLE","name": "Order_Mode_Label","type": "STRING"},
{"mode": "NULLABLE","name": "checkClosetime","type": "TIMESTAMP" },
{"mode": "REPEATED",
"name": "Alterations",
"type": "RECORD",
"fields": [
{"mode": "NULLABLE","name": "Alteration_Product_Code", "type": "STRING" },
{"mode": "NULLABLE", "name": "Alteration_Product_Net_Amount", "type": "FLOAT" },
{"mode": "NULLABLE", "name": "Altered_Product_Code","type": "STRING" },
{"mode": "NULLABLE", "name": "Alteration_Product_Amount", "type": "FLOAT" },
{"mode": "NULLABLE", "name": "Altered_Product_Name", "type": "STRING" },
{"mode": "NULLABLE", "name": "Alteration_Product_Name", "type": "STRING" },
{"mode": "NULLABLE","name": "Alteration_Product_Qty", "type": "FLOAT" }
]
},
{"mode": "NULLABLE","name": "StoreId","type": "STRING"},
{"mode": "NULLABLE", "name": "dob","type": "STRING"},
{"mode": "NULLABLE","name": "Order_Mode_Id","type": "STRING"},
{"mode": "NULLABLE","name": "checknumber","type": "STRING" }
]
Что я пробовал:
- Удалены всепробелы и символы возврата каретки из потока json
- Попробовал массив в начале и конце файла json и сопоставил таблицу BigQuery с этим.
- Изменил Имена элементов на notвключить подчеркивания.
- Построил вставку по одному столбцу за раз и завершился неудачей только при наличии массива.
- Использовал сгенерированное определение схемыиз Google Cloud BigQuery напрямую при использовании утилиты "bq show --schema --format = prettyjson.
- Определен режим для каждого из элементов массива ТРЕБУЕТСЯ вместо NULLABLE.
- Удалено всепробелы и символы возврата каретки из определения схемы в свойствах процесса PutBigQueryBatch в Nifi
Все вылилось в ту же ошибку, как указано выше
Примечание В другом месте моего процесса nifi я успешно использую процесс PutBigQueryBatch и обновляю таблицу. Разница в том, что у json нет массива.
У кого-нибудь есть идеи, как решить проблему?