How to implement simple operation such as this in Kafka Streams?
#### department
id | name | type | active
#### employee
id | full_name | department_id
-- show number of employee for every active internal department
SELECT d.id, d.name, count(e.id) AS employee_count
FROM department d
-- left join, foreign key extracted from the right table
LEFT JOIN employee e ON d.id = e.department_id
WHERE d.type = 'I' AND d.active = true
GROUP BY d.id, d.name
For some reason Kafka Streams API doesn't allow extracting foreign key from the right table:
// key: id, value: department
KTable<Long, Department> kTableDepartment = ...;
// key: id, value: employee
KTable<Long, Employee> kTableEmployee = ...;
kTableDepartment.leftJoin(
kTableEmployee,
// foreign key extractor is available only for primary source (left table)
(Department department) -> ...,
new ValueJoiner<>() {
@Override
public Object apply(Department department, Employee employee) {
return ...;
}
});
question from:
https://stackoverflow.com/questions/65921488/is-there-a-workaround-for-foreignkeyextractor-restriction-for-ktable-ktable-left 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…