Le langage M est vaste, bien trop vaste pour autre chose qu’un bref aperçu dans un seul chapitre. Néanmoins, pour donner une certaine structure à l’aperçu, il convient de savoir qu’il existe quelques catégories clés de fonctions M qui pourraient vous être utiles lorsque vous commencerez à utiliser M.
La liste suivante n’est en aucun cas exhaustive, mais peut, espérons-le, servir de point de départ pour votre voyage dans les fonctions M. Les catégories élémentaires sont
- Fonctions de texte
- Fonctions de date
- Fonctions horaires
- Fonctions DateHeure
- Fonctions logiques
- Fonctions numériques
Je me concentre sur ces catégories car elles sont probablement les plus facilement compréhensibles tant dans leur application que dans leur utilisation. Une fois que vous avez vu certaines de ces fonctions, nous pouvons passer à d’autres fonctions parmi la gamme de celles disponibles.
La plupart des fonctions M les plus élémentaires peuvent être appliquées d’une manière qui vous rappellera probablement leurs homologues Excel. Par exemple, si vous souhaitez étendre la formule que vous avez utilisée pour concaténer les colonnes Make et Model afin d’extraire uniquement les trois caractères les plus à gauche de Make, vous pouvez utiliser un code comme celui-ci :
= Table.AddColumn(#”Changed Type”, “CarType”, chaque Text.Start([Make], 3) & ” ” & [Model])
Le résultat est illustré à la Figure .
Application d’une première fonction de texte
Comme vous pouvez le voir, encapsuler la colonne Make dans cette fonction de texte particulière a ajouté une couche supplémentaire de transformation de données à l’expression.
Fonctions de texte
Plutôt que de vous guider étape par étape à travers tous les exemples possibles de fonctions de texte, je préfère vous montrer certaines des fonctions de texte les plus utiles (du moins, d’après mon expérience). Ces extraits de code sont donnés dans le tableau , où vous reconnaîtrez sans aucun doute de nombreuses fonctions auxquelles vous avez accédé jusqu’à présent via l’interface utilisateur de Power Query.
Tableau . Exemples de fonctions de texte
Production | Extrait de code | La description |
La gauche | Text.Start([Make],3) | renvoie les trois premiers caractères de la colonne Make. |
droite | Text.End([Make],3) | renvoie les trois derniers caractères de la colonne Make. |
jusqu’à un caractère spécifique | Text.Start([Make], Text.PositionOf([Make],” “)) | renvoie les caractères les plus à gauche jusqu’au premier espace. |
jusqu’à un délimiteur | Text.BeforeDelimiter(
[InvoiceNumber], “-” ,”2″)
|
renvoie le texte avant le troisième trait d’union. |
longueur du texte | Text.Length([Make]) | Trouve la longueur d’un texte |
extraire une sous-chaîne | Text.Range([Make], 2, 3) | extrait un nombre spécifique de caractères d’un texte, en commençant à une position spécifiée. |
supprimer un sous-texte | Text.RemoveRange([Make], 2, 3) | supprime un nombre spécifique de caractères d’un texte, en commençant à une position spécifiée. |
remplacer un texte | Text.Replace([Make], “o”, “a”) | remplace tous les caractères o par un a dans le texte ou la colonne. |
espaces de garniture | Text.Trim([Make]) | supprime les espaces de début et de fin dans le texte ou la colonne. |
Convertir en majuscule | Text.Upper([Make]) | Convertit le texte ou la colonne en majuscules. |
Convertir en minuscule | Text.Lower([Make]) | Convertit le texte ou la colonne en minuscules. |
ajouter des majuscules initiales | Text.Proper([Make]) | ajoute des majuscules initiales à chaque mot du texte ou de la colonne. |
Si vous avez examiné attentivement ces fonctions, vous avez probablement remarqué que tous les paramètres numériques sont basés sur zéro. Ainsi, pour définir le troisième trait d’union lors du fractionnement du texte dans une colonne, vous utiliserez 2, et non 3.
Il y a, inévitablement, beaucoup plus de fonctions de texte disponibles dans M. Cependant, le but n’est pas de noyer le lecteur dans des détails techniques, mais de vous faire prendre conscience à la fois de la façon dont M fonctionne et de ce qui est possible.
Une fois que vous avez également appris le langage DAX pour créer des calculs dans Power BI, vous vous demandez peut-être pourquoi vous effectuez des opérations comme celle-ci dans Power BI Desktop Query alors que vous pouvez faire pratiquement la même chose dans le modèle de données. Eh bien, c’est vrai qu’il y a un certain chevauchement; vous avez donc le choix de l’utiliser. Vous pouvez effectuer certaines opérations à plusieurs étapes du processus de préparation et d’analyse des données. Tout dépend de la façon dont vous utilisez les données et avec quel outil vous effectuez les analyses.
Le tableau n’est qu’un sous-ensemble des fonctions de texte disponibles dans M. Si vous souhaitez voir la liste complète, elle se trouve sur le site Web de Microsoft à l’adresse https://docs.microsoft.com/en-us/ powerquery-m/ fonctions de texte.
Fonctions numériques
Pour étendre vos connaissances, le tableau montre quelques-unes des fonctions numériques disponibles dans M. Ici, je me suis concentré sur la présentation de certaines des conversions de type numérique ainsi que des fonctions de calcul de base.
Tableau. Exemples de fonctions numériques
Production | Extrait de code | La description |
renvoie un entier 8 bits | Int8.From(“25”) | Convertit le texte ou le nombre en entier 8 bits. |
renvoie un entier 16 bits | Int16.From(“2500”) | Convertit le texte ou le nombre en entier 16 bits. |
renvoie un entier 32 bits
|
Int32.From(“250,000”) | Convertit le texte ou le nombre en entier 32 bits. |
renvoie un entier 64 bits
|
Int64.From(“2500000000”) | Convertit le texte ou le nombre en entier 64 bits. |
renvoie un nombre décimal
|
Decimal.From(“2500”) | Convertit le texte ou le nombre en nombre décimal. |
renvoie une valeur numérique Double à partir de la valeur donnée | Double.From(“2500”) | Convertit le texte ou le nombre en nombre à virgule flottante. |
prend un texte comme source et le convertit en
une valeur numérique |
Number.FromText(“2500”) | Convertit le texte en nombre. |
arrondit un nombre | Number.Round(5000, 0) | arrondit le nombre vers le haut ou vers le bas au nombre de décimales (ou dizaines, centaines, etc., pour les paramètres négatifs). |
arrondit un nombre | Number.RoundUp(5020, -2) | arrondit le nombre au nombre de décimales supérieur (ou dizaines, centaines, etc., pour les paramètres négatifs). |
arrondit un nombre vers le bas | Number.RoundDown(100.01235, 2) | arrondit le nombre au nombre de décimales (ou dizaines, centaines, etc., pour les paramètres négatifs). |
supprime le signe | Number.Abs(-50) | renvoie la valeur absolue du nombre. |
s’élève à une puissance | Number.Power(10, 4) | renvoie la valeur du premier paramètre à la puissance du second. |
Modulo | Number.Mod(5, 2) | renvoie le reste résultant de la division entière du nombre par le diviseur. |
Indique le signe d’un nombre | Number.Sign(-1) | renvoie 1 si le nombre est un nombre positif, -1 s’il s’agit d’un nombre négatif et 0 s’il est égal à zéro. |
donne la racine carrée | Number.Sqrt(4) | renvoie la racine carrée du nombre. |
Remarque Si vous êtes un utilisateur d’Excel, vous pouvez probablement voir une similitude distincte avec la façon dont vous créez des formules dans Excel et Power Pivot, sauf qu’ici (comme dans Power Pivot), vous utilisez des noms de colonne plutôt que des références de cellule.
Le tableau n’est qu’un sous-ensemble mineur de la vaste gamme de fonctions numériques disponibles dans M. Si vous souhaitez voir la liste complète, elle se trouve sur le site Web de Microsoft à l’adresse https://docs.microsoft.com/en- us/powerquery-m/nombre-fonctions.
Fonctions de date
M a de nombreuses fonctions de date. Le tableau 12-4 contient un échantillon potentiellement utile des fonctions disponibles.
Tableau Exemples de fonctions de date
Production | Extrait de code | La description |
Jour | Date.Day(Date. FromText(“25/07/2020”)) | renvoie le numéro du jour de la semaine à partir d’une date. |
Année | Date.Month(Date. FromText(“25/07/2020”))
|
renvoie le numéro du mois à partir d’une date. |
Jour de la semaine |
Date.Year(Date. FromText(“25/07/2020”)) | renvoie l’année à partir d’une date. |
nom du jour de la semaine | Date.DayOfWeekName(Date. FromText(“25/07/2020”))
|
renvoie le nom du jour de la semaine à partir d’une date. |
Premier jour du mois | Date.StartOfMonth(Date. FromText(“25/07/2020”)) | renvoie le premier jour du mois à partir d’une date |
Dernier jour du mois | Date.EndOfMonth(Date. FromText(“25/07/2020”)) | renvoie le dernier jour du mois à partir d’une date. |
Premier jour de l’année | Date.StartOfYear(Date. FromText(“25/07/2020”)) | renvoie le premier jour de l’année à partir d’une date. |
Dernier jour de l’année | Date.EndOfYear(Date. FromText(“25/07/2020”))
|
renvoie le dernier jour de l’année à partir d’une date. |
Jour de l’année | Date.DayOfYear(Date.
FromText(“25/07/2020”))
|
renvoie le jour de l’année à partir d’une date. |
Semaine de l’année | Date.WeekOfYear(Date.
FromText(“25/07/2020”))
|
renvoie la semaine de l’année à partir d’une date. |
Trimestre | Date.QuarterOfYear(Date.
FromText(“25/07/2020”)) |
renvoie le numéro du trimestre à partir d’une date. |
Premier jour du trimestre | Date.StartOfQuarter(Date. FromText(“25/07/2020”))
|
renvoie le premier jour du trimestre à partir d’une date |
Dernier jour du trimestre | Date.EndOfQuarter(Date. FromText(“25/07/2020”))
|
renvoie le dernier jour du trimestre à partir d’une date. |
Le tableau n’est qu’un sous-ensemble des fonctions de date disponibles dans M. Si vous souhaitez voir la liste complète, elle se trouve sur le site Web de Microsoft à l’adresse https://docs.microsoft.com/en-us/ powerquery-m/ fonctions de date.
Fonctions de temps
M a également de nombreuses fonctions temporelles. Le tableau 12-5 contient un échantillon potentiellement utile des fonctions disponibles.
Tableau . Exemples de fonctions de temps
Production | Extrait de code | La description |
heure | Time.Hour(#time(14, 30, 00)) | renvoie l’heure à partir d’une heure. |
Minute | Time.Minute(#time(14, 30, 00)) | renvoie la minute d’une heure. |
Second | Time.Second(#time(14, 30, 00)) | renvoie la seconde à partir d’un temps. |
temps à partir de la fraction | Time.From(0.5) | renvoie l’heure à partir d’une fraction de jour. |
Le tableau n’est qu’un sous-ensemble des fonctions de temps disponibles dans M. Si vous souhaitez voir la liste complète, elle se trouve sur le site Web de Microsoft à l’adresse https://docs.microsoft.com/en-us/ powerquery-m/ fonctions temporelles.
De même, comme elles sont si similaires aux fonctions date et heure, je n’ai pas montré ici les fonctions datetime et les fonctions datetimezone. Ceux-ci sont également disponibles sur le site Web de Microsoft.
Fonctions de durée
M peut également extraire des durées, en jours, heures, minutes et secondes. Le tableau montre certaines des fonctions de durée de base.
Tableau . Exemples de fonctions de durée
Production | Extrait de code | La description |
Journées | Duration.Days(#duration(10, 15.55, 20)) | Durée en jours. |
heures | Duration.Hours(#duration(10, 15, 55, 20)) | Duration in hours. |
Minutes | Duration.Minutes(#duration(10, 15, 55, 20)) | Durée en minutes. |
Secondes | Duration.Seconds(#duration(10,15, 55, 20)) | Durée en secondes. |
Le tableau répertorie presque toutes les fonctions de durée disponibles dans M. Si vous souhaitez voir les quelques fonctions restantes, elles se trouvent sur le site Web de Microsoft à l’adresse https://docs.microsoft. com/en-us/powerquery-m/duration-functions.
Concepts M
Le moment est venu de « retirer les stabilisateurs » du vélo et d’apprendre à rouler sans aide. Cela signifie, tout d’abord, se familiariser avec plusieurs concepts structuraux M.
Il s’agit de passer des fonctions « starter » permettant de modifier le contenu des données à la création et la modification des structures de données elles-mêmes. M est essentiellement axé sur le chargement et la présentation de structures de données tabulaires, de sorte que les tables de données constituent une structure de données essentielle. Cependant, il existe d’autres structures de données qu’il peut manipuler — et que vous avez vues en passant dans les chapitres précédents. Dans ce chapitre, nous examinerons donc les trois structures de données de base. Collectivement, celles-ci sont classées comme des valeurs structurées, par opposition aux valeurs primitives telles que le texte, le nombre ou la date et l’heure. Certains d’entre eux sont
- Listes
- Enregistrements
- Les tables
Cependant, avant de plonger dans ces éléments de données structurés, vous devez comprendre deux aspects fondamentaux du langage M. Ceux-ci sont
- Types de données
- Valeurs M (également appelées variables ou identifiants) Alors, sans plus tarder, commençons votre voyage vers M.