#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
в вашем наборе данных
Как только вы это сделаете, вы внесете часы в viz, следующая мера может дать вам то, что вы хотите
convRate-7 = CALCULATE([convRate],DATEADD('Table'[day],-7,DAY))
Комментарии:
1. Ваше решение работает при отображении информации в таблице, как в вашем примере! Но когда я пытаюсь визуализировать это, я не могу сделать это с днем часом. У вас есть решение?
2. Не могли бы вы, пожалуйста, указать свои ожидаемые результаты в таблице, чтобы я понял, чего вы хотите? Вы хотите, чтобы расчет производился на уровне день->час, но вы не хотите отображать час в viz. Тогда ты хочешь, чтобы эти часы были в слайсере? Пожалуйста, дайте мне знать.
3. Вот результат, который у меня есть : ibb.co/vVDMWmH Но я хочу отобразить ось Y = скорость преобразования И скорость преобразования 7j, а ось X = дата час.