Существует несколько различных подходов к этому, но большая часть вашего варианта использования может быть решена с помощью предоставленного Google потока данных шаблонов . При использовании шаблонов световые преобразования можно выполнить в JavaScript UDF. Это избавляет вас от необходимости поддерживать весь конвейер и записывать только преобразования, необходимые для ваших входящих данных.
Если вы принимаете много файлов, введенных в виде потока в Cloud Pub / Sub, помните, что Cloud Pub / Sub не имеет никаких гарантий при упорядочении, поэтому записи из разных файлов, вероятно, будут смешаны в выводе. Если вы хотите захватить весь файл как есть, лучшим вариантом будет загрузка непосредственно в GCS.
Используя предоставленные шаблоны: Cloud Pub / Sub для BigQuery или GCS для BigQuery , вы можете использовать простой UDF для преобразования данных из формата CSV в формат JSON, соответствующий Схема таблицы вывода BigQuery.
Например, если у вас были записи CSV, такие как:
transactionDate,product,retailPrice,cost,paymentType
2018-01-08,Product1,99.99,79.99,Visa
Вы можете написать UDF для преобразования этих данных в вашу схему вывода следующим образом:
function transform(line) {
var values = line.split(',');
// Construct output and add transformations
var obj = new Object();
obj.transactionDate = values[0];
obj.product = values[1];
obj.retailPrice = values[2];
obj.cost = values[3];
obj.marginPct = (obj.retailPrice - obj.cost) / obj.retailPrice;
obj.paymentType = values[4];
var jsonString = JSON.stringify(obj);
return jsonString;
}