Expressions, valeurs et expression let
Une requête de langage de formule M Power Query est composée d’étapes d’expression de formule qui créent une requête hybride. Une expression de formule peut être évaluée (calculée) et produire une valeur. L’expression let encapsule un ensemble de valeurs à calculer, auxquelles des noms sont affectés, puis qui sont utilisées dans une expression ultérieure qui suit l’instruction in. Par exemple, une expression let peut contenir une variable Source qui est égale à la valeur de Text.Proper et génère une valeur de texte dans le cas approprié.
Expression let
let
Source = Text.Proper("hello world")
in
Source
Dans l’exemple ci-dessus, Text.Proper("hello world")
est évalué en "Hello World"
.
Les sections suivantes décrivent les types des valeurs dans le langage.
Valeur primitive
Une valeur primitive est une valeur en une seule partie, comme un nombre, une valeur logique, du texte ou une valeur Null. Une valeur Null peut être utilisée pour indiquer l’absence de données.
Type | Valeur d'exemple |
---|---|
Binary | 00 00 00 02 // nombre de points (2) |
Date | 5/23/2015 |
DateTime | 5/23/2015 12:00:00 AM |
DateTimeZone | 5/23/2015 12:00:00 AM -08:00 |
Duration | 15:35:00 |
Logical | true et false |
Null | null |
Nombre | 0, 1, -1, 1,5 et 2,3e-5 |
Texte | "abc" |
Temps | 12:34:12 PM |
Valeur de fonction
Une fonction est une valeur qui, quand elle est appelée avec des arguments, génère une nouvelle valeur. Les fonctions sont écrites en listant les paramètres de la fonction dans des parenthèses, suivis du symbole de destination =>, suivi de l’expression définissant la fonction. Par exemple, pour créer une fonction appelée MyFunction qui a deux paramètres et effectue un calcul sur parameter1 et parameter2 :
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
L’appel de MyFunction retourne le résultat :
let
Source = MyFunction(2, 4)
in
Source
Ce code produit la valeur 3.
Valeurs de données structurées
Le langage M prend en charge les valeurs de données structurées suivantes :
Notes
Les données structurées peuvent contenir n’importe quelle valeur M. Pour voir quelques exemples, accédez à Exemples supplémentaires de données structurées.
Liste
Une liste est une séquence ordonnée de base zéro de valeurs entre accolades { }. Les caractères d’accolade { } sont également utilisés pour récupérer un élément d’une liste par position d’index. Pour plus d’informations, accédez à Lister les valeurs.
Notes
Power Query M prend en charge une taille de liste infinie, mais si une liste est écrite en tant que littéral, la liste a une longueur fixe. Par exemple, {1, 2, 3} a une longueur fixe de 3.
Voici quelques exemples de liste.
Valeur | Type |
---|---|
{123, true, "A"} | Liste contenant un nombre, une valeur logique et une valeur texte. |
{1, 2, 3} | Liste de nombres |
{ {1, 2, 3}, {4, 5, 6} } |
Liste de listes de nombres |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Liste d’enregistrements |
{123, true, "A"}{0} | Obtient la valeur du premier élément d’une liste. Cette expression retourne la valeur 123. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
Obtient la valeur du deuxième élément à partir du premier élément de la liste. Cette expression retourne la valeur 2. |
Enregistrement
Un enregistrement est un ensemble de champs. Un champ est une paire nom/valeur, où le nom est une valeur texte qui est unique dans l’enregistrement du champ. La syntaxe des valeurs d’enregistrement permet d’écrire des noms sans guillemets, une forme également appelée identificateurs. Un identificateur peut prendre les deux formes suivantes :
nom_identificateur, comme OrderID.
#"nom identificateur", par exemple #"Les données du jour sont : ".
Voici un enregistrement contenant des champs nommés « OrderID », « CustomerID », « Item » et « Price », avec les valeurs 1, 1, « Fishing rod » et 100.00. Les crochets [ ] indiquent le début et la fin d’une expression d’enregistrement, et ils sont utilisés pour obtenir la valeur d’un champ dans un enregistrement. Les exemples suivants montrent un enregistrement et comment obtenir la valeur du champ Item.
Voici un exemple d’enregistrement :
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
Pour obtenir la valeur d’un élément Item, vous utilisez des crochets comme dans Source[Item]
:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Table
Une table est un ensemble de valeurs organisées en colonnes nommées et en lignes. Le type de colonne peut être implicite ou explicite. Vous pouvez utiliser #table pour créer une liste de noms de colonnes et une liste de lignes. Une table de valeurs est une liste dans une liste. Les accolades { } sont également utilisées pour récupérer une ligne d’une table par position d’index (accédez à Exemple 3 : Obtenir une ligne d’une table par position d’index).
Exemple 1 : Créer une table avec des types de colonnes implicites
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
Exemple 2 : Créer une table avec des types de colonnes explicites
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source
Les deux exemples précédents créent une table de la forme suivante :
OrderID | CustomerID | Élément | Prix |
---|---|---|---|
1 | 1 | Fishing rod | 100,00 |
2 | 1 | 1 lb. worms | 5,00 |
Exemple 3 : Obtenir une ligne d’une table par position d’index
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source{1}
Cette expression retourne l’enregistrement suivant :
Champ | Valeur |
---|---|
OrderID | 2 |
CustomerID | 1 |
Item | 1 lb. worms |
Price | 5 |
Exemples supplémentaires de données structurées
Les données structurées peuvent contenir n’importe quelle valeur M. Voici quelques exemples :
Exemple 1 : Liste avec des valeurs [Primitive](#_Primitive_value_1), [Function](#_Function_value) et [Record](#_Record_value)
let
Source =
{
1,
"Bob",
DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
Source
L’évaluation de cette expression peut être visualisée comme suit :
Exemple 2 : Enregistrement contenant des valeurs primitives et des enregistrements imbriqués
let
Source = [CustomerID = 1, Name = "Bob", Phone = "123-4567", Orders =
{
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0]
}]
in
Source
L’évaluation de cette expression peut être visualisée comme suit :
Notes
Bien que de nombreuses valeurs puissent être écrites littéralement sous la forme d’une expression, une valeur n’est pas une expression. Par exemple, l’expression 1 s’évalue à la valeur 1 ; l’expression 1+1 s’évalue à la valeur 2. Cette distinction est subtile mais importante. Les expressions sont des recettes pour l’évaluation ; les valeurs sont les résultats de l’évaluation.
Expression if
L’expression if sélectionne entre deux expressions en fonction d’une condition logique. Par exemple :
if 2 > 1 then
2 + 2
else
1 + 1
La première expression (2 + 2) est sélectionnée si l’expression logique (2 > 1) a la valeur true, et la deuxième expression (1 + 1) est sélectionnée si sa valeur est false. L’expression sélectionnée (dans ce cas 2 + 2) est évaluée et devient le résultat de l’expression if (4).