M est un langage de formule puissant et polyvalent spécialement conçu pour la manipulation et la transformation des données.
Le terme M est une désignation informelle. Le terme M est une désignation informelle. Le nom officiel de M est Power Query Formula Language.
L'histoire de M
Le processus d'extraction, transformation et chargement des données a toujours été un défi pour les utilisateurs professionnels et les professionnels de l'informatique.
Des outils comme SQL Server Integration Services et Alteryx ont été développés pour y faire face, mais souvent jugés complexes. Le langage M et Power Query ont été créés pour simplifier ce processus.
M a ses origines dans un projet nommé Data Explorer, lancé en 2011, visant à simplifier l'accès et la préparation des données. En 2013, Microsoft a lancé Power Query pour Excel, utilisant M pour les transformations de données. Avec l’essor de Power BI, le langage a été normalisé par l’ECMA en 2016, assurant compatibilité et interopérabilité.
Le langage M, bien que connu officiellement comme Power Query Formula Language, est devenu un outil clé pour la transformation des données chez Microsoft, intégré dans divers produits et continuellement amélioré.
Qui est concerné ?
Professionnels de l'intelligence d'affaires Scientifiques des données Utilisateurs expérimentés Personnes occupant des rôles axés sur les données Expériences
Bien qu'il existe deux expériences différentes pour la création de M, les deux offrent presque exactement la même expérience utilisateur.
Produits et services
Présence de M dans les logiciels et services suivants :
Flux de données (Power Query Online) Power BI/Fabric service (powerbi.com)
Power BI Report Server (PBRS) Excel (Données > Obtenir des données) Power Apps (Flux de données comme source de données - ) Power Automate (action Transformer des données à l’aide de Power Query de SQL Server) SQL Server : SSIS prend en charge le moteur M de base, tandis que SQL Server Analysis Services (SSAS) prend en charge l'expérience Power Query Desktop. Dynamics 365 Customer Insights Visual Studio : Power Query pour Visual Studio Code 7 raisons pour apprendre le M ?
Exploiter toute la puissance de Power Query Automatisation des tâches répétitives Flexibilité et personnalisation : M vous permet d'écrire des fonctions personnalisées, d'effectuer des transformations avancées Optimisation de l'efficacité et des performances : l'utilisation de M peut réduire et simplifier considérablement le code des formules et des expressions d'analyse de données (DAX) dans les applications en aval telles qu'Excel et Power BI Desktop Nettoyage et transformation avancés des données Intégration avec d'autres langages de programmation Principes de base du langage M
Expressions et fonctions : les expressions forment les éléments constitutifs des transformations de données.
Une expression représente un calcul ou une opération qui est évaluée en fonction d'une valeur. Text.Start("Hello, World !", 5) renvoie Hello. Types de données : Text.From convertit une valeur en texte, Date.Year extrait le composant year d’une valeur de date. Variables et constantes : Les variables et les constantes permettent d'améliorer la lisibilité du code.
Les variables sont créées à l'intérieur d'une expression let, suivie d'une liste d'affectations de variables séparées par des virgules.
Les constantes sont des valeurs fixes qui restent constantes tout au long de l'exécution. Opérateurs : Les opérateurs arithmétiques (+, -, *, /, etc.) sont utilisés pour les calculs numériques. Les opérateurs de comparaison (>, <, =, etc.) évaluent les conditions logiques Pliage de requête : le pliage de requête est une technique d'optimisation dans Power Query qui envoie les transformations de données à la source de données dans la mesure du possible. Gestion et débogage des erreurs : En utilisant des fonctions telles que try, otherwise et error, vous pouvez contrôler le flux d'exécution et gérer les erreurs potentielles avec facilité. Sensibilité à la casse : M est sensible à la casse Commentaires : style de commentaire en langage C. // pour une ligne, /* et */ pour un bloc. L'expression let
L’expression let doit être associée à une expression in.
L'expression let contient l'entrée et les transformations, tandis que l'expression in contient la sortie.
Caractéristiques informelles de M
Classification formelle
Les langages de programmation sont classés selon un certain nombre de propriétés, telles que pur/impur, d'ordre inférieur/supérieur, typé statiquement/dynamiquement, fortement/faiblement typé, évaluation impatiente/paresseuse et impératif/fonctionnel.
Microsoft a décrit M comme suit :
Principalement pur : Un langage de programmation est pur s'il maintient l'intégrité référentielle, permettant de remplacer une expression par sa valeur sans changer le programme. Un langage impur permet des effets secondaires, modifiant l'état en dehors de la valeur de retour d'une fonction. M, utilisé pour la transformation et l'extraction de données, souvent interagit avec des sources externes, créant des effets secondaires. Bien que M intègre des constructions fonctionnelles et l'immuabilité, il n'est pas purement fonctionnel en raison de sa nature impure, combinant des paradigmes fonctionnels et impératifs pour une manipulation efficace des données. Ordre supérieur : Les langages d'ordre supérieur, comme Power Query M, permettent de traiter les fonctions comme des valeurs, favorisant un code modulaire et flexible. M supporte la programmation d'ordre supérieur, permettant d’assigner des fonctions à des variables, de les utiliser comme arguments et de les renvoyer comme résultats. Cela facilite l'application dynamique de transformations et calculs selon les paramètres d'entrée et les caractéristiques des données, permettant des manipulations complexes et personnalisées. Typage dynamique : les langages à typage dynamique effectuent une vérification de type au moment de l'exécution plutôt qu'au moment de la compilation, comme c'est le cas avec les langages à typage statique. La vérification de type consiste simplement à s'assurer que des éléments tels que les paramètres passés à une fonction sont du type correct, tels qu'un texte, un nombre ou une date. Faiblement typé : Les langages fortement typés nécessitent des définitions de type explicites et sont sensibles à la compatibilité des types. À l'inverse, les langages faiblement typés comme M ne nécessitent pas de définitions explicites et peuvent effectuer des conversions automatiques. M est moins faiblement typé que Python, car ses variables sont immuables après calcul. La flexibilité du typage permet à M de gérer divers types de données et transformations. Bien que faiblement typé, M effectue une vérification de type à l'exécution pour la cohérence des opérations, équilibrant flexibilité et intégrité des données Partiellement paresseux : Le langage M suit principalement une évaluation enthousiaste, où les transformations et calculs sont effectués immédiatement pour des résultats rapides. Cependant, il intègre une évaluation paresseuse dans des contextes spécifiques, comme les expressions List, Record, Table, et let, ainsi que pour les arguments optionnels et les constructions conditionnelles if-then-else. Ces évaluations paresseuses permettent d’optimiser les performances en évitant les calculs inutiles. Ainsi, M est principalement enthousiaste mais utilise une évaluation paresseuse partielle pour offrir flexibilité et efficacité dans certains cas. Fonctionnel : M est un langage de programmation fonctionnel intégrant des concepts comme l'immuabilité, les fonctions d'ordre supérieur, la composition de fonctions, les fonctions pures et la récursivité. L'immuabilité signifie que les valeurs ne sont pas modifiées sur place, mais transformées en nouvelles valeurs, évitant ainsi les effets secondaires. Les fonctions d'ordre supérieur permettent de traiter les fonctions comme des valeurs de première classe. La composition de fonctions facilite la création de transformations complexes. Les fonctions pures, sans effets secondaires, produisent des résultats prévisibles. M prend également en charge la récursivité, bien qu'à un degré limité par rapport à d'autres langages fonctionnels. En termes de comparaison avec d'autres langages, M est peut-être plus similaire à F#.
Caractéristiques informelles de M
De manière plus informelle, voici quelques caractéristiques et caractéristiques clés de M :
1. Langage fonctionnel : M est un langage fonctionnel centré sur l'utilisation de fonctions pour les transformations de données. Il offre plus de 700 fonctions intégrées pour des opérations courantes et permet la création de fonctions personnalisées. Cette vaste collection de fonctions fournit aux utilisateurs des outils puissants pour simplifier et effectuer efficacement des manipulations de données complexes.
2. Syntaxe expressive et lisible : La syntaxe de M est intuitive et facile à lire, accessible aux débutants et aux programmeurs expérimentés. Elle permet d'écrire des expressions claires et concises pour des transformations de données complexes, tout en maintenant la lisibilité. La syntaxe suit une approche pas à pas pour définir des transformations séquentielles.
3. Types de données et valeurs : M prend en charge divers types de données, y compris des types primitifs comme le texte et les nombres, ainsi que des types structurés comme les listes et les tables. Il offre des fonctions puissantes pour manipuler ces types à un niveau granulaire. M permet également de définir et utiliser des variables, constantes, et paramètres pour stocker et réutiliser des résultats intermédiaires lors de la transformation des données.
Intégration avec l'éditeur Power Query : M s'intègre parfaitement à l'éditeur Power Query, offrant une interface conviviale pour interagir avec le code M. L’éditeur permet de créer visuellement des étapes de transformation, d'afficher un aperçu des résultats et de générer automatiquement du code M, offrant ainsi un environnement de développement robuste pour écrire, déboguer et affiner les expressions M. Extensibilité et personnalisation : M se distingue par son extensibilité, permettant la création de transformations personnalisées au-delà des capacités intégrées. Les utilisateurs peuvent définir leurs propres fonctions, écrire des extraits de code réutilisables et développer une logique de manipulation avancée pour gérer des scénarios de données complexes non couverts par les transformations standard. Optimisation des performances : M est optimisé pour les performances, permettant un traitement efficace des grands ensembles de données. Le moteur Power Query évalue et optimise les expressions M pour minimiser les charges et les transformations, assurant ainsi un traitement rapide et efficient.
La technique de streaming sémantique optimise les performances en évaluant chaque ligne de table ou élément de liste pour toutes les transformations de données en une seule fois, plutôt que d'itérer pour chaque transformation. Cela permet de transformer des ensembles de données qui ne tiennent pas en mémoire.
Le pliage de requête optimise les performances en traduisant les transformations de données M en instructions équivalentes dans les systèmes sources, comme SQL Server. Cela déplace le traitement vers les systèmes sources, améliorant l'efficacité en réduisant le transfert et le traitement des données par Power Query.