Skip to main content

Hello everyone!

Ive got some trouble with unique case aggregation. Ive got case table with column Amount, and events table with status of process. I want to build table wich consist of some columns from case table, avg timestamp between two activities, and sum (casetable.amount).

So, I build filter on list:

FILTER PROCESS EQUALS (X) TO (A) ;

And filters on component(Table):

FILTER SOURCE(Celonis_events.activity) LIKE (X) ;

FILTER Target(Celonis_events.activity) LIKE (A) ;

Next, i build table dimensions:

  1. CELONIS_CASES.BUNAME
  2. CELONIS_CASES.GJAHR
  3. SOURCE(CELONIS_EVENTS.ACTIVITY) - not visible
  4. Target(CELONIS_EVENTS.ACTIVITY) - not visible

AND KPIS of table:

  1. AVG(TARGET(REMAP_TIMESTAMPS(CELONIS_EVENTS.EVENTTIME, MINUTES)) - SOURCE(REMAP_TIMESTAMPS(CELONIS_EVENTS.EVENTTIME, MINUTES)))

2)SUM(CELONIS_CASES.AMOUNT)

All good, but if within one case we got more than one change status from (X) TO (A) activities - we got (CELONIS_CASES".AMOUNT)*(Count of (X) TO (A) ) and its wrong, because case got fixed amount.

How can i get only unique cases in SUM(CELONIS_CASES.AMOUNT)? Or better solution?

Thanks!

Best,

Anton

Hi Anton,

This issue arises due to your first KPI which calculates the average throughput time between the two activities. You can visualize the problem by deleting the AVG() within the throughput time KPI. Now you see one row per status change and if there is more than one status change per case ID, the AMOUNT is then multiplied by the number of rows which equals the number of status changes.

First, I do not fully understand why you need to sum up the AMOUNT column in your second KPI. As this column is part of the case table, it should have just one value per case right? If this is true, the easiest solution would be to delete the SUM() and just use CELONIS_CASES.AMOUNT as your second KPI.

However, if you really need to sum up the AMOUNT in your case table, then you need to use a PU-function for your second KPI. The problem here is that you need to pull data to the same table from the case table to the case table. For this you can use the DOMAIN_TABLE statement which would look like this:

PU_SUM(DOMAIN_TABLE (CELONIS_CASES.column1 || CELONIS_CASES.columnN || ), CELONIS_CASES.AMOUNT)

DOMAIN_TABLE is a temporary table and for column1 to columnN you need to insert the columns representing the case key of your case table. Please note that you need to use concatenation (||) for these columns.

Hope this helps

Best regards,

Viana


Hello, Viana.

You right - my problem in if there is more than one status change per case ID, the AMOUNT is then multiplied by the number of rows which equals the number of status changes, as I told in my first message.

As this column is part of the case table, it should have just one value per case right - you right again, but i group cases by columns -

  1. CELONIS_CASES.BUNAME
  2. CELONIS_CASES.GJAHR
  3. And thats why I cant use just CELONIS_CASES.AMOUNT - it gives me many rows for same BUNAME and GJAHR.
  4. I try to use u solution:
  5. PU_SUM(DOMAIN_TABLE (CELONIS_CASES.BUNAME || CELONIS_CASES.GJAHR), CELONIS_CASES.AMOUNT)
  6. or
  7. PU_SUM(DOMAIN_TABLE (CELONIS_CASES.BUNAME ,CELONIS_CASES.GJAHR), CELONIS_CASES.AMOUNT)

But, then i use it as KPI in table, Ive got endless loading of component even with filter (5000 cases in it).

Thank u for help anyway)

P.S. At time, I just delete column KPI with sum in project, if u know how can i force to work PU_SUM(DOMAIN_TABLE it will be great)


Reply