Это слишком долго для комментария.
Когда я пытаюсь выполнить этот простой запрос:
select trip_distance
from `bigquery-public-data.new_york_taxi_trips.tlc_green_trips_*`
where _TABLE_SUFFIX in ('2014')
limit 100
Я получаю ошибку:
Ошибка запроса
Ошибка: невозможно прочитать поле 'trip_distance' типа FLOAT64 как NUMERIC
Я не видел эту ошибку раньше. На панели предварительного просмотра данные выглядят нормально. Я могу только предположить, что что-то запуталось в базовых данных. В 2014 году (при условии, что данные были загружены в этот период), тип данных не мог быть NUMERIC
- поэтому я не знаю, откуда взялся NUMERIC
.
Само собой разумеется - учитывая, что столбец не может быть прочитан вообще - столбец не может быть преобразован в любой другой тип, который я пробовал.
Я думаю, что данные повреждены. Я не уверен, с кем связаться в Google, но это должно быть исправлено или удалено.
EDIT:
Я понял. Данные NUMERIC
в самой последней версии таблицы (2018). Проблема в синтаксисе *
. Это использует самое последнее определение таблицы, и существует несовместимость типов. (Это может сделать преобразование, но это не так.
Я думаю, что вы выяснили, как запрашивать каждую таблицу независимо, чтобы вы могли обойти эту проблему.
Если это проблема, потому что вам нужно смешивать данные за разные годы, то вы можете создать представление, которое выполняет необходимые преобразования (хотя использование представления может увеличить стоимость ваших запросов).