title: How do you express denormalization joins in Apache Beam that stretch over long periods of time
body: <p>For context I've never used Beam. I'm trying to understand how to apply the Beam model to common use cases.</p>
  
  <p>Consider you have an unbounded collection of Producers and an unbounded collection of Products such that each Product has a Producer (one to many, Producer to Product). And you have the additional property that a Product's Producer appears before (or shortly after) its Product. But a Producer may appear years before its Product.</p>
  
  <p>If you want to produce an unbounded collection of Products with their Producers joined with them what's the appropriate way to express this? Having a windowed join that stretches out years seems to defeat the point of the window. But having the Producers as a side input doesn't seem to handle that Producers may appear very closely to when the Product appears.</p>
  
  <p>Is there an appropriate way to mix these two concepts?</p>