#google-bigquery
# #google-bigquery
Вопрос:
Я хорошо знаю, как выглядит хороший вопрос по SO, и мне жаль, что я не могу поделиться данными, генерирующими ошибку, так что да, это плохой вопрос. Однако я получаю чрезвычайно загадочное сообщение об ошибке:
'Error while reading data, error message: CSV table references column position 42, but line starting at position:636 contains only 42 columns.'}, 'errors': [{'reason': 'invalid', 'location': 'XXXX', 'message': 'Error while reading data, error message: CSV table references column position 42, but line starting at position:636 contains only 42 columns.'}, {'reason': 'invalid', 'message': 'Error while reading data, error message: CSV processing encountered too many errors, giving up. Rows: 6285; errors: 1; max bad: 0; error percent: 0'}], 'state': 'DONE'}}
В сообщении об ошибке, похоже, говорится, что в конкретной моей строке 42 столбца, НО таблица (я предварительно определил схему, которая не генерируется автоматически) ожидает 42… что не имеет смысла. Есть понимание того, что происходит? Я просмотрел строку 6285, и мне ничего не кажется неправильным. Я не знаю, что означает позиция 636? В строке 6285 даже нет 500 символов. Может быть, в этом проблема? Что-то связано с неправильными символами новой строки или что-то в этом роде?
Комментарии:
1. Я видел подобную проблему на своей работе, если ваша таблица обновляется из файла, тогда лучше проверить строки в файле. Также попробуйте safe_cast поля, чтобы игнорировать ошибку. Не могли бы вы это проверить.
Ответ №1:
«Позиция» в ошибках импорта BigQuery CSV относится к смещению байтов от начала файла. Поэтому «строка, начинающаяся с позиции: 636» относится к строке, начинающейся с 636 байт от начала файла.
Что касается самого сообщения об ошибке: references column position 42, but line starting at position:636 contains only 42 columns
. Это говорит о том, что схема ожидает столбец «42» (с нулевым индексом?) но в этой строке недостаточно столбцов.
Если это ожидается, вы можете рассмотреть возможность включения --allow_jagged_rows
опции, которая будет рассматривать отсутствующие столбцы в конце строки как NULL вместо error .
Комментарии:
1. Как вы настраиваете схему? Содержит ли первая строка более 43 столбцов?