Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med dax-användardefinierade funktioner (UDF) kan du paketera återanvändbar, parametriserad DAX-logik i dina modeller, vilket gör DAX-koden enklare att skriva, underhålla och dela. I stället för att upprepa formler mellan mått, beräknade kolumner och visuella objekt ger UDF:er flexibilitet i programmeringsstil till dina semantiska modeller, så att du kan definiera funktioner en gång och använda dem överallt där DAX stöds.
DAX-UDF:er är allmänt tillgängliga i Power BI Desktop och Power BI-tjänsten från och med juni 2026-versionen. Mer information finns i DAX-användardefinierade funktioner.
Varför ska du använda användardefinierade funktioner?
- Återanvändbarhet och konsekvens: Definiera en beräkning en gång och återanvänd den överallt.
- Underhåll: Uppdatera logiken på ett ställe för att åtgärda eller utveckla regler.
- Säkrare redigering: Valfria typtips och typkontrollhjälpare stöder förutsägbar, felbeständig kod.
- Förstklassiga modellobjekt: UDF:er finns i modellen och kan visas i Modellutforskaren.
Definiera en funktion
Du kan definiera en användardefinierad funktion i Power BI Desktop med hjälp av DAX-frågevyn (DQV), TMDL-vyn eller modellvyn. Du kan också visa och redigera UDF:er i webbläsaren via Power BI Service-webbmodellering.
Allmän syntax
Den allmänna syntaxen för en UDF är:
/// Optional description above the function
/// @param {ParameterType} ParameterName - ParameterDescription
/// ...
/// @returns Return description
FUNCTION <FunctionName> = ( [<ParameterName> [: [<ParameterType>] [<ParameterSubtype>] [<ParameterPassingMode>]] [= <DefaultExpression>], ...] ) => <FunctionBody>
Exempel: Enkel skattefunktion
Här är ett enkelt exempel i DQV som lägger till skatt på det angivna beloppet. Du kan också utvärdera 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 har definierats kan du uppdatera modellen eller använda kodlinsen för att lägga till funktionen i din modell.
Samma exempel kan skapas i TMDL-vyn.
createOrReplace
/// AddTax takes in amount and returns amount including tax
function AddTax = (amount : NUMERIC) => amount * 1.1
När en UDF har definierats kan du tillämpa ändringar för att lägga till funktionen i din modell.
Hantera användardefinierade funktioner
När du har definierat och lagt till modellen kan du visa och hantera alla användardefinierade funktioner från Modellutforskaren under noden Functions .
I DAX-frågevyn (DQV) kan du använda Snabbfrågor via Modellutforskaren för att enkelt definiera och utvärdera funktioner.
I TMDL-vyn kan du dra och släppa funktioner till arbetsytan eller använda TMDL för skript till via Modellutforskaren.
Om du använder en Power BI Project lagras även funktioner i mappen functions.tmdl i mappen definition.
Använda användardefinierade funktioner
När du har lagt till en UDF i modellen kan du använda den överallt där DAX stöds. Här använder AddTax vi som exempel.
Använd UDF:er med fullständig filterkontext med mått.
Total Sales with Tax = AddTax ( [Total Sales] )
Använd UDF:er på varje rad i en tabell med beräknade kolumner.
Sales Amount with Tax = CONVERT ( AddTax ( 'Sales'[Sales Amount] ), CURRENCY )
Använd UDF:er direkt i visualer med visuella beräkningar.
Sales Amount with Tax = AddTax ( [Sales Amount] )
Nästla UDF:er för avancerade 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
Parameters
DAX-UDF:er stöder noll eller fler parametrar. Om du vill göra dina funktioner säkrare och mer förutsägbara kan du ange tips för parametertyp:
-
Typ: vilken typ av värde parametern accepterar (
AnyVal, ,ScalarTable,AnyRef,CalendarRef,ColumnRef,MeasureRefellerTableRef). -
Undertyp (endast för skalär typ): den specifika skalära datatypen (
Variant, ,Int64Decimal,Double,String,DateTime,BooleanellerNumeric). -
ParameterMode: när argumentet utvärderas (
valför ivrig ellerexprför lat).
Typanvisningar har formen: [type] [subtype] [parameterMode]
Exempel: Typgjutning
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
I det här exemplet används en Scalar typ, Int64 undertyp och val parameterMode. Du kan också uppnå samma effekt genom att bara inkludera Int64 undertypen som du ser i exemplet nedan. Icke-numeriska strängar resulterar i ett fel.
DEFINE
/// returns x as an Int64
FUNCTION CastToInt = (
x : INT64
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
Typkontroll
Verifiera parametertyper i funktionen med hjälp av inbyggda DAX-typkontrollfunktioner, till exempel:
En fullständig lista över tillgängliga funktioner för typkontroll finns i DAX-användardefinierade funktioner.
Relaterat innehåll
Mer information om hur du använder användardefinierade funktioner finns i följande resurser: