- 在开始之前
- 管理访问权限
- 入门指南
- 集成
- 使用流程应用程序
- 创建应用程序
- 正在加载数据
- Transforming data
- 自定义仪表板
- 发布流程应用程序
- 应用程序模板
- 通知
- 其他资源

Process Mining 用户指南
配置截止日期
此页面上的信息仅适用于具有截止日期配置文件和seeds\文件夹的应用程序模板。
如果要使用“到期日期”仪表板来分析到期日期,则必须为应用程序模板定义到期日期。
如果您的应用程序模板有开箱即用的到期日期,这些到期日期将显示在到期日期仪表板中。在特定应用程序模板的文档中,您可以找到可用截止日期的概述。“应用程序模板”页面包含指向所有可用应用程序模板的文档链接。
如果到期日期仪表板中没有可用的数据,则需要使用数据转换在 models\5_business_logic\Due_dates_base.sql 文件中配置自己的到期日期。 您还可以在此处根据业务需求配置任何默认到期日期。
对于自定义流程,您还可以使用Due_dates.csv文件上传截止日期。请查看自定义流程输入字段。
在转换中添加业务逻辑
在最后一个转换步骤中,根据需要添加业务逻辑以进行数据分析。
到期日期表中的每条记录代表特定对象的一个到期日期。 到期日期示例如下:
- 付款对象的付款截止日期。
- 采购申请的批准截止日期。
此表的必填字段为 Case_ID、Due_date、Actual_date 和 Expected_date。

并非所有活动都有截止日期,有些活动可能有多个截止日期。
有关更多信息,请参阅“数据转换编辑器” 。
在数据转换中提供到期日期配置输入
您可以使用“数据转换”中的 SQL 语句提供其他输入数据,用于在“到期日期”仪表板中进行计算。对于所有截止日期,您可以配置以下字段。
| 名称 | 类型 | 描述 |
|---|---|---|
Due_date | 文本 | 到期日的名称。 |
Due_date_type | 文本 | 截止日期类型。 |
Fixed_costs | 布尔值 | 指示成本是固定的还是基于时间的。 |
Cost | 浮动 | 固定成本:成本金额。可变成本:每个时间和Type_type 的成本金额。 |
Time | 整数 | 一个数字,指示在基于时间的成本情况下的时间量。 |
Time_type | 文本 | 成本计算的时间段类型。这可以是以下任何值:日、小时、分钟、秒和毫秒。 |
Case_ID | 文本/整数 | 与到期日期相关的案例 ID。 |
请查看转换。
Providing due date configuration input using dbt seeds
对于数据转换的seeds\ 文件夹中仍包含 Due_dates_configuration_raw.csv 种子文件的流程应用程序,您可以使用此文件提供其他输入数据,以用于到期日期仪表板中的计算。
下图显示了一个种子文件示例。

请查看转换。
配置截止日期的 SQL 示例
此页包含一些 SQL 示例,您可以使用这些示例通过转换配置到期日期。
SQL 示例基于事件日志和自定义流程应用程序模板,以及具有Case_ID的用例。如果要使用 SQL 示例为采购到付款应用程序模板或订单到现金应用程序模板定义到期日期,请确保使用适当的对象和相关的内部 object_ID。对于“购买到付款” ,您可以使用Purchase_order_item_end_to_end_events事件日志、 Purchase_order_items对象,并将Purchase_order_item_ID_internal用作Case_ID 。对于订单到现金,您可以使用Sales_order_item_end_to_end_events事件日志、 Sales_order_items对象,并将Sales_order_item_ID_internal用作Case_ID 。
以下代码块显示了用于定义到期日期的 SQL 查询示例。
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"
以下代码块显示了用于配置截止日期的 SQL 查询示例。
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_base
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_base
活动 X 在日期 Y 之前完成
此 SQL 代码可识别最后一次出现的活动“X”在日期“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_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_Y
活动 X 在活动 Y 后 5 天内完成
此 SQL 代码用于标识活动“X”最后一次出现是在活动“Y”最后一次出现之后 5 天内发生的案例。
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_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_Y