Skip to main content

PQL46 (PQL Function Library - CPM 4.6)

PU_MAX

Applies to: CELONIS 4.0 CELONIS 4.2 CELONIS 4.3 CELONIS 4.4 CELONIS 4.5 CELONIS 4.6

Description

Calculates the maximum of the specified column for each element of the given child table.

Like the regular MAX operator, the column can either be an INT , FLOAT or DATE column. The data type of the result is the same as the input column data type.

If no value in the parent table exists for the element in the child table (either because all values of the parent table column are filtered out, or because no corresponding value exists in the first place), NULL will be returned.

Syntax
PU_MAX ( child_table, parent_table.column [, filter_expression] )
PU_MAX ( DOMAIN_TABLE ( column1,...,columnN ), parent_table.column [, filter_expression] )
Examples

[1] Calculate the maximum of the case table values for each company code.

Query

Column1

"companyDetail"."companyCode"

Column2

PU_MAX ( "companyDetail" , "caseTable"."value" )

Input

Output

caseTable

caseId : INT

companyCode : STRING

value : INT

1

'001'

600

2

'001'

400

3

'001'

200

4

'002'

300

5

'002'

300

6

'003'

200

companyDetail

companyCode : STRING

country : STRING

'001'

'DE'

'002'

'DE'

'003'

'US'

Foreign Keys

caseTable.companyCode

companyDetail.companyCode

Result

Column1 : STRING

Column2 : INT

'001'

600

'002'

300

'003'

200

[2] PU functions can be used in a FILTER. In this example, the company codes are filtered such that the corresponding maximum case table value is smaller than 600.

Query

Filter

FILTER PU_MAX ( "companyDetail" , "caseTable"."value" ) < 600;

Column1

"companyDetail"."companyCode"

Input

Output

caseTable

caseId : INT

companyCode : STRING

value : INT

1

'001'

600

2

'001'

400

3

'001'

200

4

'002'

300

5

'002'

300

6

'003'

200

companyDetail

companyCode : STRING

country : STRING

'001'

'DE'

'002'

'DE'

'003'

'US'

Foreign Keys

caseTable.companyCode

companyDetail.companyCode

Result

Column1 : STRING

'002'

'003'

[3] PU functions can be used inside another aggregation function . In this example, the sum of all maximum case table values for each company code is calculated.

Query

Column1

SUM ( PU_MAX ( "companyDetail" , "caseTable"."value" ) )

Input

Output

caseTable

caseId : INT

companyCode : STRING

value : INT

1

'001'

600

2

'001'

400

3

'001'

200

4

'002'

300

5

'002'

300

6

'003'

200

companyDetail

companyCode : STRING

country : STRING

'001'

'DE'

'002'

'DE'

'003'

'US'

Foreign Keys

caseTable.companyCode

companyDetail.companyCode

Result

Column1 : INT

1100

[4] Calculate the maximum of the case table values for each company code. Only consider cases with an ID larger than 2.

Query

Column1

"companyDetail"."companyCode"

Column2

PU_MAX ( "companyDetail" , "caseTable"."value" , "caseTable"."caseID" > 2 )

Input

Output

caseTable

caseId : INT

companyCode : STRING

value : INT

1

'001'

600

2

'001'

400

3

'001'

200

4

'002'

300

5

'002'

300

6

'003'

200

companyDetail

companyCode : STRING

country : STRING

'001'

'DE'

'002'

'DE'

'003'

'US'

Foreign Keys

caseTable.companyCode

companyDetail.companyCode

Result

Column1 : STRING

Column2 : INT

'001'

200

'002'

300

'003'

200

[5] Calculate the maximum of the case table values for each company code. Only consider cases with an ID larger than 3. All case table values for companyCode '001' are filtered out, which means that in this case, NULL is returned.

Query

Column1

"companyDetail"."companyCode"

Column2

PU_MAX ( "companyDetail" , "caseTable"."value" , "caseTable"."caseID" > 3 )

Input

Output

caseTable

caseId : INT

companyCode : STRING

value : INT

1

'001'

600

2

'001'

400

3

'001'

200

4

'002'

300

5

'002'

300

6

'003'

200

companyDetail

companyCode : STRING

country : STRING

'001'

'DE'

'002'

'DE'

'003'

'US'

Foreign Keys

caseTable.companyCode

companyDetail.companyCode

Result

Column1 : STRING

Column2 : INT

'001'

null

'002'

300

'003'

200

[6] Example over three tables: For each entry in table B, calculate the maximum of the values that are smaller than 500 in table C. Tables B and C do not have a direct connection, but are connected via table A.

Query

Column1

"B"."B_KEY"

Column2

PU_MAX ( "B" , "C"."VALUE" , "C"."VALUE" < 500 )

Input

Output

A

B_KEY : INT

C_KEY : STRING

VALUE : INT

1

'A'

100

1

'B'

200

2

'C'

300

2

'D'

400

3

'E'

500

3

'F'

600

B

B_KEY : INT

1

2

C

C_KEY : STRING

VALUE : INT

'A'

400

'A'companyDetail

100

'A'

200

'B'

100

'C'

200

'D'

500

Foreign Keys

C.C_KEY

A.C_KEY

B.B_KEY

A.B_KEY

Result

Column1 : INT

Column2 : INT

1

400

2

200

[7] For each case ID, calculate the maximum of the case table values for the associated company code using DOMAIN_TABLE.

Query

Column1

"caseTable"."caseId"

Column2

PU_MAX(DOMAIN_TABLE("caseTable"."companyCode"), "caseTable"."value")

Input

Output

caseTable

caseId : INT

companyCode : STRING

value : INT

1

'001'

600

2

'001'

400

3

'001'

200

4

'002'

300

5

'002'

300

6

'003'

200

Result

Column1: INT

Column2 : INT

1

600

2

600

3

600

4

300

5

300

6

200