Какое преобразование использовать в Dataflow для объединения файлов CSV с разными столбцами при загрузке их в BigQuery? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть несколько CSV-файлов, для которых мне нужна отдельная таблица. Проблема заключается в том, что файлы имеют разные столбцы - большинство столбцов одинаковы, за исключением 1 или максимум 2, которые меняются. Загрузка их в BigQuery из GCS с использованием графического интерфейса пользователя дает неверные результаты или вообще дает сбой. Более того, всякий раз, когда отсутствует столбец YEAR, я хотел бы указать значение вручную для всего файла.
Мы можем посмотреть следующие 2 файла для демонстрации -

file1. csv -

ITEM,TYPE,COLOR,YEAR
a,1,red,2010
b,2,blue,2010
c,3,green,2010

file1.csv где YEAR будет 2012 (местоположение отсутствующего столбца не должно быть в конце) -

ITEM,TYPE,COLOR
d,3,yellow
e,2,orange
f,1,cyan

Объединенные файлы в одну таблицу BigQuery будут выглядеть так:

+------+------+--------+------+
| ITEM | TYPE | COLOR  | YEAR |
+------+------+--------+------+
| a    |    1 | red    | 2010 |
| b    |    2 | blue   | 2010 |
| c    |    3 | green  | 2010 |
| d    |    3 | yellow | 2012 |
| e    |    2 | orange | 2012 |
| f    |    1 | cyan   | 2012 |
+------+------+--------+------+

Я хотел бы знать, возможно ли выполнять подобные преобразования (желательно с использованием Python SDK Apache Beam ?) во время чтения файлов из GCS и загрузки их в виде таблиц в BigQuery.

Лучше использовать SDK или предоставить собственный файл шаблона для запуска из GCS (как показывает поток данных GUI)?

Любой ресурс на нем будет оценен.

1 Ответ

1 голос
/ 11 марта 2020

Пожалуйста, посмотрите на это , где вы можете найти руководство, использующее API потока данных python для получения данных из файла CSV и записи их в BigQuery.

Вот еще руководство , которое также принимает данные из CSV-файла и выполняет базовые c преобразования типов данных путем перевода формата даты из исходных данных в формат даты, принятый BigQuery.

Относительно вашего вопроса "Является ли это лучше использовать SDK или предоставить собственный файл шаблона для запуска из GCS (как показывает поток данных GUI)? Я считаю, что это вопрос личных предпочтений, ни один из них не лучше, чем другой.

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

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