Использование Kiba: возможно ли определить и запустить два конвейера в одном файле? Использование промежуточного пункта назначения и второго источника

Моя обработка имеет этап "уплотнения" перед дальнейшей обработкой:

Источник: необработанные журналы событий / аналитики разных пользователей.

Преобразование: вставьте каждую строку в хеш согласно UserID.

Назначение / вывод: хэш в памяти, такой как:

{ 
  "user1" => [event, event,...], 
  "user2" => [event, event,...] 
}

Теперь у меня нет необходимости хранить эти группы пользователей где-либо, я просто хотел бы продолжить их обработку. Есть ли у Кибы общая схема использования промежуточного пункта назначения? Например

# First pass
source EventSource # 10,000 rows of single events
transform {|row| insert_into_user_hash(row)}
@users = Hash.new
destination UserDestination, users: @users

# Second pass
source UserSource, users: @users # 100 rows of grouped events, created in the previous step
transform {|row| analyse_user(row)} 

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

1 ответ

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

Тем не менее, у вас есть довольно много вариантов, прежде чем прибегнуть к разделению на 2 конвейера, в зависимости от вашего конкретного случая использования.

Я отправлю вам электронное письмо, чтобы задать несколько более подробных вопросов наедине, чтобы правильно ответить здесь позже.

Другие вопросы по тегам