Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit benutzerdefinierten Funktionen (Data Analysis Expressions, DAX, UDFs) können Sie wiederverwendbare, parametrisierte DAX-Logik in Ihre Modelle einbinden, wodurch der DAX-Code einfacher zu schreiben, zu verwalten und zu teilen ist. Anstatt Formeln über Measures, berechnete Spalten und visuelle Elemente hinweg zu wiederholen, bieten UDFs Programmierstilflexibilität für Ihre semantischen Modelle, sodass Sie Funktionen einmal definieren und überall dort verwenden können, wo DAX unterstützt wird.
DAX UDFs sind in Power BI Desktop und dem Power BI-Dienst ab Juni 2026 allgemein verfügbar. Weitere Informationen finden Sie unter BENUTZERDEFINIERTE DAX-Funktionen.
Warum benutzerdefinierte Funktionen verwenden?
- Wiederverwendbarkeit und Konsistenz: Definieren Sie eine Berechnung einmal, und verwenden Sie sie überall wieder.
- Verwendbarkeit: Aktualisieren Sie die Logik an einer zentralen Stelle, um Regeln zu beheben oder zu entwickeln.
- Sicherere Erstellung: Optionale Typenhinweise und Typüberprüfungshilfsprogramme unterstützen vorhersehbaren, fehlersicheren Code.
- Modellobjekte der ersten Klasse: UDFs leben im Modell und können im Modell-Explorer angezeigt werden.
Definieren einer Funktion
Sie können eine benutzerdefinierte Funktion in Power BI Desktop mithilfe der DAX-Abfrageansicht (DQV) oder der TMDL-Ansicht definieren.
Allgemeine Syntax
Die allgemeine Syntax für eine UDF lautet:
/// Optional description above the function
/// @param {ParameterType} ParameterName - ParameterDescription
/// ...
/// @returns Return description
FUNCTION <FunctionName> = ( [<ParameterName> [: [<ParameterType>] [<ParameterSubtype>] [<ParameterPassingMode>]] [= <DefaultExpression>], ...] ) => <FunctionBody>
Beispiel: Einfache Steuerfunktion
Hier ist ein einfaches Beispiel in DQV , das Steuern auf den angegebenen Betrag hinzufügt. Sie können UDFs auch in DQV evaluieren.
DEFINE
/// AddTax takes in amount and returns amount including tax
FUNCTION AddTax = (
amount : NUMERIC
) =>
amount * 1.1
EVALUATE
{ AddTax ( 10 ) }
// Returns 11
Nachdem eine UDF definiert wurde, können Sie das Modell aktualisieren oder das Codeobjektiv verwenden, um die Funktion ihrem Modell hinzuzufügen.
Dasselbe Beispiel kann in der TMDL-Ansicht erstellt werden.
createOrReplace
/// AddTax takes in amount and returns amount including tax
function AddTax = (amount : NUMERIC) => amount * 1.1
Nachdem eine UDF definiert wurde, können Sie Änderungen anwenden, um die Funktion ihrem Modell hinzuzufügen.
Verwalten benutzerdefinierter Funktionen
Nachdem Sie das Modell definiert und dem Modell hinzugefügt haben, können Sie alle benutzerdefinierten Funktionen im Modell-Explorer unter dem Knoten "Funktionen " anzeigen und verwalten.
In der DAX-Abfrageansicht (DQV) können Sie Schnellabfragen über den Modell-Explorer verwenden, um Funktionen einfach zu definieren und auszuwerten.
In der TMDL-Ansicht können Sie Funktionen in die Canvas ziehen und ablegen oder Script TMDL über den Modell-Explorer verwenden.
Bei Verwendung eines Power BI Project werden Funktionen auch in functions.tmdl im Ordner definition gespeichert.
Verwenden von benutzerdefinierten Funktionen
Nachdem Sie dem Modell eine UDF hinzugefügt haben, können Sie sie überall verwenden, wo DAX unterstützt wird. Hier wird als Beispiel verwendet AddTax .
Verwenden Sie UDFs im vollständigen Filterkontext mit Maßen.
Total Sales with Tax = AddTax ( [Total Sales] )
Wenden Sie UDFs auf jede Zeile in einer Tabelle mit berechneten Spalten an.
Sales Amount with Tax = CONVERT ( AddTax ( 'Sales'[Sales Amount] ), CURRENCY )
Verwenden Sie UDFs direkt in Visuals in Kombination mit visuellen Berechnungen.
Sales Amount with Tax = AddTax ( [Sales Amount] )
Verschachteln von UDFs für erweiterte Szenarien.
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
Parameter
DAX UDFs unterstützen null oder mehr Parameter. Um Ihre Funktionen sicherer und vorhersehbarer zu machen, können Sie optional Parametertyphinweise angeben:
-
Typ: welche Art von Wert der Parameter akzeptiert (
AnyVal,Scalar, ,Table,AnyRef,CalendarRef,ColumnRef, , oderMeasureRefTableRef). -
Untertyp (nur für Skalartyp): der spezifische skalare Datentyp (
Variant,Int64, ,Decimal,Double,String,DateTime,BooleanoderNumeric). -
ParameterMode: wann das Argument ausgewertet wird (
valfür eager oderexprfür lazy).
Typhinweise haben die Form: [type] [subtype] [parameterMode]
Beispiel: Typumwandlung
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 diesem Beispiel wird ein Scalar Typ, Int64 Untertyp und val ParameterMode verwendet. Sie können auch denselben Effekt erzielen, indem Sie einfach den Int64 Untertyp einschließen, wie im folgenden Beispiel gezeigt. Nicht numerische Zeichenfolgen führen zu einem Fehler.
DEFINE
/// returns x as an Int64
FUNCTION CastToInt = (
x : INT64
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
Typüberprüfung
Überprüfen von Parametertypen innerhalb Ihrer Funktion mithilfe integrierter DAX-Typüberprüfungsfunktionen wie:
Eine vollständige Liste der verfügbaren Typüberprüfungsfunktionen finden Sie unter BENUTZERDEFINIERTE DAX-Funktionen.
Verwandte Inhalte
Weitere Informationen zur Verwendung benutzerdefinierter Funktionen finden Sie in den folgenden Ressourcen: