Exemple complexe
Datorită exemplelor complexe, acest articol utilizează câțiva operatori personalizați specifici, cum ar fi DURATIONCALENDAR
sau FIRSTIF
. Nu sunt necesare cunoștințe specifice despre acești operatori.
Pentru exemple simple despre cum să creați valori personalizate, accesați Exemple de bază.
Recapitulare a exemplelor anterioare
Următorul tabel oferă descrieri și exemple de valori personalizate.
Descriere | Exemplu |
---|---|
Agregare pe valoare de atribut (De exemplu, rezultat pe activitate = toate evenimentele cu aceeași valoare a activității) |
AVG(Durata()) AVG(EventsPerAttribute, Duration()) AVG(EdgesPerAttribute, Duration()) |
Agregarea în cadrul cazurilor (rezultat pentru fiecare caz) |
AVG(CaseEvents, Duration()) |
Agregarea pe cazuri (agregare pe valoare de atribut, cazul este luat în calcul o singură dată) |
SUM(CasesPerAttribute, invoTotal) AVG(CasesPerAttribute, Duration()) |
Agregarea globală (peste toate elementele în vedere/proces/regulă de afaceri) |
COUNTIF(ProcessEvents, user == „Petru”) AVG(ProcessEvents, Duration()) |
Descrierea setului de date
Noul set de date minuscul este folosit pentru un calcul ușor pentru exemplele rămase. Conține patru cazuri și 12 evenimente
Pentru calcule manuale ușoare, presupunem un timp de așteptare zero între evenimente. Prin urmare, durata cazului este o simplă sumă a duratei evenimentelor. De asemenea, nu există paralelism între evenimente
În total, avem cinci atribute: activitate, început, sfârșit, utilizator și județ. Țara este un atribut la nivel de caz. Celelalte atribute sunt la nivel de eveniment.
1 Neagregare la nivel de eveniment
Cum filtrez prin evenimente CM cu durată pozitivă? Evaluați evenimentele individuale și eliminați-le pe cele cu marcaje temporale corupte.
Calcul de exemplu 1
Rulați și evaluați fiecare eveniment unul câte unul. Generați un singur rezultat per eveniment. Nu este necesară nicio operațiune de agregare. Comparați valorile atributelor de final și de început în fiecare eveniment.
Rezultatul de exemplu 1
Pentru fiecare eveniment:
- 1x Fals
- 11x adevărat
Expresie în editorul de valori personalizate
Utilizare de exemplu 1
Deoarece avem un singur rezultat pentru fiecare eveniment în vizualizarea curentă, rezultatele sunt disponibile numai în ecranele care afișează și procesează o valoare a evenimentului:
Filtru de valori ale evenimentelor
Filtru metric de caz
Filtrul de valori ale evenimentelor este opțiunea evidentă, deoarece vă permite să filtrați evenimentele pe baza valorilor atributelor sau valorii. Filtrul de valori pentru cazuri utilizează în mod prestabilit valori la nivel de caz. De asemenea, vă permite să selectați filtrul pentru valorile evenimentului cu specificații suplimentare dacă toate sau cel puțin un eveniment din caz trebuie să îndeplinească valoarea evenimentului. Acest comutator permite filtrului de valori la nivel de caz să treacă la valori la nivel de eveniment.
Notă
Valorile atributelor evenimentului sunt afișate și în panoul de tabel Cazuri variante , dar această vizualizare afișează numai atributele evenimentului și nu afișează valorile evenimentului.
1.1 Neagregare la nivel de eveniment (alternativă)
Alternativă: Cum filtrez prin evenimente CM cu durată negativă? În loc să folosiți atributele „end” și „start”, scrieți expresia folosind valori generice.
Este cea mai bună practică să folosiți valori generice în loc de atribute de proces.
Performanță mai bună
Portabilitate
O formulă se potrivește mai multor aplicații (de exemplu, prezentarea generală a cazului și analiza cauzei principale).
Formularul agregat funcționează cu caz/eveniment/margine
Expresie în editorul de valori personalizate
2 Neagregare la nivel de caz
Cum filtrez cazurile cu durată goală (zero)? După ce am eliminat evenimentele corupte, trebuie să eliminați cazurile nevalide. Eliminați cazurile complete cu durată zero.
Calcul de exemplu 2
Rulați și evaluați fiecare caz unul câte unul. Generați un singur rezultat pentru fiecare caz. Deoarece există operator Duration()
, care se aplică la nivel de caz, nu este necesară nicio operațiune de agregare.
Rezultatul de exemplu 2
Pentru fiecare eveniment:
- Cazul 1 - adevărat
- Cazul 2 - adevărat
- Cazul 3 - adevărat
- Cazul 4 - fals
Expresie în editorul de valori personalizate
Utilizare de exemplu 2
Deoarece aveți un singur rezultat per caz, rezultatele sunt disponibile numai în ecranele care afișează rezultatele pe caz:
Filtru metric de caz
Prezentare generală a cazului statistic
Analiza cauzei rădăcină
Filtru de valori ale evenimentelor
Utilizarea valorii la nivel de caz (agregată sau neagregată) în Statistici Prezentare generală a cazului, Analiza cauzei principale sau Filtrul metric de caz nu este o surpriză.
Pentru a răspunde de ce există o indicație de utilizare pentru Valori de eveniment, nu oferă nicio setare avansată pentru a comuta la nivel de caz. Răspunsul este în formula expresiei, care folosește Duration()
operator. Aplicația desktop Power Automate Process Mining oferă același operator Duration()
la nivel de eveniment și de caz. Prin urmare, aceeași expresie este aplicabilă atât la nivel de caz, cât și la nivel de eveniment.
3 Agregarea marginilor
Care este numărul de modificări ale utilizatorilor pe cale (margine)? În loc să te uiți la valorile evenimentelor, vei cere modificările apărute între evenimente. Deci cauți rezultat pe margine.
Edge (path)
: Tranziție între două evenimente urmărite direct.
Calcul de exemplu 3
Evaluezi cât de des te-ai schimbat când cazul a progresat în urma evenimentelor. Doriți să identificați pe ce tranziții (margini) are loc schimbarea utilizatorului. Mai întâi, identificați setul de margini în datele noastre. Pentru cazul 1, există două muchii A-> B și B-> C. În cazul 2 avem A-> C și C-> C. Pentru cazul 3, aveți doar o margine C-> C. În total, aveți patru (4) margini unice (pe baza valorilor activității) - A-> B, B-> C, A-> C și C-> C. Pentru fiecare dintre aceste margini, trebuie să cumulați numărul de modificări ale utilizatorilor. De exemplu, aveți o singură instanță de margine B-> C unde utilizatorul Michal la începutul evenimentului și, de asemenea, la evenimentul de la final, deci nu există nicio schimbare de utilizator pentru această margine.
Rezultatul de exemplu 3
- A-> B = 1
- B-> C = 0
- A-> C = 1
- C-> C = 2
Expresie în editorul de valori personalizate
Operatori TARGET()
și SOURCE()
returnează valorile atributului solicitat pentru nodul de sfârșit și de pornire la marginea actuală.
Utilizare de exemplu 3
Valorile personalizate definite generează valoarea rezultatului pe margine (atribut), deci este aplicabilă oriunde atunci când sunt utilizate rezultate agregate pe margine:
Procesează marginile hărții
Margini statistice
Filtru condițional Edge
4 Agregarea evenimentelor de caz II
În secțiunea anterioară, ați avut un exemplu simplu de utilizare CaseEvents
agregare. Aici veți lua un alt exemplu cu o formulă mai complexă.
Care este durata de la primul început C și ultima activitate de sfârșit C în cazuri? Căutați un rezultat pe caz și să faceți o agregare condiționată peste evenimente de caz.
Calcul de exemplu 4
Rulați toate evenimentele disponibile în carcasa sa. Obțineți prima și ultima activitate „C” într-un caz și măsurați durata dintre începutul primei și sfârșitul ultimei.
Rezultatul de exemplu 4
- Cazul 1 = 1 oră 00 minute
- Cazul 2 = 1 oră 20 de minute
- Cazul 3 = 2 ore 00 minute
Expresie în editorul de valori personalizate
De data aceasta, expresia este puțin mai complicată, dar arată cum să combinați mai multe agregări într-o singură formulă. Operatorii FIRSTIF()
și LASTIF()
sunt operatori de agregare, care returnează primul/ultimul eveniment pe baza criteriilor de intrare în domeniul de calcul definit (de data aceasta CaseEvents
).
Utilizare de exemplu 4
Aplicarea valorii personalizate urmează cerințele standard pentru agregarea unui singur caz (indiferent de complexitatea exprimării).
4.1 Agregarea evenimentelor de caz II (alternativă)
Care este durata de la prima activitate de început C și ultima activitate de sfârșit C, dar calculată numai pe orele de lucru? Exemplul este același cu cel anterior, dar aici doriți să calculați diferența de timp numai pe orele de lucru. Anterior, simpla diferență dintre valorile marcajului de timp era suficientă.
Calcul de exemplu 4.1
Rulați toate evenimentele disponibile în carcasa sa. Obțineți prima și ultima activitate „C” într-un caz și măsurați durata dintre începutul primei și sfârșitul ultimei. Pentru măsurarea duratei, utilizați orele de lucru definite în calendarul aplicat.
Rezultatul de exemplu 4.1
- Cazul 1 = ???
- Cazul 2 = ???
- Cazul 3 = ???
Expresie în editorul de valori personalizate
Pentru a calcula durata peste orele de lucru, au fost utilizați DURATIONCALENDAR()
operatorii. Operatorii pentru a găsi primul și ultimul eveniment sunt utilizați ca argumente operator creând o expresie imbricată. Observați că complexitatea expresiei nu afectează și nu modifică domeniile de calcul selectate.
Utilizare de exemplu 4.1
Aplicarea valorii personalizate urmează cerințele standard pentru agregarea unui singur caz, indiferent de complexitatea exprimării.
5 Rezultate categorice vs. cantitative
Carcasa conține calea C->C? Aceasta este o întrebare simplă când trebuie să clasificați cazuri individuale pe baza marginii existenței C->C.
Calcul de exemplu 5
Rulați peste toate marginile disponibile în carcasă. Dacă cazul conține marginea C->C, trece criteriile. Rezultatele sunt generate pe caz. Numărul acestor margini nu este important.
Rezultatul de exemplu 5
- Cazul 1 = Fals
- Cazul 2 = Adevărat
- Cazul 3 = Adevărat
Expresie în editorul de valori personalizate
Operatorul ANY()
returnează valoarea booleană adevărat/fals atunci când cel puțin un element într-un context dat îndeplinește criteriile. Vezi și operatorul ALL()
*k, care returnează o valoare adevărată atunci când toate elementele din contextul dat îndeplinesc criteriile.
Utilizare de exemplu 5
Aplicarea valorii personalizate urmează cerințele standard pentru agregarea unui singur caz:
Filtru de metrică a cazurilor
Analiza cauzei fundamentale
Panoul statistic de prezentare generală a cazului
5.1 Rezultate categorice vs. cantitative (alternativă)
Câte căi C->C sunt în carcasă? Schimbați întrebarea anterioară de la dacă cazul conține marginea C->C la câte astfel de muchii există.
Calcul din exemplul 5.1
Rulați peste toate marginile din carcasă. Numărați orice margini C->C găsite. Dacă nu se găsește o astfel de margine, numărul este zero pentru cazul dat.
Rezultă exemplul 5.1
- Cazul 1 = 0
- Cazul 2 = 1
- Cazul 3 = 2
Expresie în editorul de valori personalizate
În comparație cu formula anterioară, tocmai ați înlocuit operatorul ANY()
cu COUNTIF()
.
Utilizare de exemplu 5.1
Aplicarea valorii personalizate urmează cerințele standard pentru agregarea unui singur caz.
6 Eveniment sau agregare a cazurilor marginale folosind context la nivelul întregului caz
Câte cazuri în DE conține marginea C->C? Această solicitare conține două valori. Prima este valoarea atributului de țară „DE”, iar a doua este valoarea pentru marginea „C->C”.
Limitarea pentru marginea „C->C” descrie cerința de domeniu și de ce țara „DE” este una dintre valorile atributelor.
Calcul de exemplu 6
De ce nu calculați rezultatul pentru toate țările/regiunile? La început, regândește întrebarea inițială. Este posibil să generați rezultate pe valoare de atribut (de exemplu, pentru țara atributului), dar nu există nicio modalitate (cu excepția regulilor de afaceri) de a crea un calcul pentru o singură valoare a atributului. În utilizarea regulilor de afaceri, puteți sări peste această secțiune. Știind acest lucru, puteți actualiza întrebarea inițială la forma generică:
Câte cazuri conține marginea C->C per țară?
Acum, calculul constă din doi pași. La început, parcurgeți fiecare caz și verificați existența marginilor „C->C”. Numărul exact de margini „C->C” din carcasă nu este important. După aceasta, în a doua etapă, agregați rezultatele pentru un singur caz în funcție de o valoare a atributului la nivel de caz țară. Există două valori „DE” și „SK”, deci vor fi două rezultate.
Ambele cazuri pentru atributul de țară „SK” conțin marginea „C->C”, deci rezultatul pentru „SK” este 2. Numărul total de muchii este 3, dar nu numărăm numărul de muchii.
Rezultatul de exemplu 6
- DE = 0
- SK = 2
Expresie în editorul de valori personalizate
Formula imbricată conține o agregare în doi pași. Cea interioară trece peste toate marginile din carcasă. Cel exterior agregează cazurile după valoarea atributului. Agregarea exterioară folosește contextul CasesPerAttribute deoarece rezultatul pe caz este exact unul. Contextul EventsPerAttribute de asemenea, grupează rezultatul pe valoare de atribut, dar poate implica același caz de mai multe ori (pentru fiecare eveniment implicat) în rezultat.
Utilizare de exemplu 6
Valoarea personalizată este aplicabilă pe fiecare ecran în care sunt afișate valori pentru fiecare valoare de atribut. Valoarea atributului poate fi grupată folosind nivelul evenimentului ( EventsPerAttribute) sau la nivel de caz ( CasesPerAttribute) context. Aceste două contexte de calcul oferă un calcul diferit, dar au aceeași aplicabilitate a calculului (metrică personalizată):
Harta procesului (atât nodurile, cât și marginile)
Toate statisticile cu excepția Prezentare generală a cazului, care necesită rezultate pe caz.
Atribute și filtre condiționale de margine.
Pentru o expresie cu agregari imbricate, contextul de agregare cel mai exterior determină aplicația în aplicația desktop Process Mining.
6.1 Agregarea evenimentelor sau a cazurilor marginale (alternativă)
Convertiți exemplul anterior de la evaluarea categorială la evaluarea cantitativă.
Câte C-> Muchiile C sunt în cazuri în DE? Convertiți întrebarea într-o formă generică: Câte C-> Marginile C sunt în cazuri pe țară?
Calcul din exemplul 6.1
Din nou, calculul constă din doi pași. La început, treceți prin fiecare caz și numărați „C-> C' marginile. După aceasta, în a doua etapă, agregați rezultatele pentru fiecare caz în funcție de valoarea atributului la nivel de caz țară. Există două valori: „DE” și „SK”, deci vor fi două rezultate.
Ambele cazuri pentru atributul de țară „SK” conține „C-> C' marginile. Rezultatul pentru „SK” și numărul total pentru aceste margini este 3 (1 + 2).
Rezultă exemplul 6.1
- DE = 0
- SK = 3
Expresie în editorul de valori personalizate
Expresia conține din nou o agregare (imbricată) în doi pași. Cea interioară trece peste toate marginile din interiorul majusculei, iar cea exterioară agregează cazurile după valoarea atributului.
Utilizare de exemplu 6.1
Valoarea personalizată este aplicabilă pe fiecare ecran în care valorile sunt afișate pentru fiecare valoare de atribut.
7 Comutați de la contextul evenimentului la contextul cazului
Care este durata medie a activității la durata cazului? Cât timp petrecem în medie activităților este una dintre valorile standard de performanță?
Dar dacă trebuie să calculăm raportul mediu dintre cât timp petrecem activităților în comparație cu durata cazului? Unde petrecem relativ cel mai mult timp? Este peste prag?
Calcul de exemplu 7
Ce anume vom calcula? Vrem rezultate pe activitate, așa că obținem rezultate pe „A”, „B” și „C”. Activitatea „B” este doar în cazul 1. Durata cazului 1 este de 90 de minute, iar durata activității „B” este de 20 de minute. Rezultatul pentru cazul 1 și activitatea „B” este 20/90 = ~ 0,22. Deoarece „B” nu este inclus în alte cazuri, acesta este și rezultatul final pentru „B”.
Efectuați calculul pentru activitatea „A”, pentru cazul 1 raportul este 10/90, pentru cazul 2 raportul este 40/120, cu valoarea medie 0,22 (0,11 + 0,33 împărțit la 2). În același mod, calculăm 6 rezultate individuale pentru fiecare dintre evenimentele „C” și facem media.
În ceea ce privește agregarea, nu este nimic nou. Generăm rezultate pe valoare de atribut, dar pentru calcul am folosit metrica (valoarea) din caz.
Rezultatul de exemplu 7
- A = 0,22
- B = 0,22
- C = 0,375
Expresie în editorul de valori personalizate
Expresia este simplă, dar folosește operatorul important CASE()
, care vă permite să comutați contextul la nivelul cazului. Acesta este singurul mod de a calcula valorile la nivel de eveniment și de a solicita valori (valori) din cazul acestuia.
Utilizare de exemplu 7
Aplicarea valorii personalizate urmează cerințele standard pentru agregarea pe valoare de atribut. Deoarece expresia folosește Duration() și nu valoare de atribut, este aplicabilă și pe margini (atât în harta procesului, cât și în statistici).
8 Agregare eveniment-caz-eveniment
Relația generică între evenimente în interiorul majusculei.
Câte evenimente făcute de Michal au fost în cazuri atinse de Petru? Imaginați-vă că „Peter” este un membru senior al echipei care este de obicei implicat doar în unele necazuri. Vrem să știm de câte ori „Peter” a trebuit să efectueze acțiuni atunci când un alt utilizator „Michal” a fost implicat în același caz.
Schimbați întrebarea într-o formă generică: Câte evenimente au fost efectuate per utilizator în cazurile cu Peter?
Calcul din exemplul 8
Evenimentul este valabil pentru această întrebare, dacă este în caz, în cazul în care există cel puțin un eveniment realizat de utilizatorul „Peter”. Evaluați fiecare eveniment și rezultatele grupului pe valoare de utilizator de atribut - „Michal”, „Peter” și „Denis”.
Rezultă exemplul 8
- Michael = 1
- Petru = 2
- Denis = 3
Expresie în editorul de valori personalizate
Exprimarea este scurtă, dar necesită anumite cunoștințe pentru a o înțelege. Partea cea mai interioară Any(CaseEvents, user=="Peter") este un rezultat simplu pentru fiecare caz. Evaluează dacă cazul conține utilizatorul „Peter” sau nu. Partea cea mai exterioară COUNTIF() face o simplă agregare după valoarea atributului. Cerința este să faceți agregarea pe utilizatorul atributului la nivel de eveniment, dar valoarea calculată este o valoare la nivel de caz. Comutarea între aceste două contexte se face de către CASE() operatorul din mijloc.
Notă
În acest exemplu, contextul EventsPerAttribute nu este specificat. Valoarea personalizată a aplicat apoi contextul implicit de calcul.
Utilizare de exemplu 8
Aplicarea valorii personalizate urmează cerințele standard pentru agregarea pe valoare de atribut.
8.1 Agregare condiționată eveniment-caz-eveniment
Relația dintre două atribute la nivel de eveniment în caz cu condiție.
De câte ori a lucrat Michal la C repetat cu Peter în caz că? Aceasta este o întrebare similară cu cea anterioară, dar există o condiție adăugată.
Convertiți întrebarea într-una generică: De câte ori Michal (per utilizator) a lucrat pe C repetat în cazurile cu Peter?
Calcul de exemplu 8.1
Evaluați fiecare eveniment și rezultatele grupului pe valoarea utilizatorului atributului: „Michal”, „Peter” și „Denis”, ca în exemplul anterior. Evaluarea evenimentului este mai complicată, deoarece există o limitare doar pentru activitățile repetate „C”.
În cazul 1, nu există activități repetate „C”, în cazul 2 este o activitate repetată „C” realizată de „Michal”, iar în cazul 3 sunt două activități repetate „C” realizate de „Denis”.
Rezultatul de exemplu 8.1
- Michael = 1
- Petru = 0
- Denis = 2
Expresie în editorul de valori personalizate
Agregare în două etape (imbricate) — cea interioară evaluează cazul unic, iar cea exterioară rezultă grup pentru fiecare valoare de atribut. Condițiile sunt, de asemenea, separate între acestea la agregare. Cel din interior se ocupă de cerința de caz dacă conține utilizatorul „Peter”. Cel exterior grupează evenimentele astfel încât să conțină condiția legată de eveniment dacă activitatea este „C” și dacă se repetă.
Operator OCCURRENCE()
returnează indexul de apariție al unei valori date a atributului evenimentului în caz.
Utilizare de exemplu 8.1
Aplicarea valorii personalizate urmează cerințele standard pentru agregarea pe valoare de atribut.
9 Suplimentar: valorile valorice personalizate specifice
Este posibil să evitați operatorul?
CASE()
? Există o modalitate de a simplifica expresiile? Da, este, dar există compromisuri. Vezi următorul exemplu.Câte evenimente făcute de Michal (per utilizator) au fost în cazurile cu Peter? Aceeași întrebare ca în 8 Agregare eveniment-caz-eveniment.
Este posibil să răspunzi la întrebare fără a folosi
CASE()
operator?
Soluție generică folosind CAZ() operator
Este posibil să sari peste CASE()
operator cu prețul creării unei valori personalizate specifice? Într-o astfel de măsurătoare personalizată, trebuie să specificăm valoarea personalizată solicitată „Michal” și să avem calcule de reducere pentru alte valori de atribut (per utilizator) și gruparea după alte atribute.
Valoare personalizată limitată la o anumită valoare personalizată
Raționamentul din spatele celui din urmă:
Selectați cazuri cu „Peter” (operator
ANY()
)Convertiți rezultatul boolean în zero numeric sau unu (operator
IF()
)Numărați numărul de activități cu cerințe (operator
COUNTIF()
)Aplicați rezultatul per caz pentru fiecare caz exact o dată (context de calcul CasesPerAttribute)
La sfârșit Suma numărului de evenimente per caz (operator
SUM()
)
Valoarea personalizată fără CASE()
operatorul este poate mai ușor de citit de oameni, dar aduce unele dezavantaje.
Pentru fiecare valoare de atribut rezultată ("Michal"), avem nevoie de valori personalizate separate. Pentru alte valori de atribut, valoarea returnează zero.
Operator
COUNTIF()
este blocat pentru atributul utilizator. Rezultatele grupate după un alt atribut, de exemplu, țara necesită schimbarea condiției la un anumit cod de țară, de exemplu,COUNTIF(CaseEvents, country == "DE")
.