Мне было интересно, возможно ли использовать оператор if в конвейере лучей для принятия другого преобразования на основе разных сценариев.Например:
1) Сделайте один из входных аргументов засыпкой / регулярным, а затем на основе этого входного аргумента он решит, начинать ли с
(p
| fileio.MatchFiles(known_args.input_bucket)
| fileio.ReadMatches()
| beam.Map(lambda file: file.metadata.path, json.loads(file.read_utf8())))
или
p | beam.io.ReadFromText(known_args.input_file_name)
2) Если имя файла содержит определенное название страны (например, США), позвоните TransformUSA(beam.DoFn)
, иначе позвоните TransformAllCountries(beam.DoFn)
Извините, если это не очень хороший вопрос, я не виделэто где-то еще, и я пытаюсь сделать мой код модульным вместо того, чтобы иметь отдельные конвейеры