Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
DAX-brugerdefinerede funktioner (UDF'er (Data Analysis Expressions) giver dig mulighed for at pakke genanvendelig, parametriseret DAX-logik i dine modeller, hvilket gør din DAX-kode nemmere at skrive, vedligeholde og dele. I stedet for at gentage formler på tværs af målinger, beregnede kolonner og visualiseringer giver UDF'er dine semantiske modeller fleksibilitet i programmeringsstil, så du kan definere funktioner én gang og bruge dem overalt, hvor DAX understøttes.
DAX UDF'er er generelt tilgængelige i Power BI Desktop og Power BI Service fra og med juni 2026-udgivelsen. Du kan få mere at vide under DAX-brugerdefinerede funktioner.
Hvorfor bruge brugerdefinerede funktioner?
- Genbrug og konsistens: Definer en beregning én gang, og genbrug den overalt.
- Vedligeholdelse: Opdater logik ét sted for at rette eller udvikle regler.
- Sikrere oprettelse: Valgfrie typetip og hjælpere til typekontrol understøtter forudsigelig, fejlbestandig kode.
- Førsteklasses modelobjekter: UDF'er findes i modellen og kan ses i Model Explorer.
Definere en funktion
Du kan definere en brugerdefineret funktion i Power BI Desktop ved hjælp af DAX-forespørgselsvisning (DQV) eller TMDL-visning.
Generel syntaks
Den generelle syntaks for en UDF er:
/// Optional description above the function
/// @param {ParameterType} ParameterName - ParameterDescription
/// ...
/// @returns Return description
FUNCTION <FunctionName> = ( [<ParameterName> [: [<ParameterType>] [<ParameterSubtype>] [<ParameterPassingMode>]] [= <DefaultExpression>], ...] ) => <FunctionBody>
Eksempel: Simpel momsfunktion
Her er et simpelt eksempel i DQV , der tilføjer skat til det givne beløb. Du kan også evaluere UDF'er i DQV.
DEFINE
/// AddTax takes in amount and returns amount including tax
FUNCTION AddTax = (
amount : NUMERIC
) =>
amount * 1.1
EVALUATE
{ AddTax ( 10 ) }
// Returns 11
Når en UDF er defineret, kan du opdatere modellen eller bruge kodelinsen til at tilføje funktionen til din model.
Det samme eksempel kan oprettes i TMDL-visningen.
createOrReplace
/// AddTax takes in amount and returns amount including tax
function AddTax = (amount : NUMERIC) => amount * 1.1
Efter en UDF er defineret, kan du anvende ændringer for at tilføje funktionen til din model.
Administrer brugerdefinerede funktioner
Når den er defineret og tilføjet til modellen, kan du se og administrere alle brugerdefinerede funktioner fra Model Explorer under Functions-noden .
I DAX query view (DQV) kan du bruge Quick Queries gennem Model Explorer til nemt at definere og evaluere funktioner.
I TMDL-visning kan du trække og slippe funktioner ind i lærredet eller bruge Script TMDL til at bruge Model Explorer via Model-stifinderen.
Hvis man bruger en Power BI Project, gemmes funktionerne også i functions.tmdl i mappen definition.
Brug brugerdefinerede funktioner
Efter at have tilføjet en UDF til modellen, kan du bruge den hvor som helst, DAX understøttes. Her bruger AddTax vi som eksempel.
Brug UDF'er med fuld filterkontekst og målinger.
Total Sales with Tax = AddTax ( [Total Sales] )
Anvend UDF'er på hver række i en tabel med beregnede kolonner.
Sales Amount with Tax = CONVERT ( AddTax ( 'Sales'[Sales Amount] ), CURRENCY )
Brug UDF'er direkte i visuelle analyser med visuelle beregninger.
Sales Amount with Tax = AddTax ( [Sales Amount] )
Nest UDF'er til avancerede scenarier.
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
Parametre
DAX UDF'er understøtter nul eller flere parametre. For at gøre dine funktioner sikrere og mere forudsigelige kan du valgfrit specificere parametertype-hints:
-
Type: hvilken type værdi parameteren accepterer (
AnyVal,Scalar, ,Table,AnyRef,CalendarRef,ColumnRef, ,MeasureRef, ellerTableRef). -
Undertype (kun for skalartype): den specifikke skalardatatype (
Variant,Int64,Decimal,Double,StringDateTimeBoolean, eller ).Numeric -
ParameterMode: når argumentet evalueres (
valfor ivrig ellerexprfor doven).
Typetips følger formen: [type] [subtype] [parameterMode]
Eksempel: Type støbning
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
Dette eksempel bruger en Scalar type, Int64 subtype og val parameterMode. Du kan også opnå samme effekt ved blot at inkludere undertypen, Int64 som ses i eksemplet nedenfor. Ikke-numeriske strenge resulterer i en fejl.
DEFINE
/// returns x as an Int64
FUNCTION CastToInt = (
x : INT64
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
Kontrol af type
Validér parametertyper inde i din funktion ved hjælp af indbyggede DAX-typekontrolfunktioner såsom:
For en komplet liste over tilgængelige typekontrolfunktioner, se DAX brugerdefinerede funktioner.
Relateret indhold
For mere information om brug af brugerdefinerede funktioner, se følgende ressourcer: