2016-10-01 4 views
0

У меня есть несколько датчиков в моем доме, и я хочу использовать PowerBI для отображения графика температур в разных комнатах, а также для измерения текущих/последних значений.DAX: создать таблицу с последними записями

Я имею трудное время писать это в Dax:

Данные поступают в PowerBI из лазурной таблицы с именем «DeviceReadings» на форме:

  • Адрес (текст, раздел Key)
  • RowKey (Числовое значение на основе даты хранения, не используется)
  • Дата (DateTime, TimeStamp)
  • температуры (Decimal)
  • Влажность (Decimal)

То, что я хотел бы это: (ПСЕВДОКОД)

Select Location, Last(Date), Temperature, Humidity FROM DeviceReadings 
GROUP BY Location 

Ожидаемое/Wanted результат:

"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, основанная на этих показаниях. Идея состоит в том, чтобы создать расчетную таблицу, которая всегда содержит самую последнюю температуру/влажность, чтобы я мог отображать эти значения в визуальных видах калибровочного стиля.

Я пытался установить стол = SUMMARIZECOLUMNS, группируя по местоположению, а затем добавить именованные столбцы "LastSampled" как «MAX (DeviceReadings [Дата]), а затем "Температура"; LASTNONBLANK (DeviceReadings [ Температура], DeviceReadings [Температура]), но это не дает «подключенного значения температуры», но что-то еще.

В идеале, я хочу, чтобы группа по местоположению, затем макс местоположения даты пр, а затем отобразить необработанную температуру + значение влажности

Я просто хочу на «Самые последние показания температуры» по местоположению, отображаемую на моем PowerBI приборной панели , (Я использую рабочий стол PowerBI, чтобы писать все запросы и делать отчеты, и еще не загружены на портал 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] 
      && [Location] = [LocationJoin] 
    ), 
    "Location", [Location], 
    "LastDate", [Date], 
    "Temperature", [Temperature], 
    "Humidity", [Humidity] 
) 

Я уверен, что есть простой способ добиться того, что вы после этого, но я не могу понять, прямо сейчас.

Дайте мне знать, если это поможет.

+0

Это работает! На данный момент я его поддержал, и если ничего проще не появится, я буду отмечать это как ответ - фу, это много DAX, хотя, по-видимому, простой запрос! :) –

+0

Принимая это за ответ, он работает, и никто не придумал более простого решения. Спасибо, Алекс :) –