【问题标题】:Power BI Time DifferencePower BI 时差
【发布时间】:2020-02-24 11:05:55
【问题描述】:

我有一个用户被邀请加入 ApplicationUser 表中的应用程序的日期,称为 DateInvited。我还有一列存储邀请的时间元素(TimeInvited)。我有另一个名为 ApplicationAccessLog 的表,其中包含访问日期(访问日期)和时间 ID 的单独列,时间 ID 是链接到 DimTime 表的时间键(TimeID),然后为您提供时间元素。

-ApplicationUser Table ( Not linked to DimTime)

( DateInvitedID ( INT) , DateInvited ( DateTime) , TimeInvited(Time) )

-ApplicationAccessLog ( Linked to DimTime via TimeID)

( AccessDate ( Date) , TimeID ( INT) ) 

-DimTime 

TimeId  int
TimeValue   time
DayTimeText char
FlagMorning bit
Hour    tinyint
MinuteDay   smallint
MinuteHour  tinyint
SecondDay   int
SecondHour  smallint
SecondMinute    tinyint

样本数据

App User Name   Access Date     TimeId  Hour    MinuteHour  SecondMinute    TimeValue   DateInvited TimeInvited
Mr x    24/02/2020  32222   8   57  2   08:57:02    23/02/2020 17:20    17:20:05

我需要在受邀日期和首次访问日期之间的小时数内工作。因此,power bi 中单独的时间和日期列的概念让我感到震惊。我应该将其转换为 Datawarehouse 中的组合日期时间,然后在 power bi 端或 power 查询中执行简单的 DATEDIFF 吗?

有没有一种简单的方法可以在 DAX 中执行此操作并避免引入组合的日期和时间列?

【问题讨论】:

    标签: sql-server powerbi dax


    【解决方案1】:

    对我来说,最简单的解决方案是在 DWH 或电源查询(或 DAX)中创建 DateTime 列。 (如果在电源查询中完成更好) 如果您不“实现”列,则每次调用表达式时都会重新计算它,我不确定性能如何。 (取决于行数)。 如果您不希望看到此列,也可以将其设置为隐藏。

    --In Power Query use this function as column expression
    #datetime(year as number, month as number, day as number, hour as number, minute as number, second as number)
    
    --Using Dax Calculated Column
    DateTimeCol = DATE ( YYYY, MM, DD ) + TIME ( hh, mm, ss )
    
    --in a measure, you can then use the DATEDIFF function (or in the calculated column itself if you prefer)
    

    【讨论】:

    • 将其添加到 DWH 中,因为我觉得它可以让您更灵活地了解稍后在 power bi 中可以进行日期计算的内容和方式,并且有利于测试和验证目的。
    猜你喜欢
    • 2022-11-30
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多