Как создать конвейер, чтобы просто переименовывать столбцы? - PullRequest
0 голосов
/ 30 сентября 2019

Мой вариант использования довольно прост. Поставщик данных помещает файлы CSV в Google Storage каждый час. Один раз в день задание на перенос берет эти файлы и отправляет их в таблицу BigQuery. Проблема в том, что мне нужно переименовать эти поля.

Первое, что пришло мне в голову, - это просто использовать запланированный запрос, например

SELECT bad_field AS good_field (...) FROM raw_table

, и запланировать этот запрос, чтобы добавить результаты вхороший стол. Я не уверен, что это очень чистое решение, потому что я только начинаю с BigQuery.

Я также читал о DataFlow, но у меня нет опыта работы с этим сервисом.

Кто-нибудьбыл такой сценарий? Как ты с этим справился?

1 Ответ

2 голосов
/ 30 сентября 2019

Вы можете запланировать выполнение этой задачи локальным хроном и загрузить данные с полями с именами, которые вы хотите, в таблицу BigQuery. Все, что вам нужно сделать, это указать схему, на основе которой будут анализироваться ваши CSV-файлы, и вы будете хорошо именовать свои столбцы.

Допустим, ваш CSV-файл имеет 3 столбца, и выхотите, чтобы их назвали X,Y,Z. Затем вы можете запланировать выполнение этой команды gcloud для вас:

 bq --location=US \  
 load \ 
 --replace=false \ 
 --source_format=CSV \ 
 --skip_leading_rows=1 \ 
 `yourdataset.tablename` \ 
 gs://yourbucket/date/*.csv \ 
 --schema=X:STRING,Y:FLOAT,Z:STRING

Обратите внимание на следующее:

  • Параметр --skip_leading_rows=1 (который предполагает, что первая строкаявляется заголовком, и он просто пропускает его).
  • Параметр --replace=false (который не позволяет заданию перезаписывать, а добавлять к целевой таблице.
  • Параметр --schema, которыйзадает схему как разделенный запятыми список KEY:FORMAT.

Надеюсь, это поможет.

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