Нужна помощь в создании схемы для загрузки CSV в BigQuery - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь загрузить некоторые файлы CSV в BigQuery из облачного хранилища Google и борюсь с созданием схемы. Существует опция автогенерации, но она плохо документирована. Проблема заключается в том, что если я решу позволить BigQuery генерировать схему, он прилично справится с угадыванием типов данных, но лишь иногда распознает первую строку данных как строку заголовка, а иногда нет (обрабатывает row как данные и генерирует имена столбцов, такие как string_field_N). Первые строки моих данных всегда строки заголовка. В некоторых таблицах есть много столбцов (более 30), и я не хочу возиться с синтаксисом схемы, потому что BigQuery всегда бомбит неинформативное сообщение об ошибке, когда что-то (я не знаю, что) не так со схемой.

Итак: Как я могу заставить его распознавать первую строку как строку заголовка? Если это невозможно, как мне заставить его выплюнуть сгенерированную им схему в правильном синтаксисе, чтобы я мог отредактировать ее (для соответствующих имен столбцов) и использовать ее в качестве схемы при импорте?

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Я бы порекомендовал сделать 2 вещи здесь:

  1. Предварительная обработка файла и сохранение окончательного макета файла без первой строки, т.е. строки заголовка
  2. BQ load принимает дополнительный параметр в виде файла схемы JSON, используйте его для явного определения схемы таблицы и передачи этого файла в качестве параметра. Это позволяет вам гибко изменять схему в любой момент времени, если требуется

Разрешение BQ для автоматического определения схемы не рекомендуется.

0 голосов
/ 23 января 2019

Да, вы можете изменить существующую схему (также известную как DDL), используя bq show ..

bq show --schema --format=prettyjson project_id:dataset.table > myschema.json

Обратите внимание, что в результате вы все вместе создадите новую таблицу BQ.

0 голосов
/ 22 января 2019

Если вы следуете документации GCP для Загрузка данных CSV из Google Cloud Storage , у вас есть опция , чтобы пропустить n рядов :

(Необязательно) Целое число, указывающее количество строк заголовка в исходных данных.

Параметр называется «Пропускать строки заголовка» в веб-интерфейсе, но он также доступен как флаг CLI (--skip_leading_rows) и как свойство API BigQuery (skipLeadingRows)

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