JoinStream Element

See how different cases of the JoinStream element migrate from AleriML to CCL.

Using joins in Event Stream Processor differs from Aleri Streaming Platform in several ways.
Aleri Streaming Platform Event Stream Processor
Supports inner joins only when joining insert-only streams. No restrictions on inner joins.
Does not support MANY-MANY. Supports MANY-MANY.
Supports specifying retention indirectly. Create a CopyStream with retention from the join source. Use this copy as the source for the join. Supports specifying retention directly on the join sources for memory stores only.
Note: For log stores, create a retention on the copy of the join source. Use this copy as the source for the join.
Join streams run in a single thread only. Multiple threads can be created depending on the complexity and type of the join.
Does not support joining a stream (stateless store element) with a window (memory store or log store element). Supports joining a stream (stateless store element) with a window. This join is performed when a record arrives on a stream, so that the stream acts as a trigger for the join.
Does not support deducing primary keys. The primary key can be deduced.
Does not support specifying multiple operations in single statement. Each operation must be defined separately. Supports specifying joins, filters, and aggregates in a single statement. The compiler breaks this into multiple threads.

Restrictions

Aleri Streaming Platform does not validate whether the key's fields on the target are valid for a join. It silently ignores any joins that produced null values and bad inserts, updates, and deletes. The compiler in Event Stream Processor strictly enforces what can be selected as keys within a join.
Note: See Key Field Rules in the CCL Programmers Guide.
As a result, joins that do not follow the key rules in AleriML do not compile when converted to CCL. To compile, you must edit the resulting CCL to correct the key fields.
Related reference
Known Limitations