Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met door de gebruiker gedefinieerde DAX-functies (Data Analysis Expressions) kunt u herbruikbare, geparameteriseerde DAX-logica verpakken in uw modellen, zodat uw DAX-code eenvoudiger kan worden geschreven, onderhouden en delen. In plaats van formules te herhalen tussen metingen, berekende kolommen en visuals, bieden UDF's flexibiliteit in programmeerstijl aan uw semantische modellen, zodat u functies eenmaal kunt definiëren en overal kunt gebruiken waar DAX wordt ondersteund.
DAX UDF's zijn algemeen beschikbaar in Power BI Desktop en de Power BI-service vanaf de release van juni 2026. Zie door de gebruiker gedefinieerde DAX-functies voor meer informatie.
Waarom door de gebruiker gedefinieerde functies gebruiken?
- Herbruikbaarheid en consistentie: Definieer één keer een berekening en gebruik deze overal opnieuw.
- Onderhoudbaarheid: Werk logica op één plaats bij om de regels te herstellen of verder te ontwikkelen.
- Veiliger ontwerpen: optionele typehints en typecontrolehelpers ondersteunen voorspelbare, foutbestendige code.
- Eersteklas modelobjecten: UDF's leven in het model en kunnen worden weergegeven in Model explorer.
Een functie definiëren
U kunt een door de gebruiker gedefinieerde functie definiëren in Power BI Desktop met behulp van de DAX-queryweergave (DQV), de TMDL-weergave of de modelweergave. U kunt UDF's ook in de browser bekijken en bewerken via Power BI Service-webmodellering.
Algemene syntaxis
De algemene syntaxis voor een UDF is:
/// Optional description above the function
/// @param {ParameterType} ParameterName - ParameterDescription
/// ...
/// @returns Return description
FUNCTION <FunctionName> = ( [<ParameterName> [: [<ParameterType>] [<ParameterSubtype>] [<ParameterPassingMode>]] [= <DefaultExpression>], ...] ) => <FunctionBody>
Voorbeeld: Eenvoudige belastingfunctie
Hier volgt een eenvoudig voorbeeld in DQV waarmee belasting wordt toegevoegd aan het opgegeven bedrag. U kunt ook User Defined Functions (UDF's) evalueren in Data Quality Visualizer (DQV).
DEFINE
/// AddTax takes in amount and returns amount including tax
FUNCTION AddTax = (
amount : NUMERIC
) =>
amount * 1.1
EVALUATE
{ AddTax ( 10 ) }
// Returns 11
Nadat een UDF is gedefinieerd, kunt u het model bijwerken of de codelens gebruiken om de functie toe te voegen aan uw model.
Hetzelfde voorbeeld kan worden gemaakt in de TMDL-weergave.
createOrReplace
/// AddTax takes in amount and returns amount including tax
function AddTax = (amount : NUMERIC) => amount * 1.1
Nadat een UDF is gedefinieerd, kunt u wijzigingen toepassen om de functie toe te voegen aan uw model.
Door de gebruiker gedefinieerde functies beheren
Zodra dit is gedefinieerd en toegevoegd aan het model, kunt u alle door de gebruiker gedefinieerde functies bekijken en beheren vanuit Model explorer onder het knooppunt Functions .
In de DAX-queryweergave (DQV) kunt u snelle query's gebruiken via Modelverkenner om eenvoudig functies te definiëren en te evalueren.
In de TMDL-weergave kunt u functies naar het canvas slepen en neerzetten of script TMDL gebruiken via Modelverkenner.
Als u een Power BI Project gebruikt, worden functies ook opgeslagen in functions.tmdl in de map definition.
Door de gebruiker gedefinieerde functies gebruiken
Nadat u een UDF aan het model hebt toegevoegd, kunt u deze overal gebruiken waar DAX wordt ondersteund. Hier gebruiken AddTax we als voorbeeld.
UDF's gebruiken met volledige filtercontext met metingen.
Total Sales with Tax = AddTax ( [Total Sales] )
UDF’s toepassen op elke rij in een tabel met berekende kolommen.
Sales Amount with Tax = CONVERT ( AddTax ( 'Sales'[Sales Amount] ), CURRENCY )
UDF's rechtstreeks in visuals gebruiken met visuele berekeningen.
Sales Amount with Tax = AddTax ( [Sales Amount] )
Nest UDFs voor geavanceerde scenario’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
Parameters
DAX UDF's ondersteunen nul of meer parameters. Als u uw functies veiliger en voorspelbaarder wilt maken, kunt u desgewenst hints voor parametertypen opgeven:
-
Type: welk type waarde de parameter accepteert (
AnyVal,Scalar,Table,AnyRef,CalendarRef,ColumnRef, , ,MeasureRefofTableRef). -
Subtype (alleen voor scalaire typen): het specifieke scalaire gegevenstype (
Variant,Int64,DecimalDouble, ,String, ,DateTime, ofBooleanNumeric). -
ParameterMode: wanneer het argument wordt geëvalueerd (
valvoor gretig ofexprvoor luie).
Type hints volgen de vorm: [type] [subtype] [parameterMode]
Voorbeeld: Typecasting
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
In dit voorbeeld wordt een Scalar type, Int64 subtype en val parameterMode gebruikt. U kunt ook hetzelfde effect bereiken door alleen het Int64 subtype op te halen, zoals te zien is in het onderstaande voorbeeld. Niet-numerieke tekenreeksen resulteren in een fout.
DEFINE
/// returns x as an Int64
FUNCTION CastToInt = (
x : INT64
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
Typecontrole
Valideer parametertypen in uw functie met behulp van ingebouwde DAX-functies voor typecontrole, zoals:
Zie DAX door de gebruiker gedefinieerde functies voor een volledige lijst met beschikbare functies voor typecontrole.
Verwante inhoud
Zie de volgende bronnen voor meer informatie over het gebruik van door de gebruiker gedefinieerde functies: