Я работаю с BigQuery и пытаюсь использовать его для запроса файла CSV в корзине в Google Cloud Storage. Я столкнулся с некоторым странным поведением, когда - только когда в CSV есть 3 строки, а первая строка содержит строку в любом поле - при запросе таблицы первая строка отсутствует.

Действия по воспроизведению:

Создать myfile.csv:

testin,2,2
testing3,3,4

Скопируйте файл в GCS:

gsutil cp myfile.csv gs://bucket/

Создайте внешнюю таблицу, указывающую на gs://bucket/myfile.csv:

bq mk --external_table_definition=Field1:STRING,Field2:STRING,Field3:INTEGER@CSV=gs://bucket/myfile.csv dataset.table

Запросите таблицу, чтобы убедиться, что она работает:

bq query "SELECT * FROM dataset.table;"

Должен вывести следующее:

Waiting on biquery_job_id_1234567 ... (0s) Current 
status: DONE
+----------+--------+--------+
|  Field1  | Field2 | Field3 |
+----------+--------+--------+
| testin   | 2      |      2 |
| testing3 | 3      |      4 |
+----------+--------+--------+

Хорошо, что переходим к ошибке ..

Измените myfile.csv, чтобы он выглядел следующим образом:

1,h,3
testin,2,2
testing3,3,4

Перезаписать gs://bucket/myfile.csv:

gsutil cp myfile.csv gs://bucket/

Запросите dataset.table еще раз:

bq query "SELECT * FROM dataset.table;"

Выходы:

Waiting on bigquery_job_78901234 ... (0s) Current status: DONE
+----------+--------+--------+
|  Field1  | Field2 | Field3 |
+----------+--------+--------+
| testin   | 2      |      2 |
| testing3 | 3      |      4 |
+----------+--------+--------+

Убедимся, что файл GCS содержит правильные данные:

gsutil cat gs://bucket/myfile.csv

Выходы:

1,h,3
testin,2,2
testing3,3,4

Хорошо, интересно.

Измените это среднее значение в верхней строке так, чтобы myfile.csv выглядело следующим образом:

1,2,3
testin,2,2
testing3,3,4

Перезаписать файл GCS:

gsutil cp myfile.csv gs://bucket/

Запросить таблицу:

bq query "SELECT * FROM dataset.table;"

Выходы:

Waiting on bigquery_job_4567890 ... (0s) Current status: DONE
+----------+--------+--------+
|  Field1  | Field2 | Field3 |
+----------+--------+--------+
| 1        | 2      |      3 |
| testin   | 2      |      2 |
| testing3 | 3      |      4 |
+----------+--------+--------+

Есть ли у кого-нибудь представление о том, какие сценарии могут привести к отсутствию первой строки, если она содержит строку в первых двух полях?

Благодарность,

3
Mark Sanders 13 Фев 2018 в 23:18

1 ответ

Лучший ответ