Power BI Разница во времени - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть дата, когда пользователь был приглашен присоединиться к приложению в таблице ApplicationUser, которая называется DateInvited. У меня также есть столбец, в котором хранится элемент времени приглашения (TimeInvited). У меня есть другая таблица с именем ApplicationAccessLog, которая содержит дату для доступа (Дата доступа) и отдельный столбец для идентификатора времени, который является ключом времени (TimeID), связанным с таблицей DimTime, который затем дает вам элемент времени.

-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

Мне нужно отработать время в часах от даты приглашения до даты первого доступа. Таким образом, концепции отдельного времени и даты в силе би бросили меня. Должен ли я преобразовать это в объединенную дату и время в Datawarehouse, а затем выполнить простой DATEDIFF на стороне power bi или запрос power?

Есть ли простой способ сделать это в DAX и избежать введения комбинированной даты и столбец времени?

1 Ответ

1 голос
/ 24 февраля 2020

Для меня самое простое решение - сделать столбец DateTime либо в DWH, либо в запросе мощности (или в DAX). (лучше, если это сделано в мощном запросе). Если вы не «материализуете» столбец, он будет пересчитываться каждый раз при вызове выражения, и я не уверен в том, как может быть производительность. (это до количества строк). Вы также можете установить этот столбец как скрытый, если не хотите, чтобы его видели.

--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)
...