Код: Выделить всё
StreamsBuilder builder = new StreamsBuilder();
KStream stream = builder.stream(inputTopic1); // key = "ABC"
GlobalKTable table = builder.globalTable(inputTopic2); // key = "ABC"
stream.join(table, // join first by "ABC" = "ABC", then by "AB" = "AB", then by "A" = "A"
(key, value) -> key,
(valueLeft, valueRigth) -> {/* identify by which condition the join was performed */});
- сначала присоединитесь по полному ключу - т.е. "ABC" = "ABC"
- затем, если не присоединитесь, присоединитесь по первым двум символам (удален один символ) - т.е. "AB" = "AB"
- наконец, попробуйте объединиться только по одному символу - т.е. "A" = "A"
Вопрос в том, возможно ли это вообще или стоит поискать обходной путь? Например, сделать копии GlobalKTable с соответствующими ключами (таблица с ключом «ABC», одна с ключом «AB» и одна с ключом «A») и выполнить 3 отдельных соединения? Или, может быть, есть другие предложения?
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/593 ... -condition