Создайте новый столбец, содержащий значение, основанное на условиях даты и часа

#powerbi #dax #powerquery #powerbi-embedded

Вопрос:

У меня в Power BI есть таблица со следующими полями :

введите описание изображения здесь

Предварительный просмотр данных:

введите описание изображения здесь

  • Столбец «платформа» имеет 3 возможных значения : приложение, магазин, веб-сайт
  • «день» имеет тип Дата
  • «час» имеет тип «Дата/время» (та же информация, что и «день» имеет час)

Я добавил меру для расчета скорости конвертации (заказы/посещения):

 conversion_rate = DIVIDE(SUM(Table[orders]), SUM(Table[visits]))
 

Затем я рассчитал для каждого дня скорость преобразования с 7 дней назад (чтобы иметь возможность сравнить их):

 conversion_rate_7_j = CALCULATE(Table[conversion_rate],
                         DATEADD(Table[day],-7,DAY)
                       )
 

Теперь мои данные выглядят так:

введите описание изображения здесь

Что я хочу сделать, так это рассчитать коэффициент конверсии за 7 дней, но за тот же час.

Однако я не смог найти функцию, которая вычитает поле типа Дата/время с учетом часа.

Решение, о котором я подумал, состоит в том, чтобы рассчитать заказы и посещения -7 дней в один и тот же час отдельно, а затем разделить их, чтобы получить коэффициент конверсии -7 дней в один и тот же час:

 orders_7_j_hourly = 
    VAR h = Table[hour] - 7
    VAR p = Table[platform]
    Return CALCULATE(
     MAX(Table[orders]),
     Table,
     Table[hour] = h,
     Table[platform] = p
    )
 

Так как мои данные сгруппированы по часам (Дата/время) и платформе,

И так как иногда в течение определенного часа у меня есть значения для платформы = «приложение», но не «магазин».,

Моя функция не работала, особенно то, что я использую MAX, это связывало количество заказов с неправильной платформой.

Не могли бы вы, пожалуйста, помочь ?

Примерные данные : https://ufile.io/y1blqgqn

Комментарии:

1. есть ли шанс, что вы можете предоставить образец данных ?

2. Что делать, если вы сделаете 2 столбца из своего столбца » Час » в Hour_date и Hour_hour? Теперь у вас есть значение часа в отдельном столбце, и вы можете легко применить дополнительную группу по часам. Есть ли в этом смысл?

3. @mkRabbani моя проблема с «платформой» все равно существовала бы, так как каждое значение «часа» повторяется X раз (X = количество платформ, иногда 3, а иногда меньше)

4. Затем покажите примеры данных для всех возможных сценариев. А затем добавьте ожидаемый результат от них. Пожалуйста, избегайте добавления изображения для образцов данных.

5. @mkRabbani примеры данных добавлены в исходный пост

Ответ №1:

Значения даты и времени хранятся в единицах дней. Таким образом, вы можете просто сдвинуться hour на 7 по вашему показателю.

 conversion_rate prev_week =
VAR CurrHour = SELECTEDVALUE ( Table1[hour] )
RETURN
    CALCULATE (
        [conversion_rate],
        ALL ( Table1[day] ),
        Table1[hour] = CurrHour - 7
    )
 

Результаты выборки:

Таблица визуальный снимок экрана

Ответ №2:

Вы пробовали использовать функцию «ЧАС»??

 conversion_rate_7_hour = CALCULATE( [conversion_rate],
FILTER( ALL(Table),
                         SELECTEDVALUE(Table[day]) - 7 = Table[day]
amp;amp;  HOUR(SELECTEDVALUE(Table[hour]) - 7) = HOUR( Table[hour])
                       ))
 

Когда мы помещаем таблицу[час] в визуализацию, она должна работать.

Ps. лучшая практика => если вы ссылаетесь на меры в своих расчетах,не включайте префикс таблицы

Комментарии:

1. Это не сработало, вернуло ошибку : Ошибка DAX: функция ‘SELECTEDVALUE’ использовалась в выражении True/False, которое используется в качестве выражения фильтра таблицы. Это недопустимо.

2. добавьте ФИЛЬТР( ВСЕ(таблица) и дополнительный «)» в конце

Ответ №3:

Вы можете создать дополнительный столбец, называемый hour в вашем наборе данных s1

Как только вы это сделаете, вы внесете часы в viz, следующая мера может дать вам то, что вы хотите

 convRate-7 = CALCULATE([convRate],DATEADD('Table'[day],-7,DAY))
 

S2

Комментарии:

1. Ваше решение работает при отображении информации в таблице, как в вашем примере! Но когда я пытаюсь визуализировать это, я не могу сделать это с днем часом. У вас есть решение?

2. Не могли бы вы, пожалуйста, указать свои ожидаемые результаты в таблице, чтобы я понял, чего вы хотите? Вы хотите, чтобы расчет производился на уровне день->час, но вы не хотите отображать час в viz. Тогда ты хочешь, чтобы эти часы были в слайсере? Пожалуйста, дайте мне знать.

3. Вот результат, который у меня есть : ibb.co/vVDMWmH Но я хочу отобразить ось Y = скорость преобразования И скорость преобразования 7j, а ось X = дата час.