Flink SQL Enrichment Strategies on Confluent Cloud (and the AI Skill That Writes Them for You)

TLDR Rion Williams wrote the theory on four Flink enrichment strategies. I built the runnable SQL for Confluent Cloud, where a few things work differently than open-source Flink (no PROCTIME(), no JDBC lookup joins). External enrichment uses a regular LEFT JOIN against a compacted Kafka topic. Gradual enrichment uses an event-time temporal join that gives you version-correct customer data per order. Both run as pure Flink SQL on Confluent Cloud. I published a Flink SQL skill on the Tessl registry that generates these queries for you. Pair it with mcp-confluent and your AI assistant can write the SQL, create the topics, and submit the Flink statements without you leaving the editor. ...

April 12, 2026 · 8 min · Viktor Gamov

SELECT * FROM stream: An Interactive Guide to Flink's Table-Stream Duality

TLDR I built an interactive tutorial that teaches Flink SQL’s table-stream duality with animated visualizations you can explore in your browser. Six sections guide you from "what is a dynamic table" to writing live aggregation queries, with code examples in both SQL and the Table API. It is open source, MIT licensed, and I’m accepting feature requests at the GitHub repo. The Concept That Trips Everyone Up Every time I teach Flink SQL, I hit the same wall. The concept of table-stream duality makes perfect sense to me after years of experience, but I can see the exact moment when someone new to Flink gets confused. You say "a table is just a materialized view of a stream" and their eyes glaze over. By the time you say "a stream is just a changelog of a table" you’ve lost them entirely. ...

April 1, 2026 · 5 min · Viktor Gamov