У меня есть таблица BigQuery со столбцом LTV.Тип столбца - STRING.Я попытался привести этот столбец к FLOAT64, используя CAST(LTV AS FLOAT64)
, но получил ошибку «Bad double value: LTV» (стандарт bigquery).Я посмотрел на конкретную строку, которая вызывает ошибку (для многих строк она работает просто отлично), и я увидел, что значение равно «51 .0», что выглядит правдоподобно.Я запускаю этот запрос:
SELECT
LTV,
LENGTH(LTV) AS len_ltv,
SAFE_CAST(LTV AS FLOAT64) AS ltv_safe_cast,
CASE
WHEN LTV = '51.0' THEN 'eq'
ELSE 'neq'
END AS eq_str,
CAST(SAFE_CAST(LTV AS FLOAT64) AS STRING) AS ltv_double_cast,
CAST(SAFE_CAST(LTV AS FLOAT64) AS STRING) = LTV AS ltv_double_cast_eq_str
FROM
mytable
и получаю эти результаты .
Когда я сохраняю строку проблемный какCSV-файл, а затем снова загрузите его в виде таблицы с параметром «автоопределение», когда столбец LTV анализируется как FLOAT64.но когда я создаю схему и указываю, что тип столбца LTV равен STRING, загрузка не удалась ( file - я надеюсь, что файл останется в том же формате).
Running file results.csv
return "ASCIItext "
Печать файла на Python:
with open('results.csv') as f:
print(f)
" <_ io.TextIOWrapper name = 'results.csv' mode = 'r' encoding = 'UTF-8 '> "
Какие могут быть причины для этого?