process-mining
2024.10
true
UiPath logo, featuring letters U and I in white

Process Mining

Automation CloudAutomation Cloud Public SectorAutomation SuiteStandalone
Última atualização 18 de dez de 2024

Tags

Introdução

Em Process Mining, as tags são as regras de negócios que você aplica em seus dados e te permitem conferir a conformidade, como ineficiências, retrabalho ou violações em seu processo.

Observação:
Se você deseja usar o painel Tags para analisar tags, os campos para a tabela Tags devem estar presentes em seu conjunto de dados.

Configuração de tags

Se você quiser usar o painel Tags para analisar tags em seu processo, as tags devem ser definidas para seu modelo de aplicativo.

Para determinados modelos de aplicativo, há tags prontas para uso disponíveis, que serão exibidas no painel. Na documentação do seu modelo de aplicativo específico, você encontrará uma visão geral das tags disponíveis. A página Modelos de aplicativos contém links para a documentação de todos os modelos de aplicativos disponíveis.

Todos os modelos de aplicativos de processos personalizados têm uma tag implementada imediatamente que verifica se um caso tem atividades de retrabalho executadas por usuários diferentes.

Se não houver dados disponíveis no painel Tags , você precisará configurar suas próprias tags usando transformações de dados. Aqui, você também pode configurar quaisquer tags padrão para as suas necessidades de negócios. Abaixo encontra-se uma visão geral dos arquivos de configuração de tags para os diferentes modelos de aplicativo.

Modelos de aplicativos baseados em

Arquivo de configuração de tags

Log de Evento

models\5_business_logic\Tags_base.sql
Processo personalizado 1models\5_business_logic\Tags_base.sql

Purchase-to-Pay

models\5_business_logic\Tags.sql

Order-to-Cash

models\5_business_logic\Tags.sql
1) Isso se aplica ao modelo de aplicativo Processo personalizado e a todos os outros modelos de aplicativos baseados no Processo personalizado, por exemplo, SAP-Warehouse-Management.
Para Processo personalizado, você também pode carregar tags usando o arquivo Tags_raw.csv. Consulte Campos de entrada de Processo personalizado.

Adição de lógica de negócios nas transformações

Na última etapa de transformação, a lógica de negócios é adicionada conforme necessário para a análise de dados.

Cada registro na tabela de tags representa uma tag para um determinado caso. Alguns exemplos de tags são:

  • Violação do SLA para um contrato.
  • um pagamento feito por uma pessoa não autorizada.
Os campos obrigatórios para essa tabela são o Case_ID e Tag.

Nem todos os casos terão uma tag e alguns casos podem ter várias tags.

Consulte Transformações de dados para obter mais informações.

Exemplos de SQL para configurar tags

Abaixo estão alguns exemplos de SQL que você pode usar para configurar Tags usando transformações.

Atenção:
Os exemplos SQL abaixo são baseados em modelos de aplicativos de Log de eventos e Casos de uso que possuem um Case_ID. Se você quiser usar os exemplos de SQL para definir tags para modelos de aplicativos Purchase-to-Pay ou modelos de aplicativos Order-to-Cash, certifique-se de usar a entidade apropriada e o entity_ID interno relacionado. Ao estender a implementação para tags, siga a implementação existente.

Segue diretamente

Esse código SQL identifica casos em que a atividade 'X' é seguida diretamente pela atividade 'Y' e os identifica como "Violação".

with Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- Event log with current activity and next activity
Event_log_extended as (
    select
        Event_log_base."Case_ID",
        Event_log_base."Activity" as "Current_activity",
        lead(Event_log_base."Activity") over (order by "Event_end") as "Next_activity"
    from Event_log_base
),

-- This SQL code checks whether activity X is directly followed by Y in a given case
Directly_follows as (
    select
        Event_log_extended ."Case_ID",
        {{ pm_utils.as_varchar('Activity X directly followed by activity Y') }} as "Tag",
        {{ pm_utils.as_varchar('Violation') }} as "Tag_type"
    from Event_log_extended 
    where Event_log_extended ."Current_activity" = 'X' and Event_log_extended ."Next_activity" = 'Y'
    group by Event_log_extended ."Case_ID"
)

select * from Directly_followswith Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- Event log with current activity and next activity
Event_log_extended as (
    select
        Event_log_base."Case_ID",
        Event_log_base."Activity" as "Current_activity",
        lead(Event_log_base."Activity") over (order by "Event_end") as "Next_activity"
    from Event_log_base
),

-- This SQL code checks whether activity X is directly followed by Y in a given case
Directly_follows as (
    select
        Event_log_extended ."Case_ID",
        {{ pm_utils.as_varchar('Activity X directly followed by activity Y') }} as "Tag",
        {{ pm_utils.as_varchar('Violation') }} as "Tag_type"
    from Event_log_extended 
    where Event_log_extended ."Current_activity" = 'X' and Event_log_extended ."Next_activity" = 'Y'
    group by Event_log_extended ."Case_ID"
)

select * from Directly_follows

Segue indiretamente

Esse código SQL identifica casos em que a atividade 'X' é seguida direta ou indiretamente pela atividade 'Y' e os identifica como "Violação".

with Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

Cases_with_activity_X as (
    select
        Event_log_base."Case_ID",
        min(Event_log_base."Event_end") as "Event_end"
    from Event_log_base
    where Event_log_base."Activity" = 'X'
    group by Event_log_base."Case_ID"
),

-- Activity X is directly or indirectly followed by activity Y
Indirectly_follows as (
    select
        Event_log_base."Case_ID",
        {{ pm_utils.as_varchar('Activity X indirectly followed by activity Y') }} as "Tag",
        {{ pm_utils.as_varchar('Violation') }} as "Tag_type"
    from Event_log_base
    inner join Cases_with_activity_X
        on Event_log_base."Case_ID" = Cases_with_activity_X."Case_ID"
    where Event_log_base."Activity" = 'Y' and Event_log_base."Event_end" > Cases_with_activity_X."Event_end"
    group by Event_log_base."Case_ID"
)

select * from Indirectly_followswith Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

Cases_with_activity_X as (
    select
        Event_log_base."Case_ID",
        min(Event_log_base."Event_end") as "Event_end"
    from Event_log_base
    where Event_log_base."Activity" = 'X'
    group by Event_log_base."Case_ID"
),

-- Activity X is directly or indirectly followed by activity Y
Indirectly_follows as (
    select
        Event_log_base."Case_ID",
        {{ pm_utils.as_varchar('Activity X indirectly followed by activity Y') }} as "Tag",
        {{ pm_utils.as_varchar('Violation') }} as "Tag_type"
    from Event_log_base
    inner join Cases_with_activity_X
        on Event_log_base."Case_ID" = Cases_with_activity_X."Case_ID"
    where Event_log_base."Activity" = 'Y' and Event_log_base."Event_end" > Cases_with_activity_X."Event_end"
    group by Event_log_base."Case_ID"
)

select * from Indirectly_follows

Atividade X várias vezes

Esse código SQL identifica casos em que a atividade 'X' ocorre mais de uma vez e os marca como "Ineficiência".

with Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- This SQL code checks if Activity X occurs twice or more times in the same case
Activity_X_multiple_times as (
    select
        Event_log_base."Case_ID",
        {{ pm_utils.as_varchar('Activity X multiple times') }} as "Tag",
        {{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
    from Event_log_base
    where Event_log_base."Activity" = 'X'
    group by Event_log_base."Case_ID"
    having count(Event_log_base."Activity") > 1
)

select * from Activity_X_multiple_timeswith Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- This SQL code checks if Activity X occurs twice or more times in the same case
Activity_X_multiple_times as (
    select
        Event_log_base."Case_ID",
        {{ pm_utils.as_varchar('Activity X multiple times') }} as "Tag",
        {{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
    from Event_log_base
    where Event_log_base."Activity" = 'X'
    group by Event_log_base."Case_ID"
    having count(Event_log_base."Activity") > 1
)

select * from Activity_X_multiple_times

O caso tem atividade X

Esse código SQL identifica casos que possuem uma ou mais atividades com um nome que contém 'X' e os marca como "Ineficiência".

with Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- Case has activity with name like X
Case_has_activity_X as (
    select
        Event_log_base."Case_ID",
        {{ pm_utils.as_varchar('Case has activity X') }} as "Tag",
        {{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
    from Event_log_base
    where {{ pm_utils.charindex('X', 'Event_log_base."Activity"') }} > 0
    group by Event_log_base."Case_ID"
)

select * from Case_has_activity_Xwith Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- Case has activity with name like X
Case_has_activity_X as (
    select
        Event_log_base."Case_ID",
        {{ pm_utils.as_varchar('Case has activity X') }} as "Tag",
        {{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
    from Event_log_base
    where {{ pm_utils.charindex('X', 'Event_log_base."Activity"') }} > 0
    group by Event_log_base."Case_ID"
)

select * from Case_has_activity_X

O caso não tem atividade X

Esse código SQL identifica casos para os quais não existem atividades cujo nome contenha 'X' e os marca como "Ineficiência".

with Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

Cases as (
    select * from {{ ref('Cases') }}
),

-- Case has no activity with name like X
-- Obtained by subtracting the set of cases that have activity X from the set of all cases
Case_has_no_activity_X as (
    select
        Cases."Case_ID",
        {{ pm_utils.as_varchar('Case has no activity X') }} as "Tag",
        {{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
    from Cases
    where Cases."Case_ID" not in (
        -- Case has activity with name like X
        select
            Event_log_base."Case_ID"
        from Event_log_base
        where {{ pm_utils.charindex('X', 'Event_log_base."Activity"') }} > 0
        group by Event_log_base."Case_ID"
    )
)

select * from Case_has_no_activity_Xwith Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

Cases as (
    select * from {{ ref('Cases') }}
),

-- Case has no activity with name like X
-- Obtained by subtracting the set of cases that have activity X from the set of all cases
Case_has_no_activity_X as (
    select
        Cases."Case_ID",
        {{ pm_utils.as_varchar('Case has no activity X') }} as "Tag",
        {{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
    from Cases
    where Cases."Case_ID" not in (
        -- Case has activity with name like X
        select
            Event_log_base."Case_ID"
        from Event_log_base
        where {{ pm_utils.charindex('X', 'Event_log_base."Activity"') }} > 0
        group by Event_log_base."Case_ID"
    )
)

select * from Case_has_no_activity_X

Inicia com

Esse código SQL identifica casos que começam com a atividade 'X' e os marca como "Violação".

with Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- Add row_number to initial event log
Event_log_base_numbered as (
    select
        Event_log_base."Case_ID",
        Event_log_base."Activity",
        Event_log_base."Event_end",
        row_number() over (partition by Event_log_base."Case_ID" order by Event_log_base."Event_end") as "Row_number"
    from Event_log_base
),

-- Case starts with activity X
Starts_with as (
    select
        Event_log_base_numbered."Case_ID",
        {{ pm_utils.as_varchar('Case starts with activity X') }} as "Tag",
        {{ pm_utils.as_varchar('Violation') }} as "Tag_type"
    from Event_log_base_numbered
    where
        Event_log_base_numbered."Row_number" = 1
        and Event_log_base_numbered."Activity" = 'X'
)

select * from Starts_withwith Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- Add row_number to initial event log
Event_log_base_numbered as (
    select
        Event_log_base."Case_ID",
        Event_log_base."Activity",
        Event_log_base."Event_end",
        row_number() over (partition by Event_log_base."Case_ID" order by Event_log_base."Event_end") as "Row_number"
    from Event_log_base
),

-- Case starts with activity X
Starts_with as (
    select
        Event_log_base_numbered."Case_ID",
        {{ pm_utils.as_varchar('Case starts with activity X') }} as "Tag",
        {{ pm_utils.as_varchar('Violation') }} as "Tag_type"
    from Event_log_base_numbered
    where
        Event_log_base_numbered."Row_number" = 1
        and Event_log_base_numbered."Activity" = 'X'
)

select * from Starts_with

Tempo de processamento superior a 10 dias

Esse código SQL identifica casos para os quais o tempo de processamento é superior a 10 dias e os marca como "Ineficiência".

with Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- Throuput time of each case
Throughput_time_per_case as (
    select
        Event_log_base."Case_ID",
        {{ pm_utils.datediff('day', 'coalesce(min(Event_log_base."Event_start"), min(Event_log_base."Event_end"))', 'max(Event_log_base."Event_end")') }} as "Throughput_time"
    from Event_log_base
    group by Event_log_base."Case_ID"
),

-- Case throughput time is longer than 10 days
Throughput_time_longer_than_10_days as (
    select
        Throughput_time_per_case."Case_ID",
        {{ pm_utils.as_varchar('Throughput time is longer than 10 days') }} as "Tag",
        {{ pm_utils.as_varchar('Inneficiency') }} as "Tag_type"
    from Throughput_time_per_case
    where Throughput_time_per_case."Throughput_time" > 10
)

select * from Throughput_time_longer_than_10_dayswith Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- Throuput time of each case
Throughput_time_per_case as (
    select
        Event_log_base."Case_ID",
        {{ pm_utils.datediff('day', 'coalesce(min(Event_log_base."Event_start"), min(Event_log_base."Event_end"))', 'max(Event_log_base."Event_end")') }} as "Throughput_time"
    from Event_log_base
    group by Event_log_base."Case_ID"
),

-- Case throughput time is longer than 10 days
Throughput_time_longer_than_10_days as (
    select
        Throughput_time_per_case."Case_ID",
        {{ pm_utils.as_varchar('Throughput time is longer than 10 days') }} as "Tag",
        {{ pm_utils.as_varchar('Inneficiency') }} as "Tag_type"
    from Throughput_time_per_case
    where Throughput_time_per_case."Throughput_time" > 10
)

select * from Throughput_time_longer_than_10_days

Duração mais de 30 minutos

Esse código SQL identifica casos em que o tempo de duração entre as atividades 'X' e 'Y' é superior a 30 minutos e os marca como "Ineficiência".

with Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- First activity X of each case
First_activity_X_of_each_case as (
    select
        Event_log_base."Case_ID",
        min(Event_log_base."Event_end") as "Event_end"
    from Event_log_base
    where Event_log_base."Activity" = 'X'
    group by Event_log_base."Case_ID"
),

-- Last activity Y of each case
Last_activity_Y_of_each_case as (
    select
        Event_log_base."Case_ID",
        max(Event_log_base."Event_end") as "Event_end"
    from Event_log_base
    where Event_log_base."Activity" = 'Y'
    group by Event_log_base."Case_ID"
),

-- Time between first X and last Y > 30 minutes
Duration_more_than_30_minutes as (
    select
        First_activity_X_of_each_case."Case_ID",
        {{ pm_utils.as_varchar('Duration more than 30 minutes') }} as "Tag",
        {{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
    from First_activity_X_of_each_case
    inner join Last_activity_Y_of_each_case
        on First_activity_X_of_each_case."Case_ID" = Last_activity_Y_of_each_case."Case_ID"
    where {{ pm_utils.datediff('minute', 'First_activity_X_of_each_case."Event_end"', 'Last_activity_Y_of_each_case."Event_end"') }} > 30
)

select * from Duration_more_than_30_minuteswith Event_log_base as (
    select * from {{ ref('Event_log_base') }}
),

-- First activity X of each case
First_activity_X_of_each_case as (
    select
        Event_log_base."Case_ID",
        min(Event_log_base."Event_end") as "Event_end"
    from Event_log_base
    where Event_log_base."Activity" = 'X'
    group by Event_log_base."Case_ID"
),

-- Last activity Y of each case
Last_activity_Y_of_each_case as (
    select
        Event_log_base."Case_ID",
        max(Event_log_base."Event_end") as "Event_end"
    from Event_log_base
    where Event_log_base."Activity" = 'Y'
    group by Event_log_base."Case_ID"
),

-- Time between first X and last Y > 30 minutes
Duration_more_than_30_minutes as (
    select
        First_activity_X_of_each_case."Case_ID",
        {{ pm_utils.as_varchar('Duration more than 30 minutes') }} as "Tag",
        {{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
    from First_activity_X_of_each_case
    inner join Last_activity_Y_of_each_case
        on First_activity_X_of_each_case."Case_ID" = Last_activity_Y_of_each_case."Case_ID"
    where {{ pm_utils.datediff('minute', 'First_activity_X_of_each_case."Event_end"', 'Last_activity_Y_of_each_case."Event_end"') }} > 30
)

select * from Duration_more_than_30_minutes

Analisando Marcas

Painel de tags

O painel Tags permite analisar as tags que ocorrem no processo.

Siga estas etapas para exibir o painel Tags .

  1. Selecione Tags no menu à esquerda do painel.

O painel Tags é exibido.

Métricas

Abaixo está uma descrição das métricas que podem ser usadas para analisar os casos relacionados a tags.

Métrica

Description

Número de casos

O número de casos que têm a marca atribuída.

Número de tags

O número de tags atribuídas.

Esta página foi útil?

Obtenha a ajuda que você precisa
Aprendendo RPA - Cursos de automação
Fórum da comunidade da Uipath
Uipath Logo White
Confiança e segurança
© 2005-2024 UiPath. Todos os direitos reservados.