Выполнение шаблона Dataprep с помощью Dataflow API содержит метку времени, включенную в рецепт потока - PullRequest
0 голосов
/ 06 июня 2018

У меня есть облачная функция, которая использует API потока данных для создания нового задания из шаблона, созданного с использованием DataPrep.Рецепт в основном очищает некоторые объекты JSON, превращает их в формат CSV и добавляет столбец отметки времени для извлечения всего из базы данных BigQuery.Основная идея - сделать снимок определенной информации о нашей платформе.

Мне удалось запустить задание из API потока данных, и данные правильно вставлены в таблицу больших запросов, однако в поле метки временизначение метки времени всегда одинаково и соответствует времени выполнения задания, из которого я беру шаблон (шаблон DataPrep).Когда я запускаю задание из интерфейса dataprep, эта временная метка вставляется правильно, но она не изменяется при выполнении задания с тем же шаблоном из облачной функции.

Фрагмент кода, который вызывает API-интерфейс потока данных:

dataflow.projects.templates.launch({
   projectId: projectId,
   location: location,
   gcsPath: jobTemplateUrl,
   resource: {
     parameters: {
       inputLocations : `{"location1" :"gs://${file.bucket}/${file.name}"}`,
       outputLocations: `{"location1" : "${location2}"}`,
       customGcsTempLocation: `gs://${destination.bucket}/${destination.tempFolder}`
     },
      environment: {
        tempLocation: `gs://${destination.bucket}/${destination.tempFolder}`,
        zone: "us-central1-f"
     },
     jobName: 'user-global-stats-flow',

   }
 }

Это снимок консоли выполнения потока данных, поскольку видно, что последние задания выполнялись из облачной функции, а нижнее - из интерфейса Dataprep:

Снимок консоли потока данных

Это часть рецепта, отвечающая за создание метки времени:

Пример рецепта Dataprep

Наконец, это то, что вставлено в таблицу BigQuery, где первая вставка с той же отметкой времени (строка 4) соответствует заданию, выполненному из Dataprep, а остальные - выполнению из облачной функции с API Dataflow:

Большой запрос вставки

Итак, вопрос в том, есть ли способ, которым я могу сделать Тимestamp должен быть решен во время выполнения задания для вставки, потому что теперь оно выглядит так, как будто оно исправлено в рецепте шаблона.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 01 мая 2019

Если я правильно понимаю, это задокументированное поведение.Из списка известны ограничения при запуске шаблона Dataprep через Dataflow :

Все относительные функции вычисляются на основе момента выполнения.Такие функции, как NOW () и TODAY, не пересчитываются при выполнении шаблона Cloud Dataflow.

...