Я использую BigQuery для запроса внешнего источника данных (также известного как федеративная таблица), где исходные данные представляют собой паркетную таблицу с разделенными ульями, хранящуюся в облачном хранилище Google. Я использовал это руководство для определения таблицы.
Мой первый запрос для проверки этой таблицы выглядит следующим образом
SELECT * FROM my_dataset.my_table WHERE year=2019 AND day = "2019-01-01" LIMIT 10
Этот запрос не выполняется со следующей ошибкой
Столбец visitor_partition имеет тип INT64, который отличается от ожидаемого типа INT32
Я хочу знать, почему возникает эта ошибка и как ее обойти или устранить. Я провел небольшое исследование, используя библиотеку parquet-tools
, чтобы заглянуть во внутренние данные моего паркета.
Когда я запускаю java -jar ./parquet-tools-1.10.0.jar meta test.c000.gz.parquet | grep visitor_partition
над одним из моих файлов паркета, возвращаются следующие соответствующие строки
visitor_partition: OPTIONAL INT64 R:0 D:1
visitor_partition: INT64 GZIP DO:0 FPO:59420041 SZ:54561/537912/9.86 VC:633590 ENC:BIT_PACKED,PLAIN_DICTIONARY,RLE ST:[min: 0, max: 99, num_nulls: 0]
Когда я запускаю схему, команду, появляется следующая соответствующая информация о схеме optional int64 visitor_partition;
Так что ясно, что в этом файле паркета представлены данные для поля visitor_partition
как INT64. Так почему же BigQuery ожидает увидеть здесь тип INT32?