[Power query] Transfert de données d'une colonne à une autre si elle existe

Bonjour à toutes et tous.

Je viens demander votre aide pour une simple petite manip que je n'arrive pas à faire dans power query pour optimiser un peu plus mon fichier existant.

J'ai une table avec :

  • 2 colonnes "Consigne" : Température(°C) et Humidite(%HR)
  • 2 colonnes "Mesure" : Température(°C)_1 et Humidite(%HR)_2

Il peut arriver qu'un programme démarre sans consigne mais il y a quand même des valeurs de mesure :

image

J'aimerai que pour toute cellule vide dans la consigne, la cellule de la mesure soit vide aussi plutôt qu'à 0.

La petite subtilité supplémentaire c'est que certains fichiers dont viennent les données ne comportent pas du tout de gestion de l'humidité, donc pas de colonne consigne, ni de colonne mesure. C'est cette partie qui me pose problème car je ne peux pas faire une fonction qui cherche le nom de la colonne si elle n'existe pas, et la fonction MissingFields.Ignore ne fonctionne pas avec tout (ou alors avec une fonction que je ne connais pas)

L'idéal serait aussi de ne pas créer une troisième colonne si possible, seulement d'effacer les 0 de la colonne mesure quand il y a des valeurs "null" dans la colonne consigne.

J'espère avoir été clair, merci d'avance pour votre aide !

Bonjour,

Sans fichier joint, la réponse ne peut être qu'imprécise.

Pour modifier la colonne, sans en créer de troisième, utilises

Table.TransformColumns( ta table, {"colonne à modifier", each if ... then ... else}, null, Missing.FieldIgnore)

Qui, comme tu le vois, permet d'ignorer un champ non présent.

S'il n'y a qu'un champ à modifier et qu'il est absent, je ne sais pas si la fonction renvoie quand même une erreur.

Si c'est le cas, tu peux alors utiliser try ... otherwise.

A+

Bonjour,

Voici le fichier ainsi que sa source de données (à sélectionner grâce au bouton "Choix du fichier" de mon outil Autograph).

Mon souci est que lors de la création du graphique avec le bouton "Actualiser", j'aimerai obtenir des espaces vides quand il n'y a pas de valeurs plutôt qu'une courbe qui montre le tracé de la chute à 0.

A+

16clim-autograph.zip (801.83 Ko)

Bonjour,

Je replace mon sujet en haut de la liste pour celles et ceux qui auraient une idée.

Merci @OOoiste mais je n'arrive pas à tester ta solution, j'ai encore du mal avec la syntaxe PowerQuery donc je ne sais pas exactement comment rédiger ta fonction.

A+

Désolé, j'ai répondu un peu vite. Cela ne fonctionne pas avec Table.TransformColumns mais un remplacement conditionnel avec try otherwise devrait :

= try Table.ReplaceValue(#"Colonnes renommées",0,each if [#"Consigne Humidité(%HR)"]=null then null else _,Replacer.ReplaceValue,{"Humidité(%HR)"}) otherwise #"Colonnes renommées"

Pas de soucis ! En tous cas merci, ça fonctionne parfaitement ! (à 99% )

AVANT :

image

APRES :

image

Le fonctionnement de l'appareil fait qu'au début de chaque programme il mesure une valeur proche de 0 mais pas strictement égale à 0. Comment je peux remplacer le "0" de la formule pour qu'elle prenne en compte et teste chaque ligne ?

Merci beaucoup pour ton aide !

J'ai trouvé tout seul ! Tout fonctionne !

= try Table.ReplaceValue(#"Colonnes renommées",each [#"Humidité(%HR)"],each if [#"Consigne Humidité(%HR)"]=null then null else _,Replacer.ReplaceValue,{"Humidité(%HR)"}) otherwise #"Colonnes renommées"

Encore merci, je passe le sujet en résolu.

EDIT : en fait ça ne marche pas... Toutes les valeurs ont été effacées.

EDIT 2 : (Faut que je songe à être sûr de moi avant de poster un message)

Finalement j'ai réussi en remplaçant la variable après le "otherwise". Il reste encore des 0 parasites dès le démarrage de la consigne mais c'est le fonctionnement intrinsèque de l'appareil, le code lui est opérationnel.

C'est donc finalement RÉSOLU !

= try Table.ReplaceValue(#"Colonnes renommées",each [#"Humidité(%HR)"],each if [#"Consigne Humidité(%HR)"]=null then null else _,Replacer.ReplaceValue,{"Humidité(%HR)"}) otherwise [#"Humidité(%HR)"]
Rechercher des sujets similaires à "power query transfert donnees colonne existe"