Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Data Analysis Expressions (DAX) -käyttäjän määrittämien funktioiden (UDF) avulla voit pakata uudelleenkäytettävän, parametrisoidun DAX-logiikan malleihisi, mikä helpottaa DAX-koodin kirjoittamista, ylläpitoa ja jakamista. Sen sijaan, että toistaisit kaavoja mittareiden, laskettujen sarakkeiden ja visualisointien välillä, UDF:t tuovat semanttisiin malleihisi ohjelmointityylistä joustavuutta, jolloin voit määrittää funktiot kerran ja käyttää niitä kaikkialla, missä DAX:ää tuetaan.
DAX UDF:t ovat yleisesti saatavilla Power BI Desktopissa ja Power BI Servicessä kesäkuun 2026 julkaisusta alkaen. Lisätietoja on artikkelissa Käyttäjän määrittämät DAX-funktiot.
Miksi käyttää käyttäjän määrittämiä funktioita?
- Uudelleenkäytettävyys ja johdonmukaisuus: Määritä laskutoimitus kerran ja käytä sitä uudelleen kaikkialla.
- Ylläpidettävyys: Päivitä logiikka yhdessä paikassa sääntöjen korjaamiseksi tai kehittämiseksi.
- Turvallisempi sisällönluonti: Valinnaiset tyyppivihjeet ja tyypin tarkistusapuohjelmat tukevat ennustettavaa, virheenkestävää koodia.
- Ensiluokkaiset malliobjektit: UDF:t sijaitsevat mallissa ja niitä voi tarkastella Model Explorerissa.
Funktion määrittäminen
Voit määrittää käyttäjän määrittämän funktion Power BI Desktopissa käyttämällä DAX-kyselynäkymää (DQV), TMDL-näkymää tai mallinäkymää. Voit myös tarkastella ja muokata UDF:iä selaimessa Power BI Palvelun verkkomallinnuksen kautta.
Yleinen syntaksi
UDF:n yleinen syntaksi on:
/// Optional description above the function
/// @param {ParameterType} ParameterName - ParameterDescription
/// ...
/// @returns Return description
FUNCTION <FunctionName> = ( [<ParameterName> [: [<ParameterType>] [<ParameterSubtype>] [<ParameterPassingMode>]] [= <DefaultExpression>], ...] ) => <FunctionBody>
Esimerkki: Yksinkertainen verofunktio
Tässä on yksinkertainen esimerkki DQV:stä , joka lisää veroa annettuun summaan. Voit myös arvioida UDF:iä DQV:ssä.
DEFINE
/// AddTax takes in amount and returns amount including tax
FUNCTION AddTax = (
amount : NUMERIC
) =>
amount * 1.1
EVALUATE
{ AddTax ( 10 ) }
// Returns 11
Kun UDF on määritetty, voit päivittää mallin tai lisätä funktion malliin koodilinssin avulla.
Sama esimerkki voidaan luoda TMDL-näkymässä.
createOrReplace
/// AddTax takes in amount and returns amount including tax
function AddTax = (amount : NUMERIC) => amount * 1.1
Kun UDF on määritelty, voit tehdä muutoksia lisätäksesi funktion malliisi.
Hallinnoi käyttäjän määrittelemiä funktioita
Kun se on määritelty ja lisätty malliin, voit tarkastella ja hallita kaikkia käyttäjän määrittelemiä funktioita mallinhallinnasta Functions-solmun alla.
DAX-kyselynäkymässä (DQV) voit käyttää Pikakyselyjä mallinhallinnan kautta funktioiden määrittelyyn ja arviointiin helposti.
TMDL-näkymässä voit vetää ja pudottaa funktioita kankaalle tai käyttää Script TMDL:ää Model Explorerin kautta.
Jos käytetään Power BI Project, funktiot tallennetaan myös functions.tmdl kansioon definition.
Käytä käyttäjän määrittelemiä funktioita
Kun malliin on lisätty UDF, voit käyttää sitä missä tahansa, missä DAX on tuettu. Tässä käytämme AddTax esimerkkinä.
Käytä UDF:iä, joissa on täysi suodatinkonteksti mittareineen.
Total Sales with Tax = AddTax ( [Total Sales] )
Sovella UDF:t jokaiseen riviin taulukossa, jossa on lasketut sarakkeet.
Sales Amount with Tax = CONVERT ( AddTax ( 'Sales'[Sales Amount] ), CURRENCY )
Käytä UDF:iä suoraan visuaalisissa laskelmissa visuaalisissa laskelmissa.
Sales Amount with Tax = AddTax ( [Sales Amount] )
Nest UDF:t edistyneisiin tilanteisiin.
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
Parametrit
DAX UDF:t tukevat nollaa tai useampaa parametria. Tehdäksesi toiminnoistasi turvallisempia ja ennustettavampia, voit halutessasi määrittää parametrityyppivihjeitä:
-
Tyyppi: minkä tyyppisen arvon parametri hyväksyy (
AnyVal,Scalar,Table,AnyRef,CalendarRefColumnRefMeasureRef, , , tai ).TableRef -
Alatyyppi (vain skalaarityyppi): tietty skalaaritietotyyppi (
Variant,Int64, ,DecimalDouble,String,DateTime, ,BooleantaiNumeric). -
ParameterMode: kun argumentti arvioidaan (
valinnokas taiexprlaiska).
Tyyppivinkit noudattavat muotoa: [type] [subtype] [parameterMode]
Esimerkki: Tyyppi 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
Tässä esimerkissä käytetään Scalar tyyppiä, Int64 alityyppiä ja val parametriModea. Voit saavuttaa saman vaikutuksen myös lisäämällä Int64 alatyypin kuten alla olevassa esimerkissä. Ei-numeeriset merkkijonot aiheuttavat virheen.
DEFINE
/// returns x as an Int64
FUNCTION CastToInt = (
x : INT64
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
Tyypin tarkistus
Validoi parametrityypit funktiosi sisällä sisäänrakennetuilla DAX-tyyppitarkistusfunktioilla, kuten:
Täydellisen listan saatavilla olevista tyypintarkistusfunktioista löydät katsosta DAX-käyttäjän määrittelemät funktiot.
Liittyvä sisältö
Lisätietoja käyttäjän määrittelemien funktioiden käytöstä löytyy seuraavista lähteistä: