Skip to main content

Celonis Product Documentation

LINK_SOURCE - LINK_TARGET
Description

LINK_SOURCE/LINK_TARGET output columns that are generated according to the signal link configuration of the data model.

The signal link configuration connects activities (more precisely, rows in the corresponding activity tables) from different cases and activity tables using signal columns, resulting in a virtual edge table of directed edges between rows from the activity tables.

LINK_SOURCE outputs values from the outgoing or source side of an edge, LINK_TARGET outputs values from the incoming or target side of an edge. LINK_SOURCE and LINK_TARGET support multiple column expressions, so the edges between multiple tables can be combined in one output table.

Syntax
 LINK_SOURCE( activity_table1.column [, activity_table2.column] ...)
 LINK_TARGET( activity_table1.column [, activity_table2.column] ...)
  • The specified columns need to belong to different activity tables.

 LINK_SOURCE( BIND ( activity_table1, table1.column ) [, BIND ( activity_table2, table2.column ) ] ...)
 LINK_TARGET( BIND ( activity_table1, table1.column ) [, BIND ( activity_table2, table2.column ) ] ...)
  • If a column (e.g. table1.column) does not belong to an activity table it can first be pulled to an activity table using the BIND operator.

NULL handling
  • NULL values in the OUT and IN columns from the signal link configuration are ignored.

  • If in a row the value of a specified column is NULL, but the row still has a matching IN or OUT row, the result for this entry will be NULL as well.

Examples

[1]

Simple example on a single Activity table. The OUT column of the Activity table is specified as the outgoing edge and the IN column is specified as the incoming edge.

As the OUT value of activity B of case 1 is equal to the IN value of activity C of case 2, the edge B ➔ C is returned.

Query

Column1

         LINK_SOURCE ( "Activities"."ACTIVITY" )
        

Column2

         LINK_TARGET ( "Activities"."ACTIVITY" )
        

Input

Output

Activities

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

OUT : string

IN : string

'1'

'A'

Thu Dec 01 2016 13:00:00.000

null

null

'1'

'B'

Thu Dec 01 2016 13:01:00.000

'a'

null

'2'

'C'

Thu Dec 01 2016 13:02:00.000

null

'a'

'2'

'D'

Thu Dec 01 2016 13:03:00.000

null

null

Result

Column1 : string

Column2 : string

'B'

'C'

[2]

Simple example on the Case table. The OUT column of the Activity table is specified as the outgoing edge and the IN column is specified as the incoming edge.

The value column of the case table is pulled to the Activity table using BIND. Based on the outgoing and incoming edges in the Activity table, the edge B ➔ C is present, which links case 1 ➔ case 2. Therefore, the corresponding case values 5 ➔ 7 are returned as the result.

Query

Column1

         LINK_SOURCE ( BIND ( "Activities" , "Cases"."Value" ) )
        

Column2

         LINK_TARGET ( BIND ( "Activities" , "Cases"."Value" ) )
        

Input

Output

Activities

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

OUT : string

IN : string

'1'

'A'

Thu Dec 01 2016 13:00:00.000

null

null

'1'

'B'

Thu Dec 01 2016 13:01:00.000

'a'

null

'2'

'C'

Thu Dec 01 2016 13:02:00.000

null

'a'

'2'

'D'

Thu Dec 01 2016 13:03:00.000

null

null

Cases

CASE_ID : string

Value : int

'1'

5

'2'

7

Foreign Keys

Cases.CASE_ID

Activities.CASE_ID

Result

Column1 : int

Column2 : int

5

7

See also: