首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerBI如何用DAX计算响应时间?

PowerBI如何用DAX计算响应时间?
EN

Stack Overflow用户
提问于 2022-06-16 07:24:36
回答 2查看 59关注 0票数 1

例如:

1.7.2021 10.49.03 TAK001收到VEH270的消息,MessageId " AS8PR01M“3.7.2021 11.58.03 TAK001回复此消息,因为AS8PR01M是从Reference列找到的,TAK001是发件人,DisplayTo是VEH270。

我需要计算这些日期与日期之间的日期差异。有人能帮忙解决这个问题吗,谢谢?

代码语言:javascript
复制
Sender  DisplayTo         DateTimeSent          DateTimeReceived    MessageId   References
TAK001  TAM210            28.10.2021 11.31.48   28.10.2021 11.31.50 AM7PR01M    HE1PR0101
TAM210  TAK001            18.10.2021 11.24.18   18.10.2021 11.24.19 HE1PR0101   
TAK001  VEH270, TAA770    3.7.2021 11.58.03     3.7.2021 11.58.05   DU2PR01M    AS8PR01M
VEH270  TAK001            1.7.2021 10.48.59     1.7.2021 10.49.03   AS8PR01M    
EN

回答 2

Stack Overflow用户

发布于 2022-06-16 14:53:25

如果我正确地理解了基于示例表:当References列中有一个值时,这一行是对引用的MessageID的答复。

基于您的示例,最困难的是处理或时间字符串。28.10.2021 11.31.48不能作为开箱即用的日期/时间来处理。

下面是用于计算响应时间的计算列的DAX,以分钟为单位:

代码语言:javascript
复制
ResponseTime =

VAR Date1_String = 
MINX(
    CALCULATETABLE(
        Table,
        [Reference] = EARLIER([MessageId])
    ),
    [DateTimeReceived]
)

VAR Date2_String = [DateTimeSent]

VAR Date1_Date = 
FORMAT(
    DATEVALUE(
        SUBSTITUTE(
            LEFT(
                Date1_String, 
                FIND(" ", Date1_String)
            ),
            ".",
            "/"
        )
    ),
    "dd/mm/yyyy"
) + 
TIMEVALUE(
    SUBSTITUTE(
        RIGHT(
            Date1_String, 
            FIND(" ", Date1_String)
        ),
        ".",
        ":"
    )
)

VAR Date2_Date = 
FORMAT(
    DATEVALUE(
        SUBSTITUTE(
            LEFT(
                Date2_String, 
                FIND(" ", Date2_String)
            ),
            ".",
            "/"
        )
    ),
    "dd/mm/yyyy"
) + 
TIMEVALUE(
    SUBSTITUTE(
        RIGHT(
            Date2_String, 
            FIND(" ", Date2_String)
        ),
        ".",
        ":"
    )
)

RETURN
IF(
    NOT ISBLANK([References]),
    DATEDIFF(
        Date1_Date,
        Date2_Date,
        MINUTE
    ),
    BLANK()
)

代码引入了几个变量:

  • Date1_String从初始消息中检索DateTimeReceived,使用当前Reference中的MessageId搜索消息,MessageId是当前行中的DateTimeSent。也就是说,reply.
  • Date1_DateDate2_Date是一种将字符串解析为可行的日期/时间格式的方法(稍微复杂一些)。

RETURN之后,一个简单的IF语句比计算两个日期之间的时差时间差(如果只有列References不是空的话)更简单。

票数 0
EN

Stack Overflow用户

发布于 2022-06-17 10:28:45

我想我至少有办法解决这个问题:

响应时间=

VAR Responseday =计算(

MIN(Sheet1DateTimeReceived)

过滤器(Sheet1,Reference=更早的(MessageId))

VAR Receiveday = DateTimeReceived

返回

代码语言:javascript
复制
DATEDIFF(Receiveday,Responseday,DAY)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72641962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档