گزارشهایی درباره زمان پاسخگویی گروه سرویس دسک
اینکه سرویس دسک با چه سرعتی درخواستها را به گروه های کارشناسی ارجاع می دهد معیار مهمی برای سنجش کارایی سرویس دسک است.
برای اینکه چنین گزارشهایی در SErviceDesk Plus داشته باشید نیازمند نوشتن Query هستید
زمان ورود درخواست به سرویس دسک برای درخواستهایی که نیازمند تایید هستند می شود لحظه گرفتن آخرین تایید
برای درخواستهایی که تایید لازم ندارند می شود زمان ایجاد درخواست
زمان خروج درخواست از سرویس دسک هم می شود زمان اولین ارجاع
از طرفی ممکن است بعضی درخواستها بعد از اتمام زمان کاری سرویس دسک وارد کارتابل گروه شده باشند، و در نتیجه در روز بعد ارجاع شوند، من برای سادگی این درخواستها را نادیده گرفتم
و ممکن هم هست که بعضی درخواستها پیش از گرفتن آخرین تایید، به گروههای کاری ازجاع شوند، یعنی گویا قبل از ورود به سرویس دسک از آن خارج شده اند. من اینها را هم حذف کردم.
نتیجه یک چنین چیزی شد:
select workOrder_Id,
workOrder.TITLE, RegionDefinition.REGIONNAME,
dateadd(s, toServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00')) as toServiceDesk,
dateadd(s, fromServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00')) as fromServiceDesk,
(fromServiceDesk - toServiceDesk) / 60000 as waitingTimeInMins
from
(
select
wo.WORKORDERID as workOrder_Id,
wo.title,
(select isnull((select max(ApprovalHistory.ACTION_DATE) from ApprovalHistory, ApprovalDetails, ApprovalStageMapping
where ApprovalStageMapping.WORKORDERID = wo.WORKORDERID and
ApprovalStageMapping.APPROVAL_STAGEID = ApprovalDetails.APPROVAL_STAGEID and
ApprovalDetails.APPROVALID = ApprovalHistory.APPROVALID),
(select min(OPERATIONTIME) from WorkOrderHistory where WorkOrderHistory.WORKORDERID = wo.WORKORDERID))) as toServiceDesk,
(select min(OPERATIONTIME)
from WorkOrderHistory, WorkOrderHistoryDiff where
WorkOrderHistory.HISTORYID = WorkOrderHistoryDiff.HISTORYID and
COLUMNNAME like '%QUEUEID%'and
WorkOrderHistory.WORKORDERID = wo.WORKORDERID) as fromServiceDesk
from WorkOrder as wo where
datediff(d, dateadd(s, wo.ResolvedTime/1000, convert(datetime, '1-1-1970 04:30:00')), getdate()) < 7
) as rawTable, WorkOrder, SiteDefinition,RegionDefinition
where datediff(d, dateadd(s, fromServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00')), dateadd(s, toServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00'))) = 0 and
fromServiceDesk - toServiceDesk >= 0 and
workorder.WORKORDERID = workOrder_Id and
WorkOrder.SITEID = SiteDefinition.SITEID and
SiteDefinition.REGIONID = RegionDefinition.REGIONID
and RegionDefinition.REGIONNAME in ('Assaluyeh', 'Shirino', 'Kangan', 'Jam')
order by workOrder_Id asc
چون من نیاز که فقط درخواستهای دفتر عسلویه را داشته باشم، بنابراین با استفاده از جدول Region این درخواستها را هم فیلتر کردم.
حالا اگر بخواهید یک عدد میانگین برای پاسخگویی گروه سرویس دسک داشته باشید می توانید از Query زیر استفاده کنید:
select
avg((fromServiceDesk - toServiceDesk) / 60000) as avgResponsetime
from
(select
wo.WORKORDERID as workOrder_Id,
wo.title,
(select isnull((select max(ApprovalHistory.ACTION_DATE) from ApprovalHistory, ApprovalDetails, ApprovalStageMapping
where ApprovalStageMapping.WORKORDERID = wo.WORKORDERID and
ApprovalStageMapping.APPROVAL_STAGEID = ApprovalDetails.APPROVAL_STAGEID and
ApprovalDetails.APPROVALID = ApprovalHistory.APPROVALID),
(select min(OPERATIONTIME) from WorkOrderHistory where WorkOrderHistory.WORKORDERID = wo.WORKORDERID))) as toServiceDesk,
(select min(OPERATIONTIME)
from WorkOrderHistory, WorkOrderHistoryDiff where
WorkOrderHistory.HISTORYID = WorkOrderHistoryDiff.HISTORYID and
COLUMNNAME like '%QUEUEID%'and
WorkOrderHistory.WORKORDERID = wo.WORKORDERID) as fromServiceDesk
from WorkOrder as wo where
datediff(d, dateadd(s, wo.ResolvedTime/1000, convert(datetime, '1-1-1970 04:30:00')), getdate()) < 7) as rawTable
, WorkOrder, SiteDefinition,RegionDefinition
where datediff(d, dateadd(s, fromServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00')), dateadd(s, toServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00'))) = 0 and
fromServiceDesk - toServiceDesk >= 0 and
WorkOrder.SITEID = SiteDefinition.SITEID and
SiteDefinition.REGIONID = RegionDefinition.REGIONID and
RegionDefinition.REGIONNAME in ('Assaluyeh', 'Shirino', 'Kangan', 'Jam') and
workorder.WORKORDERID = workOrder_Id
هر دو گزارش بالا درخواستهایی را بررسی می کنند که کارشناسان آنها را بسته اند. اما حقیقت این است که ما دنبال ارزیابی سرویس دسک هستیم و کاری به گروههای کارشناسی نداریم
مدتی بعد، من این query را برای مشخص کردن زمان واکنش گروه سرویس دسک در روز گذشته نوشتم:
select toTable.wId, totable.siteName, toTable.toServiceDesk, fromTable.fromServiceDesk, DATEDIFF(mi,toTable.toServiceDesk,fromTable.fromServiceDesk) as waitingTimeInMins from
/**
Comment on 'union':
It should calculates when each request has entered serviceDesk.
For requests that need approval, this is time of the last approval (first part of union)
For requests that don't need any approval, this is creation time (second part of union)
**/
(select WorkOrderStates.workorderId as wId, RegionDefinition.REGIONNAME as siteName, dateadd(s, max(ApprovalHistory.ACTION_DATE)/1000, convert(datetime, '1-1-1970 04:30:00')) as ToServiceDesk
from WorkOrderStates, ApprovalHistory, ApprovalDetails, ApprovalStageMapping, WorkOrder, SiteDefinition, RegionDefinition
where ApprovalStageMapping.WORKORDERID = WorkOrderStates.workorderId
and ApprovalStageMapping.APPROVAL_STAGEID = ApprovalDetails.APPROVAL_STAGEID
and ApprovalDetails.APPROVALID = ApprovalHistory.APPROVALID
and workorder.WORKORDERID = WorkOrderStates.workorderId
and WorkOrder.SITEID = SiteDefinition.SITEID
and SiteDefinition.REGIONID = RegionDefinition.REGIONID
group by WorkOrderStates.workorderId , RegionDefinition.REGIONNAME
union
select workorder.workorderId, RegionDefinition.REGIONNAME , dateadd(s, CREATEDTIME/1000, convert(datetime, '1-1-1970 04:30:00'))
from workorder, WorkOrderStates, SiteDefinition, RegionDefinition
where workorder.workorderId = WorkOrderStates.WORKORDERID
and WorkOrderStates.APPR_STATUSID is null
and WorkOrder.SITEID = SiteDefinition.SITEID
and SiteDefinition.REGIONID = RegionDefinition.REGIONID)
as toTable
left join
/**
This 'left join' calculates when request is assigned to any technical group.
**/
(select WorkOrderHistory.WORKORDERID as wId, dateadd(s, min(OPERATIONTIME)/1000, convert(datetime, '1-1-1970 04:30:00')) as fromServiceDesk
from WorkOrderHistory, WorkOrderHistoryDiff where
WorkOrderHistory.HISTORYID = WorkOrderHistoryDiff.HISTORYID and
WorkOrderHistoryDiff.COLUMNNAME like '%QUEUEID%'
--and WorkOrderHistory.WORKORDERID >= 20210
group by WorkOrderHistory.WORKORDERID) as fromTable
on toTable.wId = fromTable.wId
where
DATEDIFF(d, ToServiceDesk, getdate()) = 1
order by toTable.siteName, waitingTimeInMins desc
ServiceDesk Plus Query Report
Average Response Time of Service Desk Group