Power query – M – Conversions de type


Comme nous l’avons vu dans les articles précédents, Power Query permet, depuis son interface utilisateur de réaliser très facilement la plupart des taches de chargement et de transformation de vos données.

Néanmoins, si vous souhaitez aller plus loin, il vous faudra étudier le langage qui tourne en arrière plan de cette interface utilisateur, le langage M.

Si ce n’est déjà fait, vous pouvez télécharger les fichiers sources sur le site de l’excellent  livre M is for (Data) Monkey écrit par Ken Puls et Miguel Escobar  dont nous nous sommes inspiré Télécharger les fichiers pour écrire ce post.

Pour commencer, le plus simple est d’ajouter une nouvelle colonne :

Après avoir renommé la colonne, vous pouvez écrire une formule en langage M, par exemple :

  • [Sales Quantity]*2

Pour vous faciliter la tache, vous n’avez pas à écrire le nom de chaque colonne, puisque l’éditeur vous présente les colonnes disponibles, sur lesquelles vous n’avez qu’à double cliquer.

La langage M est très différent des formules Excel auxquelles nous sommes habitués :

  • Les formules sont sensibles à la casse (Majuscules et minuscules sont considérées comme différentes.)
  • Le comptage se fait à partir de zéro (à partir de un dans Excel.
  • Il n’y a pas de conversion implicite de type de données (par exemple de texte en nombre.)

Cette dernière différence avec Excel est source de nombreuses erreurs. A titre d’exemple essayez cette formule dans notre nouvelle colonne : [Brand]&[Sales Quantity]  (vous pouvez revenir sur l’éditeur de fonction en cliquant sur la petite roue.)

Tous les enregistrements sont en erreur, pour une raison simple : les deux colonnes ne sont pas du même type.

Pour résoudre ce problème, deux solutions s’offrent à nous :

  • Changer le type des colonnes, avant d’ajouter la nouvelle.
  • Utiliser une fonction de conversion de type, comme Text.From() 

Attention aux majuscules et aux minuscules !

Il existe de très nombreuses fonctions dans Power query, vous pouvez vous familiariser avec elles en cliquant sur le lien ci-dessous, qui vous dirigera sur la page de Microsoft.

Conversion en Texte

En dehors de la fonction générale Text.From(), il existe de fonctions  spécifiques selon le type de données d’origine :

  • Date.ToText()
  • Number.ToText()
  • Time.ToText()

L’intérêt de ces fonctions spécialisées par rapport à Text.From(), est qu’elles ne fonctionneront que pour leur type d’origine.

Conversion en Date

M peut convertir un chiffre ou un texte en Date.

Par exemple : 510007 ou 06 Mai 3296.

La fonction générale est Date.From() alors que la fonction spécifique au texte est Date.FromText().

Conversion en Temps

Tout comme pour la conversion en Date, la conversion en Temps est possible par deux fonctions :

  • Time.From()  fonction générale
  • Time.FromText()

Conversion en Nombre

La fonction générale Number.From() convertira tout ce qui est possible, en nombre décimal.

Les fonctions spécifiques sont par exemples :

  • Number.FromText()
  • Decimal.From()
  • Int64.from()
  • Currency.From()

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *