Ошибка «Bad double value» в Big-Query для ненулевого значения - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть таблица 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 '> "

Какие могут быть причины для этого?

1 Ответ

0 голосов
/ 03 февраля 2019

Какие могут быть причины для этого?

Возможно, что у вас есть строка заголовка (из наиболее вероятного исходного CSV-файла), загруженная в таблицу BigQuery, так что ваш код не может обработать эту точную строку

Вы можете запуститьПример ниже, чтобы воспроизвести эту точную проблему

#standardSQL
WITH t AS (SELECT 'LTV' AS LTV)
SELECT CAST(LTVAS FLOAT64)
FROM t

с результатом

Ошибка: Неверное двойное значение: LTV

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...