• Power BI
  • DAX UDF
  • M365 Copilot
  • Szemantikus modell

Copilot-kész Power BI: miért fontosak most a DAX UDF-ek

Az M365 Copilot mostantól maga ír DAX-ot a modellre. A tábla-visszaadó DAX UDF-ek AI Instructionsben dokumentálva teszik konzisztenssé a válaszait.

6 perces olvasás

Tartalom5 szakasz
  1. Amikor a Copilot már nem diagramot rajzol, hanem lekérdezést ír
  2. A szemantikus modell lesz a szerződés
  3. Egy tábla-visszaadó UDF, pénzügyi nyelven
  4. Hol kell valójában laknia a logikának
  5. Mit jelent ez a pénzügyi és BI-csapatoknak

Két elemző ugyanazt kérdezi a Copilottól ugyanarra a szemantikus modellre, és két különböző számot kap. Egyik sem hibás igazán. Az egyik kicsit másképp fogalmazott, a Copilot kicsit más DAX-lekérdezést írt, és máris kétféle „bevétel szegmensenként, előző negyedév” kering az e-mailekben. Ez a csendes probléma érkezik a Power BI Copilot most bejelentett új irányával, és előbb governance-kérdés, mint technikai.

A változás lényege: mostantól nem a beépített Power BI Copilot, hanem az M365 Copilot válaszol a kérdésekre úgy, hogy közvetlenül a szemantikus modelled ellen generál és futtat DAX-lekérdezéseket. M365 Copilot-licenc kell hozzá, de Fabric-kapacitás nem: Pro workspace-ben lévő modellekkel is működik. Amit korábban a modellek Copilot-baráttá tételébe fektettél, nem veszett kárba. Csak az változik meg, hol van a törékeny pont.

Amikor a Copilot már nem diagramot rajzol, hanem lekérdezést ír

A régebbi Power BI Copilot többféleképpen tudott válaszolni, például úgy, hogy vizualizációt épített neked. Az M365 Copilot jellemzően egyvalamit csinál helyette: DAX-ot ír, és lefuttatja. Szintaktikailag helyes DAX-ot valóban jól állít elő, és tiszteletben tartja a modell AI Instructions beállításait. Két kockázat mégis megmarad, és mindkettő ismerős lesz bárkinek, aki vezetett már riportingcsapatot.

Az első a költség és a teljesítmény. Egy lekérdezés visszaadhatja a helyes eredményt úgy, hogy közben messze nem optimális, ami a kapacitásszámládon elfogyasztott CU-ként, a felhasználók képernyőjén pedig lassú válaszként jelenik meg. A második a konzisztencia. Amikor többen ugyanazt az elemzést szeretnék, de homályosan vagy eltérően fogalmaznak, mindegyikük kicsit más eredményt kaphat. Egy pénzügyi funkcióban épp az ilyen, felhasználónként eltérő eredmény az, amit a havi zárás és a rekonsziliáció hivatott kiszűrni.

A szemantikus modell lesz a szerződés

Az a logika, ami korábban egy konkrét riport vizualizációjában vagy egy elemző fejében élt, mostantól oda kell kerüljön, ahová a Copilot minden alkalommal biztosan benyúl. Az AI Instructions szabad szöveges útmutatása segít, de egy prózai leírás arról, hogyan „kellene” egy elemzést elvégezni, gyenge szerződés.

A modell követheti a prózát, figyelmen kívül hagyhatja, vagy improvizálhat körülötte.

Egy tábla-visszaadó DAX User-Defined Function sokkal erősebb szerződés, mert ő maga a számítás, nem a leírása. Épp azokat az elemzési műveleteket érdemes így becsomagolni, amelyeket a pénzügyi csapatok a legkevésbé szeretnének ad hoc újraszámolva látni: korosítási sávok, ügyfelek és költések Pareto- vagy ABC-szegmentálása, eltérések materialitási sávozása, allokációs kulcsok.

Éveken át építettem DAX-nehéz szemantikus modelleket a tőkepiacon, köztük egy aktivitásalapú költségallokációt és egy több mint ötven ember által használt globális költség-dashboardot a Morgan Stanley-nél. Ennyi kéz mellett ugyanazokon a számokon a kockázat ritkán egyetlen elrontott érték; sokkal inkább az, hogy felkészült emberek „ugyanazt” a számot kicsit másképp számolják ki, mert a definíció megosztott konvencióban él, nem magában a modellben. A konvenciók elcsúsznak, emberek kilépnek, és valakinek az elmentett PBIX-ében lévő lekérdezés halkan eltér a riportcsomagétól. Egy UDF ezt a definíciót egyetlen helyre teszi, amin minden fogyasztónak, embernek és ágensnek is, át kell mennie.

Egy tábla-visszaadó UDF, pénzügyi nyelven

A minta kicsi. Egyszer definiálod a függvényt, táblát ad vissza, és bármely DAX-lekérdezés meghívhatja EVALUATE-tel. Így néz ki a forma, egy vevőköveteléses (AR) korosításra általánosítva, amely a nyitott tételeket egy fordulónap és két napszám-küszöb szerint sorolja sávokba:

