- Antes de começar
- Gerenciamento de acesso
- Introdução
- Integrações
- Como trabalhar com aplicativos de processo
- Como trabalhar com painéis e gráficos
- Como trabalhar com gráficos de processo
- Trabalhando com Descubra modelos de processo e Importar modelos BPMN
- Showing or hiding the menu
- Informações de contexto
- Exportar
- Filtros
- Envio de ideias de automação ao UiPath® Automation Hub
- Tags
- Datas de conclusão
- Comparar
- Verificação de conformidade
- Análise de causa raiz
- Simulação de Potencial de Automação
- Triggering an automation from a process app
- Exibição de dados do processo
- Criação de aplicativos
- Carregamento de dados
- Transforming data
- Structure of transformations
- Tips for writing SQL
- Exportando e importando transformações
- Visualização dos logs de execução de dados
- Mesclando logs de evento
- Configuração de tags
- Configuração de datas de vencimento
- Configuração de campos para Potencial de automação
- Configuração da atividade: definição da ordem das atividades
- Disponibilização das transformações em painéis
- Modelos de dados
- Adicionar e editar processos
- Personalização de painéis
- Publicação de painéis
- Modelos de apps
- Notificações
- Recursos adicionais

Guia do usuário do Process Mining
Métricas personalizadas de tempo de transferência
Introdução
Com a personalização de transformações de dados e edição de painel, você pode criar e usar métricas personalizadas de tempo de produtividade. Tempos de produtividade são os tempos entre duas atividades A e B. As seções a seguir descrevem as etapas que você precisa executar para criar uma métrica de tempo de produtividade personalizada ao editar transformações e como habilitar a métrica de tempo de produtividade nos painéis do aplicativo de processo.
Criando uma métrica de tempo de throughput personalizada com transformações de edição
Você deve primeiro calcular o tempo de produtividade e, em seguida, disponibilizá-lo como um campo Caso.
Calculando o tempo de processamento
Por caso, você pode calcular tempos de produtividade entre a Atividade A e a Atividade B. Como as atividades podem ocorrer mais de uma vez por caso, você precisa levar em consideração se está considerando a primeira ou a última ocorrência de uma atividade.
- Crie um modelo adicional com base no Log de evento para calcular os tempos de produtividade desejados. Por exemplo, Cases_with_production_times.
- Neste modelo, crie tabelas de pré-processamento nas quais você define quais fins de evento deseja usar para as computações. Por tabela, você precisa do ID do caso e do Fim do evento de uma atividade. O código a seguir mostra um exemplo de como selecionar a última ocorrência da atividade A para um caso.
Event_end_activity_A as ( select Event_log."Case_ID", max(Event_log."Event_end") as "Event_end_activity_A" from Event_log where Event_log."Activity" = 'Activity A' group by Event_log."Case_ID")Event_end_activity_A as ( select Event_log."Case_ID", max(Event_log."Event_end") as "Event_end_activity_A" from Event_log where Event_log."Activity" = 'Activity A' group by Event_log."Case_ID")Observação:Neste exemplo, se você quiser selecionar a primeira ocorrência da atividade, substitua max por min.
- Defina a tabela de tempo de produtividade associando as tabelas de pré-processamento ao Log de evento e calculando o tempo de produtividade real.
Dica:
Você pode usar a função datediff fornecida no pacote pm-utils para calcular a diferença de tempo entre quaisquer dois términos de evento.
O tempo de produtividade deve ser calculado em milissegundos para as instâncias em que a Atividade A precede a Atividade B. Milissegundos é a unidade de tempo usada para definir durações no modelo de aplicativo. Como os tempos de produtividade já estão agrupados por caso nas tabelas de pré-processamento, você pode escolher qualquer registro. No exemplo acima, agregação min é usada. A tabela de tempo de produtividade, selecionando o tempo de produtividade e um ID de caso, pode ser definida como exibida no bloco de código a seguir.
Cases_with_throughput_times as (
select
Event_log."Case_ID",
case
when min(Event_end_activity_A."Event_end_activity_A") <= min(Event_end_activity_B."Event_end_activity_B")
then {{ pm_utils.datediff('millisecond',
'min(Event_end_activity_A."Event_end_activity_A")',
'min(Event_end_activity_B."Event_end_activity_B")') }}
end as "Throughput_time_activity_A_to_activity_B"
from Event_log
left join Event_end_activity_A
on Event_log."Case_ID" = Event_end_activity_A."Case_ID"
left join Event_end_activity_B
on Event_log."Case_ID" = Event_end_activity_B."Case_ID"
group by Event_log."Case_ID)"
Cases_with_throughput_times as (
select
Event_log."Case_ID",
case
when min(Event_end_activity_A."Event_end_activity_A") <= min(Event_end_activity_B."Event_end_activity_B")
then {{ pm_utils.datediff('millisecond',
'min(Event_end_activity_A."Event_end_activity_A")',
'min(Event_end_activity_B."Event_end_activity_B")') }}
end as "Throughput_time_activity_A_to_activity_B"
from Event_log
left join Event_end_activity_A
on Event_log."Case_ID" = Event_end_activity_A."Case_ID"
left join Event_end_activity_B
on Event_log."Case_ID" = Event_end_activity_B."Case_ID"
group by Event_log."Case_ID)"
Cálculo do tempo de produtividade em dias excluindo fins de semana
Você pode usar a função date_from_timestamp fornecida no pacote pm-utils para calcular o número de dias entre duas atividades. Além disso, a função diff_weekdays permite que você filtre dias de fim de semana.
O exemplo de código a seguir mostra como calcular o número de dias úteis entre a Atividade A e a Atividade B.
with Event_log as (
select * from {{ ref('Event_log') }}
),
Activity_A as (
select
Event_log."Case_ID",
min({{ pm_utils.date_from_timestamp('Event_log."Event_end"') }}) as "Date_activity_A"
from Event_log
where Event_log."Activity" = 'Receive invoice'
group by Event_log."Case_ID"
),
Activity_B as (
select
Event_log."Case_ID",
min({{ pm_utils.date_from_timestamp('Event_log."Event_end"') }}) as "Date_activity_B"
from Event_log
where Event_log."Activity" = 'Pay invoice'
group by Event_log."Case_ID"
),
Total_days_minus_weekends as (
select
Activity_A."Case_ID",
Activity_A."Date_activity_A",
Activity_B."Date_activity_B",
{{ pm_utils.diff_weekdays('Activity_A."Date_activity_A"', 'Activity_B."Date_activity_B"') }}
-- Only compute for cases where both dates are known.
from Activity_A
inner join Activity_B
on Activity_A."Case_ID" = Activity_B."Case_ID"
)
select * from Total_days_minus_weekends
with Event_log as (
select * from {{ ref('Event_log') }}
),
Activity_A as (
select
Event_log."Case_ID",
min({{ pm_utils.date_from_timestamp('Event_log."Event_end"') }}) as "Date_activity_A"
from Event_log
where Event_log."Activity" = 'Receive invoice'
group by Event_log."Case_ID"
),
Activity_B as (
select
Event_log."Case_ID",
min({{ pm_utils.date_from_timestamp('Event_log."Event_end"') }}) as "Date_activity_B"
from Event_log
where Event_log."Activity" = 'Pay invoice'
group by Event_log."Case_ID"
),
Total_days_minus_weekends as (
select
Activity_A."Case_ID",
Activity_A."Date_activity_A",
Activity_B."Date_activity_B",
{{ pm_utils.diff_weekdays('Activity_A."Date_activity_A"', 'Activity_B."Date_activity_B"') }}
-- Only compute for cases where both dates are known.
from Activity_A
inner join Activity_B
on Activity_A."Case_ID" = Activity_B."Case_ID"
)
select * from Total_days_minus_weekends
Cálculo do tempo de produtividade em dias excluindo feriados
Siga estas etapas para calcular o tempo de produtividade em dias entre a Atividade A e a Atividade B, excluindo dias de fim de semana e feriados.
1. Crie um arquivo Holidays.csv para definir os dias que devem ser contados como feriados. O arquivo deve conter pelo menos um registro para cada feriado. Use o seguinte formato:
| feriado | Data | Dia útil |
|---|---|---|
| Dia de ano novo | 2024-01-01 | Sim |
| Páscoa | 31-03-2024 | Não |
| .. | .. | .. |
Os registros no arquivo Holidays.csv são usados para contar o número de dias que precisam ser excluídos de um intervalo de datas.
2. Carregue o arquivo Holidays.csv como um arquivo semente no projeto dbt . Para obter informações detalhadas, consulte a documentação oficial do dbt sobre sementes jinja.
3. Calcule o tempo de produtividade em dias, excluindo fins de semana, usando as funções date_from_timestamp e diff_weekdays fornecidas no pacote pm-utils conforme descrito acima em Cálculo do tempo de produtividade em dias, excluindo fins de semana.
4. Calcule o número de registros armazenados no arquivo de feriados .csv que estão dentro do intervalo de datas fornecido para cada caso. O código a seguir mostra um exemplo.
Holidays_count as (
select
Total_days_minus_weekends."Case_ID",
count(Holidays."Date") as "Number_of_holidays"
from Total_days_minus_weekends
left join Holidays
on Holidays."Date" between Total_days_minus_weekends."Date_activity_A" and Total_days_minus_weekends."Date_activity_B"
where Holidays."Weekday" = 'Yes'
group by Total_days_minus_weekends."Case_ID"
)
Holidays_count as (
select
Total_days_minus_weekends."Case_ID",
count(Holidays."Date") as "Number_of_holidays"
from Total_days_minus_weekends
left join Holidays
on Holidays."Date" between Total_days_minus_weekends."Date_activity_A" and Total_days_minus_weekends."Date_activity_B"
where Holidays."Weekday" = 'Yes'
group by Total_days_minus_weekends."Case_ID"
)
No exemplo acima, o filtro Weekday = 'Yes' é usado para não subtrair feriados quando o feriado ocorre em um sábado ou domingo. Isso já foi resolvido na função diff_weekday .
5. Subtraia o número calculado de feriados do número total de dias calculados para cada caso. O código a seguir mostra um exemplo.
Total_days_minus_weekends_and_holidays as (
select
Total_days_minus_weekends."Case_ID",
Total_days_minus_weekends."Number_of_days" - Holidays_count."Number_of_holidays" as "Number_of_days_between_dates"
from Total_days_minus_weekends
inner join Holidays_count
on Total_days_minus_weekends."Case_ID" = Holidays_count."Case_ID"
)
Total_days_minus_weekends_and_holidays as (
select
Total_days_minus_weekends."Case_ID",
Total_days_minus_weekends."Number_of_days" - Holidays_count."Number_of_holidays" as "Number_of_days_between_dates"
from Total_days_minus_weekends
inner join Holidays_count
on Total_days_minus_weekends."Case_ID" = Holidays_count."Case_ID"
)
Disponibilizando o tempo de processamento como campo de caso
Após a tabela de tempo de produtividade ser criada, essa tabela precisa ser associada à tabela Casos para adicionar os dados de tempo de produtividade adicionais como informação de caso. Para ter o novo campo Tempo de produtividade disponível nos painéis, é necessário converter o novo campo Tempo de produtividade para um dos campos de duração de casos personalizados.
Substitua uma das linhas de duração de caso personalizadas na tabela Casos que tenha a seguinte aparência:
{{ pm_utils.optional(ref('Cases_base'), '"custom_case_duration_1"', 'integer') }} as "custom_case_duration_1",
{{ pm_utils.optional(ref('Cases_base'), '"custom_case_duration_1"', 'integer') }} as "custom_case_duration_1",
com o tempo de throughput recém-criado:
Cases_with_throughput_times."Throughput_time_activity_A_to_activity_B" as "custom_case_duration_1",
Cases_with_throughput_times."Throughput_time_activity_A_to_activity_B" as "custom_case_duration_1",
As atualizações nas transformações para a métrica de tempo de throughput customizado agora são feitas e podem ser importadas para o modelo de aplicativo.
Ativando a métrica de tempo de transferência nos painéis do aplicativo de processo
Quando você cria um tempo de rendimento personalizado em suas transformações, ele fica disponível em seu modelo de aplicativo como uma propriedade de caso em seu alias. Você pode personalizar seu aplicativo de processo para criar uma métrica de tempo de rendimento com base no tempo de rendimento personalizado que você criou nas transformações.
Por padrão, um novo campo de duração personalizada é adicionado como um campo do tipo numérico. Edite o campo e altere o Tipo do novo campo para duração. Consulte Data Manager.
- Acesse Data Manager e crie uma métrica.
- Selecione o campo de duração personalizado a ser usado para o tempo de produtividade e selecione Média ou qualquer outra agregação desejada. Você também pode renomear o campo personalizado de duração de caso com o nome desejado no Data Manager.
- Edite o aplicativo e coloque a nova métrica nos gráficos onde deseja disponibilizá-la para usuários corporativos.
- Publique os painéis para disponibilizar a métrica de tempo de rendimento nos painéis.
Observação:
Nos modelos de aplicativos Purchase-to-Pay e Order-to-Cash, um cálculo de tempo de produtividade já está disponível em Purchase_order_items_with_ pro Os tempos de produtividade personalizados podem ser adicionados lá e, em seguida, serem disponibilizados como uma duração personalizada nos Purchase_order_items ou Sales_order_items.