process-mining
latest
false
Importante :
Este contenido se ha localizado parcialmente a partir de un sistema de traducción automática. La localización de contenidos recién publicados puede tardar entre una y dos semanas en estar disponible.
UiPath logo, featuring letters U and I in white

Process Mining

Última actualización 8 de abr. de 2025

Configurar fechas de vencimiento

Si quieres utilizar el panel Fechas límite para analizar las fechas límite, debes definir las fechas límite para la plantilla de tu aplicación.

Si hay fechas de vencimiento listas para usar disponibles para tu plantilla de aplicación, estas fechas de vencimiento se mostrarán en el panel Fechas de vencimiento. En la documentación de tu plantilla de aplicación específica encontrarás un resumen de las fechas de vencimiento disponibles. La página Plantillas de aplicación contiene enlaces a la documentación de todas las plantillas de aplicación disponibles.

Si no hay datos disponibles en el panel de fechas límite, deberá configurar sus propias fechas límite en el archivo models\5_business_logic\Due_dates_base.sql mediante transformaciones de datos. Aquí también puede configurar cualquier fecha límite predeterminada según las necesidades de su negocio.
Para el proceso personalizado, también puedes cargar las fechas de vencimiento utilizando el archivo Due_dates_raw.csv . Consulta Campos de entrada de proceso personalizados.

Agregar lógica empresarial en transformaciones

En el último paso de transformación, se agrega lógica empresarial según sea necesario para el análisis de datos.

Cada registro de la tabla de fechas de vencimiento representa una fecha de vencimiento para un objeto determinado. Ejemplos de fechas de vencimiento son:

  • un plazo de pago para un objeto de pago.
  • una fecha límite de aprobación para la solicitud de compra.
Los campos obligatorios para esta tabla son Case_ID, Due_date, Actual_datey Expected_date.


No todos los eventos tendrán una fecha límite y algunos eventos pueden tener varias fechas límite.

Consulta Editor de transformaciones de datos para obtener más información.

Proporcionar entrada de configuración de fecha de vencimiento en Transformaciones de datos

Puedes proporcionar datos de entrada adicionales que se utilizarán para los cálculos en el panel Fechas de vencimiento utilizando declaraciones SQL en Transformaciones de datos. Para todas las fechas de vencimiento, puedes configurar los siguientes campos.

Nombre

Tipo

Descripción

Due_dateTexto

El nombre de la fecha de vencimiento.

Due_date_typeTexto

El tipo de Fecha límite.

Fixed_costs

Booleano

Una indicación de si los costes son fijos o se basan en el tiempo.

Cost

Presentar

Costes fijos: la cantidad de los costes.
Costes variables: la cantidad de costes por Tiempo y Type_type.

Time

Entero

Un número que indica la cantidad de tiempo en caso de costes basados en tiempo.

Time_typeTextoTipo de período de tiempo para los cálculos de costes. Este puede ser cualquiera de los siguientes valores: día, hora, minutos, segundos, milisegundos.

Case_ID

Texto/Entero

El ID del caso con el que está relacionada la fecha de vencimiento.

Consulta Transformaciones.

Providing due date configuration input using dbt seeds

Para las aplicaciones de proceso que aún contienen el archivo de semillas Due_dates_configuration_raw.csv en la carpeta Seeds\ de las transformaciones de datos, puedes utilizar este archivo para proporcionar datos de entrada adicionales que se utilizarán para los cálculos en el panel Fechas de vencimiento .

La siguiente ilustración muestra un archivo de semillas de ejemplo.
Archivo de semillas de ejemplo
Consulta Transformaciones.

Ejemplos de SQL para configurar fechas de vencimiento