DAX
-- Újrahasznosítható, tábla-visszaadó logika a szemantikus modellben.
-- A nyitott vevőköveteléseket korosítási sávokba sorolja egy fordulónaphoz képest.
EVALUATE
    AgingBuckets( DATE(2026, 6, 30), 30, 90 )
ORDER BY [Aging Bucket]

A függvény dönti el, egyetlen auditálható helyen, hogyan sorolódnak be a tételek. A Copilot dolga összezsugorodik: a megfelelő argumentumokkal meghívja, és érintetlenül visszaadja, ami jön. Hogy ezt megbízhatóan tegye, a függvényt a modell AI Instructions szövegében írod le, körülbelül így:

Szöveg
Ez a modell tartalmaz egy tábla-visszaadó függvényt, AgingBuckets(asOfDate, tier1Days, tier2Days),
amely a nyitott vevőköveteléseket korosítási sávokba sorolja, és táblát ad vissza EVALUATE-hez.
Ha a felhasználó AR-korosítást kér, mindig ezt a függvényt hívd, és a tábláját változtatás nélkül add vissza:
ne adj hozzá oszlopot, összesítést vagy oda nem tartozó measure-t.
Ha a felhasználó nem adta meg a fordulónapot vagy a napszám-küszöböket, kérdezd meg tőle.
Soha ne feltételezz alapértelmezett értékeket.

Egy fontos megkötés előre: a Power BI riportok továbbra sem tudják közvetlenül megjeleníteni egy tábla-visszaadó UDF kimenetét. Ez a korlát korábban inkább elméletivé tette ezt a mintát, de sokkal kevésbé számít, amint a fő fogyasztód egy olyan lekérdező eszköz, mint a Copilot, amelyik bármilyen DAX-ot lefuttathat.

Hol kell valójában laknia a logikának

Itt jön a részlet, ami meglepett a forrásanyagban. Ugyanaz a leírás működött, amikor a modell AI Instructions szövegében volt, de figyelmen kívül maradt, amikor a szerző átrakta magának a UDF-nek a Description tulajdonságába. A Copilot elment, és megírta a saját lekérdezését, ami a helyes eredményt adta, de behúzott olyan measure-öket is, amiket senki nem kért. Megmondani a Copilotnak, milyen függvények léteznek és mikor használja őket, mostantól alapvető modellezési feladat, ugyanolyan súllyal, mint maga a modell.

Hol lakik az elemzési logikaA Copilot viselkedéseKockázat
Sehol újrahasznosíthatóan; a Copilot bármilyen DAX-ot írhatMinden alkalommal saját lekérdezést generálNem optimális teljesítmény és CU-költség; felhasználónként eltérő eredmény
A UDF-ben, de csak a Description tulajdonságában leírvaFigyelmen kívül hagyta a UDF-et, saját DAX-ot írtHelyes szám, de fölösleges measure-ök és semmi konzisztencia-garancia
A UDF-ben, a modell AI Instructions szövegében leírvaMeghívta a UDF-et, a tábláját érintetlenül adta visszaKonzisztens kimenet, és te kontrollálod a lefutó lekérdezést

Mit jelent ez a pénzügyi és BI-csapatoknak

Amikor egy új AI-funkció megjelenik, az ösztön az, hogy az AI-t teszteljük. Itt hasznosabb lépés az alatta lévő rétegbe fektetni. Egy tiszta szemantikus modell, amelyben az üzleti logika UDF-ekben van rögzítve, ott dokumentálva, ahol az ágens elolvassa, és a már meglévő row-level security védi, ez az, ami egy magabiztosan hangzó Copilot-választ megbízhatóvá tesz. A Copilot örökli a modell biztonságát és definícióit; nem javít meg egy modellt, ami eleve kétértelmű volt.

Egy kontroller számára az ellenőrzőlista hálátlan és rövid. Told át a számodra fontos elemzési műveleteket újrahasznosítható függvényekbe. Írd le őket az AI Instructionsben, beleértve azt a szabályt, hogy a Copilot inkább kérdezzen rá a hiányzó paraméterekre, semmint tippeljen. Tartsd naprakészen az RLS-t és a governance-t, mert egy ágens, amelyik bármilyen lekérdezést megírhat, csak annyira biztonságos, amennyire a modell, amit lekérdez. Ez közel áll ahhoz a governance-munkához, amit most Fabric lakehouse-okon végzek, és a szemantikus réteg az, ahol a hozam nagy része elrejtőzik.

Chris Webb egy kidolgozott ABC-elemzés példán és a hozzá tartozó AI Instructionsön keresztül végigveszi a mechanikát a Power BI, M365 Copilot And The Importance Of DAX UDFs című írásában. A funkció még alakul, több képesség ígérve, néhány érdes él csiszolásra várva. A hálátlan rész, az újrahasznosítható logika és a tiszta modell, az, ami a demók változása után is számítani fog.