Я извлекаю данные из запроса в Google Biqquery. Я подключаюсь к Google API через скрипт Python, выполняю запрос внутри скрипта Python и записываю результаты запроса в файл CSV.
Когда я выполняю запрос из сценария для образца данных (100 строк), все выглядит хорошо. Но когда я выполняю сценарий для всех данных, он терпит неудачу.
UnicodeEncodeError: кодек 'ascii' не может кодировать символ u '\ xe7' в позиции 38: порядковый номер не в диапазоне (128)
Я вижу, что это ошибка Python, но это происходит, когда скрипт пытается обработать записи, которые имеют неанглийские символы.
Я столкнулся с той же проблемой в Hive, но я обошел ее с помощью функции RLIKE, приведенной ниже
(CASE WHEN FIELD1 not rlike '[^a-zA-Z()\\|\\d\\s\\(_)\\-\\(/):]' THEN FIELD1 ELSE 'data' END) AS FIELD1
Существует ли аналогичный метод или функция в Google BigQuery для поиска и замены неанглийских символов?
Или это может быть обработано в скриптах Python?
Фрагмент кода:
job_id, _results = MY_CLIENT.query("""select FIELD1, FIELD2, FIELD3, FIELD4 FROM TABLE1""", use_legacy_sql=True)
complete, row_count = MY_CLIENT.check_job(job_id)
results = MY_CLIENT.get_query_rows(job_id)
outfile = open('C:\\Users\\test.csv', 'w')
for row in results:
for key in row.keys():
if key == 'FIELD4':
outfile.write("%s" %str(row[key]))
else:
outfile.write("%s," %str(row[key]))
outfile.write("\n")
outfile.close()
Заранее спасибо за помощь!