- Analyse is interface between the data and the end-users.
You help
make digital business processes transparent
- The key of a Package or an Asset allows you to uniquely identify it
throughout your Celonis team. You can have multiple Packages with
the same name but their keys need to be different. The same goes for
Asset names and keys. Whenever you create a Package, a new unique
key gets generated automatically. Once created , can not change.
- flexibility to organize analyses and other assets according to your
needs. Besides Packages, you have another layer available to you for
organizing your assets: "Spaces."
- Each analysis in the package can be linked to a different data model or
knowledge model.
- Publish version format : MAJOR.MINOR.PATCH (for example, 1.2.1).
- Analysis Setting:
o Allow BPMN Export: Enable this to allow users to see data and
visualization export options from the Variant Explorer and the
Process Explorer as well as charts and tables.
o Enable Selection Views: Activate this if you want the Selection
Views to be available to users to filter on cases such as any
attribute available in the analysis
- Give the user permission for all the analyses in the package, then
giving the user such permission at Package-level is more efficient.
- Your business user needs to investigate how the cases are flowing into
undesired activities, in other words, see the predecessor activities.
Create Process Explorer
- In the full-screen Process Explorer ("Process Explorer" option when
adding a new sheet), users can click on activity and see its
predecessor and successor activities. This is not possible with the
Process Explorer as a component on a sheet.
-
-
- Limit rows: First K rows
you wanted to give more control to the analysis user? You could allow
them to drill in, by peeling the layers so to say. First K row will
summarize other categories into “Others “
- 4 types of single KPI components
they are all come with
descriptive text so end users understand how to use them.
- To exclude a component from the filter, you can activate the
"Component is not filtered with selection" checkbox. This way, the
component will be static. In that case, note the fact that the KPI is
static in the title.
- Selection Components
- Design Components
- Button Actions
- Standard Process KPI
- In Standard Process KPI, Ratio of cases with a certain process
flow, we can calculate the ratio of cases that have gone through two
or more specific activities
- What activity table contains :
o 1. Case key specifies which object you follow through the
process. As we are analyzing a Purchase-to-Pay process in this
training, the objects we are following through the process are
single purchase order items.
o Activity : Contains all the activities that have been carried out for
the purchase order items.
o Event time: contains the point in time at which the activities
have been conducted.
- How activity table created : Functional Engineers identify the digital
footprints in the source system and then consolidate them in the
Activity Table. A digital footprint, at minimum, includes what has been
done (activity), when it has been done (time), and which unique
identifier is it associated with (e.g. sales order number).
- Customer KPI:
- Activity selection formula builder. This functionality allows you to
analyze cases that flow through one or more specific activities.
Example : Sum of price changes for each vendor
- Conformance checker compares every single case to your to-be
process model and provides automated insights on the performance of
the process. But a conformance checker needs a defined process
model to evaluate the conformance of cases.
- add multiple filters by closing each statement with a semicolon (;).
- Background filters (static, can not be removed) can be applied at
three levels:
A component (such as a Process Explorer or an OLAP Table)
o Right-click on the component and select "Component filter".
o In the Load Script field / Code Editor, insert the PQL code.
A sheet (bottom of sheet )
o Click the 'settings icon' next to sheet name.
o Click the 'Load Script' tab.
o In the Load Script field / Code Editor, insert the PQL code.
The entire Analysis
o Go to the Analysis settings menu.
o Click the 'Load Script' tab.
o In the Load Script field / Code Editor, insert the PQL code.
- Dynamic filter Variables are stored on analysis level, not sheet level,
as you can use them across your whole analysis.
- Create two variables: Vendor1 and Vendor2. Add the two Button
Dropdowns from the component menu, one above each of the two
Process Explorers. We want the Button Dropdowns to display all vendor
names Configure Load Input in setting
- Make the dropdown titles and Process Explorer titles dynamic by
inserting the appropriate variable in the titles. Which operator can you
use to call a variable? <%=VARIABLE%>
- Now we want to make the two Process Explorers dynamic.
Where can you insert the variables to dynamically filter according to
the vendor selected in the Dropdown Button? Component filter
Build PQL –
- The case attribute indicates which process instance the event belongs
to. A process instance is called a case, usually consisting of multiple
events.
- The activity attribute describes the action that is captured by the
event. E.g from receiving the order, to cooking the meal, delivery, and
payment.
- Celonis PQL is not supported by a data manipulation language (DML).
As all updates in the Process Mining scenario should come from the
source systems, there is no need to manipulate and update the data
through the query language directly.
- Celonis PQL does not provide any data definition language
(DDL).
As the data model is created by a visual data model editor and stored
internally, there has not been any need for creating and modifying
database objects
- In contrast to SQL, Celonis PQL is domain-specific and offers a wide
range of Process Mining operators not available in SQL.
- Aggregation by data column, which we call a KPI, or an unaggregated
column, which we call a dimension.
- No need to define join , it implicitly joins the tables according to
their foreign key relationships which have to be defined only once
in the data model.
- the grouping clause is not needed in Celonis PQL as each selected
column which is not aggregated (i.e. a dimension) is implicitly used
as a grouper. Simply formula , reduce size & complexity
Functions:
- Aggregation : COUNT, AVG, STDEV, QUANTILE
- Data flow functions : Conditional changes of value : REMAP_VALUES,
CASE WHEN
- Process functions : discovering process models, clustering
variants,checking the conformance of a process model to the event
data.Examples: CALC_REWORK, PROCESS EQUALS, VARIANT
- Math functions: SQRT, FLOOR, LOG
- String modification - LEFT, RTRIM, REPLACE, SUBSTRING
- Date & Time functions - modify, project or round a date or time value
- Boolean values are not directly supported, but can be represented as
integers.
- See the highest order value we ever had :
MAX("orders"."value")
- Data Explorer : generate KPIs , Filter , variables to save into model. t is
only visible inside Studio, lives on top of KM
- LTRIM and RTRIM do to the strings in your column: Instead of hair tips,
they cut off leading or trailing whitespaces from strings to make them
look pretty(ier) again
- CONCAT allows you to also combine strings with INT and FLOAT. Those
types are automatically converted to STRING behind the scenes before
the concatenation is executed. CONCAT(column 1, Column 2)
- Use REPLACE for a bit more advanced operations by working with
columns as a parameter for the pattern as well as the replacement.
- AVG(CASE WHEN "Activities"."Activity" LIKE 'Change%'
THEN 1 ElSE 0 END)
- PROCESS EQUALS operator, which is less powerful than the
MATCH_PROCESS_REGEX function, but simpler to use
- MATCH_PROCESS_REGEX. This function filters the process variants
based on a regular expression applied to the activities. It is built from a
sequence of characters that define this search pattern
- calculate the maximum throughput time between the start of the case
and scanning the first invoice? MAX(CALC_THROUGHPUT
(CASE_START TO FIRST_OCCURRENCE ['Scan Invoice'] ,
REMAP_TIMESTAMPS ( "ACTIVITIES"."EVENTTIME", DAYS)))
- CALC_REWORK ( "ACTIVITIES"."ACTIVITY" = 'Change Quantity' )
- CASE WHEN CALC_REWORK ("ACTIVITIES"."ACTIVITY" = 'Change Quantity') > 1
- THEN 'Rework' ELSE 'No Rework' END
- AVG (CASE WHEN CALC_REWORK ("ACTIVITIES"."ACTIVITY" = 'Change Quantity')
> 1 THEN 1 ELSE 0 END)
- Case_CROP : "cropping points", you again use
the FIRST_OCCURRENCE, LAST_OCCURRENCE, CASE_START and CASE_
END
- Crop from the first to the last time you have scanned an
invoice? CALC_CROP(FIRST_OCCURRENCE['Scan Invoice'] TO
LAST_OCCURRENCE['Scan Invoice'], "ACTIVITIES"."ACTIVITY")
o it can be used to calculate the number of activities that happen
between the two specified activities per case. Or it can be used
in CASE WHEN or FILTER statements to only focus on this part of
the process.
- CALC_CROP_TO_NULL: if you don’t want to map the activities inside
your specified range to 1 but prefer to keep the value instead?
- PQL function that would return the position of each activity within a
case: INDEX_ACTIVITY_ORDER("ACTIVITIES"."ACTIVITY")
- REMAP_VALUES has been built exactly for its purpose and
outperforms the CASE WHEN alternative by far. Not only the
computation time is less when using REMAP_VALUES but also the
syntax is more compact as you can see below:
Data Model with several tables linked with one-to-many (1:N)
relationships. When we write a PQL query that involves multiple tables in
the same component, we always consider the implicit left-outer join that
occurs in the background.
- the common table is the table on
the most N-side.
- As an example, for Table C and Table D,
Table A is identified as the common table,
because it connects Table C and Table D,
- A PQL query is executed in the following
order: Join and regular PQL functions
( non aggregations) Filter Standard
aggregation ( AVG, COUNT, SUM e.t.c_
PU_X (“Target Table”, “source table”.”source
column”) Target table is always at 1 (:N) side.
- 3 PU-functions that don’t correspond to a regular aggregation:
PU_FIRST, PU_LAST and PU_STRING_AGG.
- Examples: FILTER PU_COUNT ( "Cases", "Activities"."Activity" ) > 3;
PU_COUNT ( "Cases", "Activities"."Activity", "Activities"."Activity"
LIKE 'A' )
- Creating a temporary column on the 1-side table provides another
valuable feature: You can reduce the number of implicit joins in your
query and aggregate data from tables that are not directly linked!
- PU_COUNT("Cases", "Activities"."Activity",
"Activities"."Activity" = 'Activity A')
If we have a case where we need to use tables that are on the one-side, so
a 1:N:1 relationship, we need to use the command BIND.
- PU_SUM("Authors", BIND("Book_Author_Mapping", PU_SUM
("Books", "Chapters"."Number of Pages")) )
- What would be the formula for the average sum of Table A values
grouped by Table D ID (at D level)?--> AVG(PU_SUM(“Table D”, “Table
A”.”Value”)). Group by = Target