Как заставить BigQuery автоматически определять схему со всеми строками? - PullRequest
1 голос
/ 31 мая 2019

Есть ли способ использовать --autodect в BigQuery, чтобы все новые поля обрабатывались как strings?

Проблема заключается в следующем: у меня есть файл csv, разделенный \t, и где все поля заключены в кавычки, как это '67.4'. Теперь, если я просто предоставлю схему, то разрыв bq load по причинам, которые я не могу понять. Если я делаю bq load --autodect, это работает нормально, но значения все еще в кавычках. Теперь я попытался сделать

bq load --autodetect --quote="'" --max_bad_records=10000 
--field_delimiter="\t" --source_format=CSV 
repo:abc.2017 gs://abc/abc_2017-*.csv.gz

Но теперь он ломается с

- gs://abc/abc_2017-04-16.csv.gz: Error while reading data,
error message: Could not parse '67.4' as int for field
int64_field_35 (position 35) starting at location 2138722

Вот одна строка, поля снова разделены вкладками:

'333933353332333633383339333033333337' '31373335434633' 'pre' 'E' '1' '333933383335333833393333333338333333333333383338' '2017-02-01 05:13:59 '' 29 '' 333733333330333033323339333933313335333333303333333333333336 '' 33333335333133393336333833333333333338333233383333333333333333333333333333333833323338333733333333333333333333333333383332333833373333333333333333333033333333333333333333333033 '33 '' '' '' '' '' '' '' '1

Идеи

1 Ответ

1 голос
/ 31 мая 2019

Автоопределение выборки схемы до первых 100 строк, поэтому, если столбец содержит все целые числа до первых 100 строк, тип данных будет целочисленным. Цель - флаг qoute - заключить столбец с указанным значением.

Пример:

Sample csv data:
col1, col2
1, "2"

Если вы не укажете --quote, то по умолчанию это будет ". Тип данных для col2 будет Integer, а значение будет 2.

Если вы укажете --quote, отличный от значения по умолчанию ", тогда он будет содержать данные с этим значением. Пример: --quote =" '", col2 будет типом String, а значение данных будет be "2" (сами двойные кавычки будут частью значения данных)

На данный момент вы не можете заставить схему автоопределения сделать так, чтобы все столбцы имели определенный тип данных, иначе, в конце концов, она не будет автоматически обнаруживаться. Возможно, вы захотите подать запрос функции, чтобы добавить еще один флаг для загрузки bq (и даже в пользовательском интерфейсе), чтобы сделать определенные столбцы определенного типа данных (например, я хочу сделать столбцы № 1, 2, 15, 100, ххх для be String или Все столбцы должны быть String / Integer / Numeric и т. д.).

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