Skip to main content

Celonis Product Documentation

PROJECT_ON_OBJECT
Deprecated

Warning

Deprecated alias for CREATE_EVENTLOG, please use CREATE_EVENTLOG instead.

Warning

To use this operator, an OCPM data model is required.

Description

PROJECT_ON_OBJECT returns an activity table that is based on a given lead object and a set of included event types.

The main purpose of using PROJECT_ON_OBJECT is to generate an event log which is based on a given object perspective. The user defines the object as base for the projection as well as event types which will be included in the projection. The PROJECT_ON_OBJECT operator then calculates the resulting event instances which are generated by traversing the most direct join path between the object table and the event type tables.

The result tables are generated as followed: For each event type provided in the input parameters, the most direct path is calculated. Most direct means that the number of traversed objects is minimized. Direct paths between objects and events are preferred over connections via another object. In case two paths have equal length, one path is chosen deterministically. After calculating the mapping for each event type, the resulting events are then merged into one event table and the result contains each event instance at most once per case (deduplication). The result is joined to the respective lead object and contains all dimensions available on the event types. The calculated event log can be used as a drop in replacement for event logs when using PQL.

Syntax

PROJECT_ON_OBJECT returns a table. To access the columns, the TABLE.COLUMN syntax is used.

 PROJECT_ON_OBJECT ( object_table_name [ FILTER lead_object_filter ] , INCLUDE [included_event_1 [ VIA ( relationship_1 ) ] [ FILTER event_filter_1 ], included_event_2 [ VIA ( relationship_2 ) ] [ FILTER event_filter_2 ], ...]).column_name
  • object_table_name: The name of the object table, specifying the lead object that all events should be projected to.

  • lead_object_filter: An optional filter expression for the lead object table.

  • included_event_i: The name of the i-th event table that should be included in the projection.

  • relationship_i: The optional VIA keyword can be used per event to specify a named relationship over which to project. This overrides the default projection path.

  • event_filter_i: An optional filter expression for the i-th event table.

  • column_name: The name of the column, that should be accessed. This can be either one of the standard event log columns LEAD_OBJECT_ID, ACTIVITY, TIMESTAMP or any of the individual attributes from included event tables.

LEAD_OBJECT_ID, ACTIVITY and TIMESTAMP columns are generated by default, all other columns, consisting of individual attributes from included event tables, are lazily generated on demand.

  • LEAD_OBJECT_ID: Case identifier

  • ACTIVITY: Activity name

The result table of PROJECT_ON_OBJECT can be used like a classical event log and can for example be used to calculate KPIs across different objects (from the perspective of the given lead object).

This schema demonstrates how a simplified data model using different projections could look like. The data model contains three different object tables:

  • Sales Order: The Sales Order Header table.

  • Sales Order Item: The Sales Order Item table which is directly connected to the sales order header table.

  • Delivery Item: Deliveries are represented in this table. For the sake of simplicity, there is no delivery header table used in this example.

Additionally, there are several event type tables in this model:

  • Create SO:This is a shared event table which is directly connected to the Sales Order object table and, via a mapping table, connected to the Sales order item table.

  • Add SO Item: This object type table is directly connected to the Sales Order Item table.

  • Create Delivery Item: This is a shared event table which is directly connected to the Delivery Item object table and, via a mapping table, also connected to the Sales order item table.

The mapping tables are necessary to bind the shared events to the objects.

The following example table schema visualizes the lead object tables, the event type tables as well as the projections which are generated:

ProjectOnObject.png