Добавить столбец метки времени в файл в функции Google Cloud Node.js - PullRequest
0 голосов
/ 10 июля 2019

Сейчас я копирую файлы из Google Cloud Storage в Bigquery, используя следующую строку в node.js:

const bigquery = new BigQuery();
bigquery.dataset(xx).table(xx).load(storage.bucket(bucketName).file(fileName));

Но теперь я бы хотел добавить новый столбец отметки времени в этот файл. Так как я могу это сделать?

Итак, два вопроса, о которых я мог подумать: Сначала прочитайте этот файл в какую-нибудь структуру данных, например массив:

array = FunctionToReadFileNameToArray(FileName); 

Есть ли у нас такая функция? Предположим, что у нас есть, тогда довольно просто манипулировать массивом, чтобы добавить столбец отметки времени.

Во-вторых, загрузите данные нового массива в bigquery. Но я нахожу только один способ вставить потоковые данные:

bigquery.dataset(xx).table(xx).insert(rows);

И здесь строки - это другая структура данных, например словарь / карта, но не массив. Так как же мы можем загрузить массив в bigquery?

Спасибо

1 Ответ

0 голосов
/ 10 июля 2019

Я собираюсь предположить, что у вас есть файл (объект) структурированных записей (JSON, XML, CSV). Первым заданием будет открытие этого объекта GCS для чтения. Затем вы читаете одну запись за раз. Затем вы добавите эту запись к желаемому дополнительному столбцу (метка времени) и затем вызовете API insert () . Этот API может принимать один объект для вставки или массив объектов.

Однако ... если это одноразовое событие или его можно выполнить в пакетном режиме ... вам может оказаться дешевле прочитать объект GCS и записать новый объект GCS, содержащий ваши нужные данные, а затем загрузить данные в БК как единое целое. Рассматривая расценки на BQ, мы, кажется, обнаруживаем, что потоковые вставки взимаются по цене 0,01 долл. США за 200 МБ в дополнение к расходам на хранение, которые можно было бы обойти за загрузку объекта GCS как единицу. Я думаю, что дополнительная работа по экономии копеек - это неэффективное использование времени / денег, но если вы обрабатываете ТБ данных в течение нескольких месяцев, это может сложиться.

...