Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Med DAX-brukerdefinerte funksjoner (UDF-er) med Data Analysis Expressions kan du pakke gjenbrukbar, parametrisert DAX-logikk i modellene dine, noe som gjør DAX-koden enklere å skrive, vedlikeholde og dele. I stedet for å gjenta formler på tvers av mål, beregnede kolonner og visualobjekter, gir UDF-er fleksibilitet i programmeringsstil til de semantiske modellene dine, slik at du kan definere funksjoner én gang og bruke dem overalt der DAX støttes.
DAX UDF-er er generelt tilgjengelige i Power BI Desktop og Power BI Service fra og med juni 2026-utgivelsen. Hvis du vil ha mer informasjon, kan du se DAX brukerdefinerte funksjoner.
Hvorfor bruke brukerdefinerte funksjoner?
- Gjenbrukbarhet og konsistens: Definer en beregning én gang, og bruk den på nytt overalt.
- Vedlikehold: Oppdater logikk på ett sted for å fikse eller utvikle regler.
- Sikrere redigering: Valgfrie typetips og typekontrollhjelpere støtter forutsigbar, feilbestandig kode.
- Førsteklasses modellobjekter: UDF-er finnes i modellen og kan vises i Model Explorer.
Definere en funksjon
Du kan definere en brukerdefinert funksjon i Power BI Desktop ved hjelp av DAX-spørringsvisning (DQV), TMDL-visning eller modellvisning. Du kan også vise og redigere UDF-er i nettleseren gjennom nettmodellering for Power BI-tjenesten.
Generell syntaks
Den generelle syntaksen 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: Enkel avgiftsfunksjon
Her er et enkelt eksempel i DQV som legger skatt på det gitte beløpet. 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 definert, kan du oppdatere modellen eller bruke kodelinsen til å legge til funksjonen i modellen.
Det samme eksempelet kan opprettes i TMDL-visning.
createOrReplace
/// AddTax takes in amount and returns amount including tax
function AddTax = (amount : NUMERIC) => amount * 1.1
Etter at en UDF er definert, kan du gjøre endringer for å legge funksjonen til modellen din.
Administrer brukerdefinerte funksjoner
Når den er definert og lagt til i modellen, kan du se og administrere alle brukerdefinerte funksjoner fra Modellutforskeren under Funksjoner-noden .
I DAX query view (DQV) kan du bruke Quick Queries gjennom Model Explorer for enkelt å definere og evaluere funksjoner.
I TMDL-visning kan du dra og slippe funksjoner inn på lerretet eller bruke Script TMDL gjennom Modellutforskeren.
Hvis man bruker en Power BI Project, lagres funksjonene også i functions.tmdl i mappen definition.
Bruk brukerdefinerte funksjoner
Etter å ha lagt til en UDF i modellen, kan du bruke den hvor som helst DAX støttes. Her bruker AddTax vi som eksempel.
Bruk UDF-er med full filterkontekst med målinger.
Total Sales with Tax = AddTax ( [Total Sales] )
Bruk UDF-er på hver rad i en tabell med beregnede kolonner.
Sales Amount with Tax = CONVERT ( AddTax ( 'Sales'[Sales Amount] ), CURRENCY )
Bruk UDF-er direkte i visuelle bilder med visuelle beregninger.
Sales Amount with Tax = AddTax ( [Sales Amount] )
Neste UDF-er for avanserte scenarioer.
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 støtter null eller flere parametere. For å gjøre funksjonene dine tryggere og mer forutsigbare kan du valgfritt spesifisere parametertype-hint:
-
Type: hvilken type verdi parameteren aksepterer (
AnyVal,Scalar, ,TableAnyRef, ,CalendarRef,ColumnRef,MeasureRef, , ellerTableRef). -
Undertype (bare for skalartype): den spesifikke skalardatatypen (
Variant,Int64,Decimal,DoubleStringDateTimeBoolean, eller ).Numeric -
ParameterMode: når argumentet evalueres (
valfor ivrig ellerexprfor lat).
Typetips følger skjemaet: [type] [subtype] [parameterMode]
Eksempel: Type casting
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 eksempelet bruker en Scalar type, Int64 subtype og val parameterMode. Du kan også oppnå samme effekt ved bare å inkludere Int64 undertypen som vist i eksempelet nedenfor. Ikke-numeriske strenger gir en feil.
DEFINE
/// returns x as an Int64
FUNCTION CastToInt = (
x : INT64
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
Typekontroll
Valider parametertyper inne i funksjonen din ved hjelp av innebygde DAX-typekontrollfunksjoner som:
For en komplett liste over tilgjengelige typekontrollfunksjoner, se DAX brukerdefinerte funksjoner.
Relatert innhold
For mer informasjon om bruk av brukerdefinerte funksjoner, se følgende ressurser: