DAX:n käyttäjän määrittelemät funktiot

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.

Kuvakaappaus DAX-kyselystä Power BI Desktopissa, jossa korostetaan kahta kohtaa, joihin voit tallentaa käyttäjän määrittämän funktion. Ensimmäinen on Päivitä-malli, jossa on muutospainike näkymän yläosassa. Toinen on tilarivi koodieditorissa nimeltä Päivitä malli: Lisää uusi funktio.

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.

Kuvakaappaus TMDL-näkymästä Power BI työpöydällä, jossa korostetaan näkymän yläosassa olevaa Apply-painiketta. Tämä painike on paikka, johon voit tallentaa käyttäjän määrittämän funktion.

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.

Kuvakaappaus mallinhallintapaneelista Power BI Desktopissa, jossa näkyy laajennettu Functions-solmu. Kolme käyttäjän määrittelemää funktiota on listattu: AddTax, AverageOrderValue ja CustomerLifetimeValue.

DAX-kyselynäkymässä (DQV) voit käyttää Pikakyselyjä mallinhallinnan kautta funktioiden määrittelyyn ja arviointiin helposti.

Screenshot mallinhallintapaneelista Power BI Desktopissa näyttää laajennetun Functions-solmun. Kaksi kontekstivalikkoa on avoinna: ensimmäisessä valikossa on pikakyselyt, Nimeä uudelleen, Poista mallista, Piilota raporttinäkymässä, Poista kaikki piilotus, Kokoa kaikki ja Laajenna kaikki. Pikakysely korostetaan ja valitaan. Toinen valikko on korostettu ja tarjoaa pikakyselyvaihtoehdot: Arvioi, Määrittele ja arvioi, Määrittele uusi funktio ja Määrittele kaikki tämän mallin funktiot.

TMDL-näkymässä voit vetää ja pudottaa funktioita kankaalle tai käyttää Script TMDL:ää Model Explorerin kautta.

Screenshot mallinhallintapaneelista Power BI Desktopissa näyttää laajennetun Functions-solmun. Kaksi kontekstivalikkoa on avoinna: ensimmäisessä valikossa on Script TMDL, Nimeä uudelleen, Poista mallista, Piilota raporttinäkymässä, Poista kaikki piilotus, Kokoa kaikki ja Laajenna kaikki. Skripti TMDL:ään korostetaan ja valitaan. Toinen valikko on korostettu ja tarjoaa Script to TMDL -vaihtoehdot, Script-välilehden ja Clipboard.

Jos käytetään Power BI Project, funktiot tallennetaan myös functions.tmdl kansioon definition.

Visual Studio Code -näyttökuva Power BI -projektista. Explorer on avoinna semanttisen mallin kansioon. 'functions.tmdl' on avoinna koodieditorissa. Näkyviin tulee kolme funktiota: CustomerLifetimeValue, AverageOrderValue ja AddTax.

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, , Booleantai Numeric).
  • ParameterMode: kun argumentti arvioidaan (val innokas tai expr laiska).

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.

Lisätietoja käyttäjän määrittelemien funktioiden käytöstä löytyy seuraavista lähteistä: