#iot #powerbi #dax #azure-table-storage #temperature
#iot #powerbi #dax #azure-table-storage #температура
Вопрос:
У меня дома есть несколько датчиков, и я хочу использовать PowerBI для отображения графика температур в разных комнатах, а также для измерения текущих / самых последних значений.
Мне труднее всего писать это в dax:
Данные поступают в PowerBI из таблицы Azure с именем «DeviceReadings» в форме:
- Расположение (текст, ключ раздела)
- Строка (числовое значение, основанное на сохраненной дате, не используется)
- Дата (дата-время, временная метка)
- Температура (десятичная)
- Влажность (десятичная)
Чего бы я хотел, так это: (ПСЕВДОКОД)
Select Location, Last(Date), Temperature, Humidity FROM DeviceReadings
GROUP BY Location
Ожидаемый / желаемый результат:
"Mediaroom", "01.10.2017 09:00", 26, 17
"Office", "01.10.2017 09:03", 28, 23
"Livingroom", "01.10.2017 09:13", 22, 32
Очевидно, я пытаюсь создать вычисляемую таблицу DAX на основе этих показаний. Идея состоит в том, чтобы создать вычисляемую таблицу, которая всегда содержит самую последнюю температуру / влажность, чтобы я мог отображать эти значения в виде визуальных элементов в стиле датчика.
Я пытался установить table = SUMMARIZECOLUMNS, группируя по местоположению, а затем добавляя именованные столбцы «LastSampled» как «MAX (DeviceReadings [Дата]), а затем «Температура»; LASTNONBLANK(DeviceReadings [Температура]; DeviceReadings [Температура]); но это не дает «подключенного значения температуры, но что-то еще.
В идеале я хочу группировать по местоположению, затем по максимальной дате и местоположению, а затем отображать исходное значение температуры влажности
Я просто хочу, чтобы на моей панели управления PowerBI отображались «Самые последние показания температуры» по местоположению. (Я использую PowerBI desktop для записи всех запросов и создания отчетов и еще не загружен на портал PowerBI)
Мои навыки работы с DAX довольно низки, поэтому мне нужна помощь в написании вычисляемого запроса.
Ответ №1:
Попробуйте использовать это выражение:
Table = SELECTCOLUMNS (
FILTER (
CROSSJOIN (
SELECTCOLUMNS (
GROUPBY (
DeviceReadings,
DeviceReadings[Location],
"LASTDATE", MAXX ( CURRENTGROUP (), DeviceReadings[Date] )
),
"Location", DeviceReadings[Location],
"Date", [LASTDATE]
),
SELECTCOLUMNS (
DeviceReadings,
"DateJoin", DeviceReadings[Date],
"LocationJoin", DeviceReadings[Location],
"Humidity", DeviceReadings[Humidity],
"Temperature", DeviceReadings[Temperature]
)
),
[Date] = [DateJoin]
amp;amp; [Location] = [LocationJoin]
),
"Location", [Location],
"LastDate", [Date],
"Temperature", [Temperature],
"Humidity", [Humidity]
)
Я почти уверен, что есть более простой способ добиться того, что вам нужно, но я не могу понять прямо сейчас.
Дайте мне знать, если это поможет.
Комментарии:
1. Это работает! Я пока проголосовал за это, и если ничего более простого не придумается, я отмечу это как ответ — фух, это много DAX, хотя для, казалось бы, простого запроса! 🙂
2. Принимая это как ответ, это работает, и никто не придумал более простого решения. Спасибо, Алекс 🙂