{"id":4111,"date":"2025-09-21T19:46:47","date_gmt":"2025-09-21T16:46:47","guid":{"rendered":"https:\/\/webanalyst.ro\/?p=4111"},"modified":"2025-09-22T09:56:42","modified_gmt":"2025-09-22T06:56:42","slug":"microsoft-dax-user-defined-functions","status":"publish","type":"post","link":"https:\/\/webanalyst.ro\/blog\/2025\/microsoft-dax-user-defined-functions\/","title":{"rendered":"Func\u021bii definite de utiliator \u00een DAX"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Instrumenele de analiza datelor de la Microsoft vor primi func\u021bionalit\u0103\u021bi noi pentru utilizatori, prin intermediul <strong>DAX user-defined functions<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DAX este acronimul de la <em>Data Analysis Expressions<\/em> \u0219i este un limbaj pentru formule folosit \u00een produsele Microsoft, precum Power BI, Power Pivot din Excel, SQL Server Analysis Services, Azurse Analysis Services, dar \u0219i \u00een produse open-source, de unde amintesc DAX Studio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recent, a fost anun\u021bat\u0103 o schimbare major\u0103 pentru cei care folosesc DAX, prin introducerea func\u021biilor definite de utiliazator.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">M\u0103suri mai simple<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>User Defined Functions (UDFs)<\/em> reprezint\u0103 o func\u021bionalitate major\u0103, care le va permite dezvoltatorilor s\u0103 creeze \u0219i s\u0103 refoloseasc\u0103 propriile func\u021bii personalizate \u00eentr-un model semantic. Odat\u0103 definite, noile func\u021bii vor fi tratate la fel ca func\u021biile predefinite \u0219i pot fi apelate oriunde \u00een model, centraliz\u00e2nd \u0219i simplific\u00e2nd codul DAX. \u00cen acest fel, m\u0103surile devin mai concise \u0219i mai u\u0219or de gestionat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DAX UDFs \u00eenseamn\u0103 \u0219i c\u0103, de acum \u00eenainte, utilizatorii vor putea centraliza cod f\u0103r\u0103 b\u0103t\u0103ile de cap pe care le-au avut dac\u0103 p\u00e2n\u0103 acum au folosit <em>Calculation Groups<\/em>, precum compexitatea, c\u00e2t \u0219i problemele de performan\u021b\u0103 atunci c\u00e2nd se foloseau grupuri.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un alt beneficiu \u00eel al func\u021biilor definite de utilizator, comparativ cu func\u021bionalit\u0103\u021bile deja existente, este c\u0103 UDFs c\u0103 pot avea mai mult de un parametru, ceea ce va duce m\u0103surile create la un nou nivel, \u0219i asta f\u0103r\u0103 a repeta codul pentru fiecare pereche de parametri, cum se \u00eent\u00e2mpla p\u00e2n\u0103 acum.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vizualiz\u0103ri noi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Func\u021biile definite de utilizatori nu ajut\u0103 dezvoltatorii Power BI doar cu crearea de m\u0103suri, ci cu mult mai multe lucruri.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UPDs pot fi folosite \u0219i pentru crearea de HTML personalizat \u0219i vizualuri \u00een SVG. \u00cen acest fel, crearae de noi vizualiz\u0103ri va fi mai pu\u021bin complicat\u0103.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pa\u0219ii pentru a crea o nou\u0103 vizualizare de date cu UDFs vor fi:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Define\u0219ti o singur\u0103 dat\u0103 un \u0219ablon pentru vizual;<\/li>\n\n\n\n<li>Transmi\u021bi parametrii, precum valorile, culorile sau dimensiunile;<\/li>\n\n\n\n<li>Reutilizeazi aceea\u0219i func\u021bie \u00een toate rapoartele tale.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">De unde \u00eencepi cu UDFs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trebuie \u021binut cont c\u0103 DAX UDFs sunt momentan \u00een modul <em>preview<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pentru a activa func\u021biile definite de utilizatori \u00een Power BI Desktop, prima dat\u0103 trebuie s\u0103 alegi <em>Preview features<\/em> din <em>Options<\/em>, iar de acolo s\u0103 bifezi <strong>DAX user-defined functions<\/strong>. Dup\u0103 acest pas, programul va trebui restartat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Func\u021biile vor putea fi administrate \u00een c\u00e2teva locuri diferite din Power BI Desktop:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DAX query view<\/strong> (DQV) &#8211; acesta include \u0219i meniul contextual <em>Quick queries<\/em>;<\/li>\n\n\n\n<li><strong>TMDL view<\/strong> (Tabular Model Definition Language) &#8211; poate fi folosit \u0219i meniul contextual <em>Script TMDL to<\/em>;<\/li>\n\n\n\n<li><strong>Model explorer<\/strong> &#8211; pentru func\u021biile existente, care vor ap\u0103rea sub <em>Functions<\/em>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Actualiz\u0103ri majore apar foarte rar pentru DAX, iar func\u021biile definite de utilizatori reprezint\u0103 unul dintre aceste momente. UDFs vor schimba fundamental modul \u00een care dezvoltatorii Power BI pot utiliza DAX, deschiz\u00e2nd noi posibilit\u0103\u021bi pentru crearea unor modele semantice robuste, reutilizabile \u0219i u\u0219or de \u00eentre\u021binut.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Instrumenele de analiza datelor de la Microsoft vor primi func\u021bionalit\u0103\u021bi noi pentru utilizatori, prin intermediul DAX user-defined functions. DAX este acronimul de la Data Analysis Expressions \u0219i este un limbaj pentru formule folosit \u00een produsele Microsoft, precum Power BI, Power Pivot din Excel, SQL Server Analysis Services, Azurse Analysis Services, dar \u0219i \u00een produse open-source, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4112,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[259,202,886],"class_list":["post-4111","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical","tag-excel","tag-microsoft","tag-power-bi"],"_links":{"self":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/4111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/comments?post=4111"}],"version-history":[{"count":2,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/4111\/revisions"}],"predecessor-version":[{"id":4115,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/4111\/revisions\/4115"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/media\/4112"}],"wp:attachment":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/media?parent=4111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/categories?post=4111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/tags?post=4111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}