Esta página contiene algunos ejemplos de SQL que puedes utilizar para configurar las fechas de vencimiento mediante transformaciones.
Atención:
Los ejemplos de SQL se basan en las plantillas de aplicación Registro de eventos y Proceso personalizado , y utilizan Casos que tienen un Case_ID. Si quieres utilizar los ejemplos de SQL para definir las fechas de vencimiento para las plantillas de aplicación Purchase-to-Pay o las plantillas de aplicación Order-to-Cash , asegúrate de utilizar el objeto adecuado y el object_ID interno relacionado. Para Purchase-to-Pay puedes utilizar el registro de eventos Purchase_order_item_end_to_end_events , el objeto Purchase_order_items y el Purchase_order_item_ID_internal como Case_ID. Para Order-to-Cash puedes utilizar el registro de eventos Sales_order_item_end_to_end_events , el objeto Sales_order_items y Sales_order_item_ID_internal como Case_ID.

El siguiente bloque de código muestra un ejemplo de consulta SQL para definir una fecha de vencimiento.

 select
    tableA."Case_ID",
    {{ pm_utils.as_varchar('Name of Due date') }} as "Due_date",
    tableB."SLA_date" as "Expected_date",
     tableA."Executed_date" as "Actual_date"
from {{ ref('tableA') }} as tableA
left join {{ ref('tableB') }} as tableB
on tableA."Case_ID" = tableB."Case_ID"select
    tableA."Case_ID",
    {{ pm_utils.as_varchar('Name of Due date') }} as "Due_date",
    tableB."SLA_date" as "Expected_date",
     tableA."Executed_date" as "Actual_date"
from {{ ref('tableA') }} as tableA
left join {{ ref('tableB') }} as tableB
on tableA."Case_ID" = tableB."Case_ID"

El siguiente bloque de código muestra un ejemplo de consulta SQL para configurar las fechas de vencimiento.

 select
        Due_dates_base."Case_ID",
        Due_dates_base."Due_date",
        Due_dates_base."Actual_date",
        Due_dates_base."Expected_date",
        {{ pm_utils.as_varchar('Type of Due date') }} as "Due_date_type",
        case
            when Due_dates_base."Actual_date" <= Due_dates_base."Expected_date"
                then {{ pm_utils.to_boolean('true') }}
            else {{ pm_utils.to_boolean('false') }}
        end as "On_time",
        case
            -- when actual or expected date are null
            when Due_dates_base."Actual_date" is null or Due_dates_base."Expected_date" is null
                then {{ pm_utils.to_double('null') }}
            -- when the due date is on time, the cost is 0
            when Due_dates_base."Actual_date" <= Due_dates_base."Expected_date"
                then {{ pm_utils.to_double('0') }}
            -- when the due date is late, configure a cost
            when Due_dates_base."Expected_date" > Due_dates_base."Actual_date"
                then {{ pm_utils.to_double('10') }}
        end as "Cost",
        {{ pm_utils.datediff('millisecond', 'Due_dates_base."Expected_date"', 'Due_dates_base."Actual_date"') }} as "Difference"
    from Due_dates_baseselect
        Due_dates_base."Case_ID",
        Due_dates_base."Due_date",
        Due_dates_base."Actual_date",
        Due_dates_base."Expected_date",
        {{ pm_utils.as_varchar('Type of Due date') }} as "Due_date_type",
        case
            when Due_dates_base."Actual_date" <= Due_dates_base."Expected_date"
                then {{ pm_utils.to_boolean('true') }}
            else {{ pm_utils.to_boolean('false') }}
        end as "On_time",
        case
            -- when actual or expected date are null
            when Due_dates_base."Actual_date" is null or Due_dates_base."Expected_date" is null
                then {{ pm_utils.to_double('null') }}
            -- when the due date is on time, the cost is 0
            when Due_dates_base."Actual_date" <= Due_dates_base."Expected_date"
                then {{ pm_utils.to_double('0') }}
            -- when the due date is late, configure a cost
            when Due_dates_base."Expected_date" > Due_dates_base."Actual_date"
                then {{ pm_utils.to_double('10') }}
        end as "Cost",
        {{ pm_utils.datediff('millisecond', 'Due_dates_base."Expected_date"', 'Due_dates_base."Actual_date"') }} as "Difference"
    from Due_dates_base

Actividad X realizada antes de la fecha Y

Este código SQL identifica los casos en los que la última aparición de la actividad 'X' se realizó antes de la fecha 'Y'.

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

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

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

-- Last activity X should be done before Case date field Y
Activity_X_done_before_date_Y as (
    select
        Last_activity_X."Case_ID",
        {{ pm_utils.as_varchar('Last activity X before Cases date field Y') }} as "Due_date",
        Last_activity_X."Event_end" as "Actual_date",
        Cases_base."Case_date_field_Y" as "Expected_date",
        Last_activity_X."Event_ID"
    from Last_activity_X
    inner join Cases_base
        on Last_activity_X."Case_ID" = Cases_base."Case_ID"
)

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

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

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

-- Last activity X should be done before Case date field Y
Activity_X_done_before_date_Y as (
    select
        Last_activity_X."Case_ID",
        {{ pm_utils.as_varchar('Last activity X before Cases date field Y') }} as "Due_date",
        Last_activity_X."Event_end" as "Actual_date",
        Cases_base."Case_date_field_Y" as "Expected_date",
        Last_activity_X."Event_ID"
    from Last_activity_X
    inner join Cases_base
        on Last_activity_X."Case_ID" = Cases_base."Case_ID"
)

select * from Activity_X_done_before_date_Y

Actividad X realizada en un plazo de 5 días después de la actividad Y

Este código SQL identifica los casos en los que la última ocurrencia de la actividad 'X' se produjo en un plazo de 5 días después de la última ocurrencia de la actividad 'Y'.

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

-- Last activity X of each case
Last_activity_X as (
    select
        Event_log_base."Case_ID",
        max(Event_log_base."Event_end") as "Event_end",
        max(Event_log_base."Event_ID") as "Event_ID"
    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 as (
    select
        Event_log_base."Case_ID",
        max(Event_log_base."Event_end") as "Event_end",
        max(Event_log_base."Event_ID") as "Event_ID"
    from Event_log_base
    where Event_log_base."Activity" = 'Y'
    group by Event_log_base."Case_ID"
),

-- Last activity X should be done at date of last Event Y + 5 days
Activity_X_done_within_5_days_after_activity_Y as (
    select
        Last_activity_Y."Case_ID",
        {{ pm_utils.as_varchar('Last activity X before last activity Y + 5 days') }} as "Due_date",
        {{ pm_utils.dateadd('day', 5, 'Last_activity_Y."Event_end"') }} as "Expected_date",
        Last_activity_X."Event_end" as "Actual_date",
        Last_activity_Y."Event_ID" as "Event_ID"
    from Last_activity_Y
    inner join Last_activity_X
        on Last_activity_Y."Case_ID" = Last_activity_X."Case_ID"
)

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

-- Last activity X of each case
Last_activity_X as (
    select
        Event_log_base."Case_ID",
        max(Event_log_base."Event_end") as "Event_end",
        max(Event_log_base."Event_ID") as "Event_ID"
    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 as (
    select
        Event_log_base."Case_ID",
        max(Event_log_base."Event_end") as "Event_end",
        max(Event_log_base."Event_ID") as "Event_ID"
    from Event_log_base
    where Event_log_base."Activity" = 'Y'
    group by Event_log_base."Case_ID"
),

-- Last activity X should be done at date of last Event Y + 5 days
Activity_X_done_within_5_days_after_activity_Y as (
    select
        Last_activity_Y."Case_ID",
        {{ pm_utils.as_varchar('Last activity X before last activity Y + 5 days') }} as "Due_date",
        {{ pm_utils.dateadd('day', 5, 'Last_activity_Y."Event_end"') }} as "Expected_date",
        Last_activity_X."Event_end" as "Actual_date",
        Last_activity_Y."Event_ID" as "Event_ID"
    from Last_activity_Y
    inner join Last_activity_X
        on Last_activity_Y."Case_ID" = Last_activity_X."Case_ID"
)

select * from Activity_X_done_within_5_days_after_activity_Y

¿Te ha resultado útil esta página?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Uipath Logo White