Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les fonctions définies par l’utilisateur (DAX) DAX (Data Analysis Expressions) vous permettent de empaqueter une logique DAX réutilisable et paramétrée dans vos modèles, ce qui facilite l’écriture, la maintenance et le partage de votre code DAX. Au lieu de répéter des formules pour des mesures, des colonnes calculées et des visuels, les UDF (fonctions définies par l’utilisateur) apportent une flexibilité de style de programmation à vos modèles sémantiques. Cela vous permet de définir une fois des fonctions et de les utiliser partout où le langage DAX est pris en charge.
Les fonctions DAX définies par l’utilisateur sont en disponibilité générale dans Power BI Desktop et le Service Power BI à compter de la version de juin 2026. Pour en savoir plus, consultez les fonctions définies par l’utilisateur DAX.
Pourquoi utiliser des fonctions définies par l’utilisateur ?
- Réutilisabilité et cohérence : définissez un calcul une fois et réutilisez-le partout.
- Facilité de maintenance : Mettez à jour la logique à un emplacement unique pour corriger ou faire évoluer les règles.
- Création plus sûre : les indicateurs de type facultatifs et les helpers de vérification de type prennent en charge le code prévisible et résistant aux erreurs.
- Objets de modèle de première classe : les UDFs (fonctions définies par l’utilisateur) vivent dans le modèle et peuvent être consultées dans l'explorateur de modèles.
Définir une fonction
Vous pouvez définir une fonction définie par l’utilisateur dans Power BI Desktop à l’aide de la vue de requête DAX (DQV), de la vue TMDL ou de la vue Model. Vous pouvez également afficher et modifier des fonctions définies par l’utilisateur dans le navigateur grâce à la modélisation web de Power BI Service.
Syntaxe générale
La syntaxe générale d’une fonction UDF est la suivante :
/// Optional description above the function
/// @param {ParameterType} ParameterName - ParameterDescription
/// ...
/// @returns Return description
FUNCTION <FunctionName> = ( [<ParameterName> [: [<ParameterType>] [<ParameterSubtype>] [<ParameterPassingMode>]] [= <DefaultExpression>], ...] ) => <FunctionBody>
Exemple : Fonction fiscale simple
Voici un exemple simple dans DQV qui ajoute une taxe au montant donné. Vous pouvez également évaluer les fonctions définies par l'utilisateur (UDF) dans DQV.
DEFINE
/// AddTax takes in amount and returns amount including tax
FUNCTION AddTax = (
amount : NUMERIC
) =>
amount * 1.1
EVALUATE
{ AddTax ( 10 ) }
// Returns 11
Une fois qu’une fonction UDF est définie, vous pouvez mettre à jour le modèle ou utiliser l’objectif de code pour ajouter la fonction à votre modèle.
Le même exemple peut être créé en mode TMDL.
createOrReplace
/// AddTax takes in amount and returns amount including tax
function AddTax = (amount : NUMERIC) => amount * 1.1
Une fois qu’une fonction UDF est définie, vous pouvez appliquer des modifications pour ajouter la fonction à votre modèle.
Gérer les fonctions définies par l’utilisateur
Une fois défini et ajouté au modèle, vous pouvez afficher et gérer toutes les fonctions définies par l’utilisateur à partir de l’Explorateur de modèles sous le nœud Functions .
En mode requête DAX (DQV), vous pouvez utiliser des requêtes rapides via l’Explorateur de modèles pour définir et évaluer facilement des fonctions.
Dans la vue TMDL, vous pouvez glisser-déposer des fonctions sur la zone de dessin ou utiliser Script TMDL via l’Explorateur de modèle.
Si vous utilisez un Power BI Project, les fonctions sont également stockées dans functions.tmdl dans le dossier definition.
Utiliser des fonctions définies par l’utilisateur
Après avoir ajouté une fonction UDF au modèle, vous pouvez l’utiliser partout où DAX est pris en charge. Ici, nous utilisons AddTax comme exemple.
Utilisez les fonctions définies par l’utilisateur (UDF) avec le contexte de filtre complet avec mesures.
Total Sales with Tax = AddTax ( [Total Sales] )
Appliquez des UDF à chaque ligne d’une table à l’aide de colonnes calculées.
Sales Amount with Tax = CONVERT ( AddTax ( 'Sales'[Sales Amount] ), CURRENCY )
Utilisez des fonctions définies par l’utilisateur directement dans des visuels avec des calculs visuels.
Sales Amount with Tax = AddTax ( [Sales Amount] )
Imbriquez des UDF dans des scénarios avancés.
DEFINE
/// AddTax takes in amount and returns amount including tax
FUNCTION AddTax = (
amount : NUMERIC
) =>
amount * 1.1
FUNCTION AddTaxAndDiscount = (
amount : NUMERIC,
discount : NUMERIC
) =>
AddTax ( amount - discount )
EVALUATE
{ AddTaxAndDiscount ( 10, 2 ) }
// Returns 8.8
Paramètres
Les fonctions définies par l’utilisateur DAX prennent en charge zéro ou plusieurs paramètres. Pour rendre vos fonctions plus sûres et plus prévisibles, vous pouvez éventuellement spécifier des indicateurs de type de paramètre :
-
Type : quel type de valeur le paramètre accepte (
AnyVal,Scalar,TableAnyRef,CalendarRef,ColumnRef, , ,MeasureRefouTableRef). -
Sous-type (uniquement pour le type scalaire) : type de données scalaire spécifique (
Variant, ,Int64,DecimalDouble,String,DateTimeBooleanouNumeric). -
ParameterMode : lorsque l’argument est évalué (
valpour une évaluation stricte ouexprpour une évaluation paresseuse).
Les indicateurs de type suivent le formulaire : [type] [subtype] [parameterMode]
Exemple : Conversion de type
DEFINE
/// returns x cast to an Int64
FUNCTION CastToInt = (
x : SCALAR INT64 VAL
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
Cet exemple utilise un type Scalar, un sous-type Int64 et un mode de paramètre val. Vous pouvez également obtenir le même effet en incluant simplement le Int64 sous-type comme indiqué dans l’exemple ci-dessous. Les chaînes non numériques entraînent une erreur.
DEFINE
/// returns x as an Int64
FUNCTION CastToInt = (
x : INT64
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
Vérification de type
Validez les types de paramètres à l’intérieur de votre fonction à l’aide de fonctions de vérification de type DAX intégrées telles que :
Pour obtenir la liste complète des fonctions de vérification de type disponibles, consultez les fonctions définies par l’utilisateur DAX.
Contenu connexe
Pour plus d’informations sur l’utilisation de fonctions définies par l’utilisateur, consultez les ressources suivantes :