2016-10-01 1 views
0

J'ai un certain nombre de capteurs dans ma maison, et je veux utiliser PowerBI pour afficher un graphique des températures dans les différentes pièces et évaluer les valeurs actuelles/les plus récentes.DAX: Créer une table avec les entrées les plus récentes

je vais avoir le plus de temps à écrire ce à dax:

Les données proviennent de PowerBI d'une table Azure nommé "DeviceReadings" sur la forme:

  • Emplacement (texte, clé de partition)
  • RowKey (valeur numérique basée sur la date stockée, non utilisé)
  • Date (DateTime, TimeStamp)
  • température (décimal)
  • Humidité (décimal)

Ce que je voudrais savoir: (pseudocode)

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

attendus/résultats WANTED est:

"Mediaroom", "01.10.2017 09:00", 26, 17 
"Office", "01.10.2017 09:03", 28, 23 
"Livingroom", "01.10.2017 09:13", 22, 32 

De toute évidence, je suis en train de créer un table DAX calculée sur la base de ces lectures. L'idée est de créer une table calculée qui contienne à tout moment la température/humidité la plus récente afin que je puisse afficher ces valeurs dans des visuels de style jauge.

Je suis en train de mettre la table = SUMMARIZECOLUMNS, regroupement par emplacement, puis en ajoutant des colonnes nommées "LastSampled" comme « MAX (DeviceReadings [Date]) puis "température"; LASTNONBLANK (DeviceReadings [ Temperature]; DeviceReadings [Temperature]); mais cela n'obtient pas une "lecture de température connectée, mais quelque chose d'autre.

Idéalement, je veux regrouper par emplacement, puis par emplacement max date de pr, puis afficher la température brute + valeur d'humidité

Je veux simplement « La plupart lecture de la température récente » par emplacement affiché sur mon tableau de bord PowerBI . (J'utilise PowerBI desktop pour écrire toutes les requêtes et créer les rapports, et je n'ai pas encore téléchargé sur le portail PowerBI)

Mes compétences DAX sont assez faibles, j'ai donc besoin d'aide pour écrire la requête calculée.

Répondre

1

Essayez d'utiliser cette expression:

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

Je suis assez sûr qu'il ya un moyen plus facile d'obtenir ce que vous êtes après, mais je ne peux pas comprendre en ce moment. Faites-moi savoir si cela aide.

+0

Cela fonctionne! Je l'ai upvoted pour l'instant, et si rien de plus simple ne se présente, je vais le marquer comme la réponse - ouf, c'est beaucoup de DAX cependant, pour une demande apparemment simple! :) –

+0

Accepter cela comme la réponse, cela fonctionne, et personne n'a trouvé une solution plus simple. Merci, Alex :) –