Добавьте параметры набора данных в столбец, чтобы позже использовать их в BigQuery с DataPrep - PullRequest
0 голосов
/ 19 февраля 2019

Я импортирую несколько файлов из Google Cloud Storage (GCS) через Google DataPrep и сохраняю результаты в таблицах Google BigQuery.Структура в GCS выглядит примерно так:

//source/user/me/datasets/{month}/2017-01-31-file.csv
//source/user/me/datasets/{month}/2017-02-28-file.csv
//source/user/me/datasets/{month}/2017-03-31-file.csv

Мы можем создать набор данных с параметрами, указанными на этой странице .Это все работает нормально, и я смог импортировать его правильно.

Однако в этой таблице BigQuery (вывод) у меня нет средств для извлечения только строк, например, с параметром month.

Как я мог бы добавить эти параметры набора данных (здесь: {month}) в мою таблицу BigQuery, используя DataPrep?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Хотя первоначальные ответы были верны на момент публикации, на прошлой неделе было выпущено обновление, добавившее ряд функций, которые не были специально рассмотрены в примечаниях к выпуску, включая другое решение для этого вопроса.

В дополнение к SOURCEROWNUMBER() (которое теперь также можно выразить как $sourcerownumber), теперь есть также ссылка на метаданные источника под названием $filepath, которая, как и следовало ожидать, сохраняет локальный путь к файлу в облачном хранилище.

Здесь есть ряд предостережений, например, он не возвращает значение для источников BigQuery и недоступен, если вы pivot, join или unnest.,,но в вашем сценарии вы можете легко перенести его в столбец и выполнить любое необходимое сопоставление или удаление, используя его.

ПРИМЕЧАНИЕ. Если образец источника данных был создан до этой функции, вам нужно будет создать новыйобразец, чтобы увидеть его в интерфейсе (вместо просто значений NULL).

Полные примечания для этих полей метаданных доступны здесь: https://cloud.google.com/dataprep/docs/html/Source-Metadata-References_136155148

0 голосов
/ 22 февраля 2019

В настоящее время нет доступа к расположению источника данных или значениям соответствия параметров в потоке.Вам доступны только данные в наборе данных.(кроме SOURCEROWNUMBER())

Частичное решение

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

Для каждого известного набора данных для поиска параметров есть рецепт, который заполняет столбец этим параметром для каждого набора данных, а затем объединяет результаты каждого из них.Single Row formula

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

Image of the flow described. В этом примере фильтруется только значение годапараметр.


Более длинное решение (в сторону)

Альтернативой этому я в конечном итоге катался, чтобы определить поток данныхзаданий, использующих Dataprep, используйте их в качестве шаблонов потока данных, а затем запустите функцию оркестровки, которая запустила задание потока данных (не dataprep) и изменила параметры для ввода И вывода через API.Затем была трансформация BigQuery Job, которая выполняла функцию добавления округления.

Стоит ли, если поток довольно устоялся, но не для adhoc;все зависит от вашей шкалы.

...