Power BI时差

时间:2020-02-24 11:05:55

标签: sql-server powerbi dax

我在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

我需要工作在邀请日期到首次访问日期之间的时间。因此,电源bi中分开的时间日期约会的概念使我感到困惑。我应该在Datawarehouse中将其转换为合并的日期时间,然后在电源双向或电源查询中执行简单的DATEDIFF吗?

在DAX中是否有一种简单的方法可以避免引入合并的日期和时间列?

1 个答案:

答案 0 :(得分: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)