DAX 服务召回率衡量标准

问题描述 投票:0回答:2

我正在努力在 DAX 中编写/计算此度量。召回率的定义是客户的重复服务预订次数(不同预订号码的数量,无论如何都应该是不同的,但以防万一),一周内的资产组合(截止日期,7 天期间)。

所以我出去修理一台机器,如果我在一周内再次被叫去为客户修理同一台机器,那么就召回 1 次(如果我在一周内多次被叫去,则召回次数更多)。我用不同的颜色突出显示了这些组。需要过滤掉空资产、关闭时间和空预订号(这是通过下面代码中 SQL 中的内部联接完成的,需要在 DAX 查询中)。

编辑

我意识到如果我发布 SQL 代码来生成数据会更有帮助:

SELECT
    FB.BookingNumber,
    FB.EngineerEmployeeID,
    FWO.ServiceAccountRecID AS Customer,
    FWO.AssetRecID AS Asset,
    FWO.ClosedOn
FROM dbo.FactWorkOrder AS FWO JOIN dbo.FactBooking AS FB ON FB.WorkOrderID = FWO.WorkOrderID
WHERE FWO.WorkOrderType = 'Breakdown'
    AND AssetRecID IS NOT NULL
    AND ClosedOn IS NOT NULL
ORDER BY BookingNumber

powerbi dax powerbi-desktop
2个回答
2
投票

如果您首先定义一个计算列,为每个

CloseOn
/
Customer
组合提供第一个
Asset
日期,那么效率最高。

FirstClosed =
    CALCULATE (
        MIN ( WorkOrder[ClosedOn] ),
        ALLEXCEPT ( WorkOrder, WorkOrder[Customer], WorkOrder[Asset] )
    )

然后写一个措施

TotalRecalls =
COUNTROWS (
    FILTER (
        WorkOrder,
        WorkOrder[ClosedOn] > WorkOrder[FirstClosed] &&
        WorkOrder[ClosedOn] < WorkOrder[FirstClosed] + 7
    )
)

但是,如果您愿意,您可以在一次测量中完成这一切。

TotalRecalls =
VAR AddCol =
    ADDCOLUMNS (
        WorkOrder,
        "@FirstClosed",
            CALCULATE (
                MIN ( WorkOrder[ClosedOn] ),
                ALLEXCEPT ( WorkOrder, WorkOrder[Customer], WorkOrder[Asset] )
            )
    )
RETURN
    COUNTROWS (
        FILTER (
            AddCol,
            WorkOrder[ClosedOn] > [@FirstClosed] &&
            WorkOrder[ClosedOn] < [@FirstClosed] + 7
        )
    )

无论哪种方式,这都是在视觉效果中使用的样子:


1
投票

我首先创建一个“预订密钥”栏:

Booking Key = [Customer] & "|" & [Asset] & "|" & WEEKNUM ( [ClosedOn] )

然后我将创建一个度量以返回预订密钥上修改后的不同计数:

# Repeat Service Bookings = 
VAR v_Count = DISTINCTCOUNT ( 'Table'[Booking Key] )
RETURN IF ( v_Count > 1, v_Count - 1 )

我会将 # 重复服务预订 添加到表格视觉对象的视觉级别筛选器中,筛选器设置为:大于 1

© www.soinside.com 2019 - 2024. All rights reserved.