Microsoft Power Fx – yleiskatsaus

Power Fx on low-code-kieli, jota käytetään Microsoft Power Platformissa. Se on yleiskäyttöinen, vahvasti tyypitetty, määrittävä ja toimiva ohjelmointikieli.

Power Fx ilmaistaan helposti ymmärrettävinä lausekkeina. Se on vähän koodia käyttävä kieli, jonka avulla tekijät voivat käsitellä suoraan Excelin tyyppisiä kaavarivejä tai Visual Studio Coden teksti-ikkunaa. Vähän koodia käyttävän kielen vähäinen koodin määrä on mahdollista kielen yhdenmukaisen ja yksinkertaisen luonteen vuoksi. Sen avulla ohjelmointitehtävät ovat helppoja sekä tekijöille että kehittäjille. Sen avulla kaiken tasoinen kehittäminen on mahdollista: henkilö, joka ei ole koskaan ohjelmoinut, voi kehittää täysin ilman koodia, kun taas ammattikehittäjät voivat käyttää ammattimaista koodausta. Koska taitotasojen välillä siirtyminen ei edellytä uudelleenkirjoittamista, monimuotoiset tiimit voivat tehdä yhteistyötä, mikä säästää aikaa ja rahaa.

Muistiinpano

  • Microsoft Power Fx on Power Apps -kaaviosovellusten kaavakielen uusi nimi. Tätä yleiskatsausta ja liittyviä artikkeleita päivitetään, koska kieli on poimittu pohjaan perustuvasta sovelluksesta, integroitu toisten Microsoft Power Platform -tuotteiden kanssa ja määritetty käytettäväksi avoimena lähdekoodina. Jos haluat lisätietoja kielestä ja kokeilla sitä, aloita Power Apps -dokumentaation kohdasta Kaaviosovellusten kaavojen käytön aloittaminen ja rekisteröidy maksuttomaan Power Apps -kokeiluun.
  • Tässä artikkelissa tekijät mainitaan, kun kuvaillaan ominaisuutta, jota voidaan käyttää ohjelmointitaitojen molemmissa päissä. Käyttäjään viitataan kehittäjänä, jos ominaisuus on kehittynyt ja vaatii enemmän osaamista kuin tyypillisellä Excel-käyttäjällä on.

Power Fx sitoo objekteja yhteen deklaratiivisia laskentataulukkomuotoisia kaavoja käyttäen. Oletetaan esimerkiksi, että käyttöliittymän ohjausobjektin Näkyvä-ominaisuus on Excel-laskentataulukon solu, joka sisältää kaavan, joka laskee sen arvon muiden ohjausobjektien ominaisuuksien perusteella. Kaavan logiikka laskee arvon automaattisesti samalla tavalla kuin laskentataulukko. Tämä vaikuttaa ohjausobjektin näkyvyyteen.

Power Fx sisältää myös tarvittaessa määräävän logiikan. Laskentataulukoissa ei yleensä ole painikkeita, jotka lähettävät muutoksia tietokantaan, mutta sovelluksissa usein on. Samaa lausekekieltä käytetään sekä deklaratiivisessa että imperatiivisessa logiikassa.

Power Fx tuodaan saataville avoimen lähdekoodin ohjelmistona. Se on tällä hetkellä integroitu kaaviosovelluksiin ja sitä ollaan purkamassa Power Appsista käytettäväksi muissa Microsoft Power Platform -tuotteissa avoimen lähdekoodin sovelluksena. Lisätietoja: Microsoft Power Fx GitHubissa

Tässä artikkelissa on kielen ja sen suunnitteluperiaatteiden yleiskatsaus. Lisätietoja Power Fx -kielestä on seuraavissa artikkeleissa:

Laskentataulukkoa muistuttava

Entä jos voisit luoda sovelluksen yhtä helposti kuin laskentataulukon Excelissä?

Entä jos voisit hyödyntää olemassa olevaa laskentataulukkotietämystäsi?

Nämä olivat kysymyksiä, jotka inspiroivat Power Appsin ja Power Fx:n luomiseen. Sadat tuhannet henkilöt luovat laskentataulukoita Excelissä joka päivä. Annetaan heille mahdollisuus luoda sovelluksia helposti Excelin tuttujen käsitteiden avulla. Purkamalla Power Fx:n ulos Power Appsista näihin kysymyksiin vastataan automaation, virtuaaliagentin tai muiden alueiden kehittämisessä.

Kaikissa ohjelmointikielissä, myös Power Fx:ssä on lausekkeita: ne osoittavat lukujen, merkkijonojen tai muiden tietotyyppien laskennan. Esimerkiksi mass * acceleration ilmaisee useimmissa kielissä ominaisuuksien mass ja acceleration kertomista. Lausekkeen tulos voidaan sijoittaa muuttujaan, käyttää argumenttina toimenpiteessä tai sijoittaa isomman lausekkeen sisään.

Power Fx vie tämän askeleen eteenpäin. Lauseke itse ei kerro mitään siitä, mitä lasketaan. Tekijän tehtävä on sijoittaa se muuttujaan tai välittää se funktioon. Power Fx:ssä sen sijaan, että kirjoittaisit vain lausekkeen, jolla ei ole tiettyä merkitystä, kirjoitat kaavan, joka sitoo lausekkeen tunnisteeseen. Kirjoita force = mass * acceleration kaavaksi, kun lasketaan force. Kun mass tai acceleration muuttuu, force päivitetään automaattisesti uudeksi arvoksi. Lauseke kuvasi laskutoimituksen, kaava antoi laskutoimitukselle nimen ja käytti sitä valmistusohjeena. Siksi kutsumme Power Fx:ää kaavakieleksi.

Esimerkiksi tämä pinon ylivuodon kaava hakee merkkijonon käänteisessä järjestyksessä. Se näyttää Excelissä samalta kuin seuraavassa kuvassa.

Käänteishaku

Näyttökuva Excelin kaavarivistä ja kaavasta: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Solu A1 sisältää tekstin "Hei maailma! Hauska tavata sinut! Solu A2 sisältää tekstin sinut!

Power Fx toimii samalla kaavalla, jossa soluviittaukset korvattu ohjausobjektien ominaisuusviittauksilla:

Käänteinen Power Fx -haku

Näyttökuva Power Fx -kaavarivistä Power Appsissa. Kaava on =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) Kaavan alapuolella syöttökentässä on teksti "Hello, World! Hauska tavata sinut! tulee näkyviin kirjain kerrallaan. Samaan aikaan seliteruudussa viimeisen sanan kirjaimet tulevat näkyviin. Kun koko teksti näkyy syöttökentässä, sana sinut! tulee näkyviin Selite-ruutuun.

Kun Input-ohjausobjekti arvo muuttuu, Label-ohjausobjekti laskee kaavan automaattisesti uudelleen ja näyttää uuden arvon. Tapahtumakäsittelijöitä OnChange ei ole, toisin kuin useissa muissa kielissä.

Toisessa esimerkissä käytetään näytön Fill-värin kaavaa. Samalla kun ohjausobjektin punainen, vihreä ja sininen muuttuvat, taustaväri muuttuu automaattisesti uudelleenlaskemisen vuoksi.

Värin liukusäädin

Liukusäätimen ohjausobjekteissa ei ole tapahtumia OnChange toisin kuin muissa kielissä. Ominaisuuden Fill arvoa ei voi määrittää eksplisiittisesti. Jos väri ei toimi odotetulla tavalla, saat lisätietoja katsomalla tätä kaavaa. Sinun ei tarvitse hakea ominaisuuden odottamattomaan aikaan määrittävää koodia sovelluksen kautta, koska aikaelementtiä ei ole. Oikeita kaavan arvoja ylläpidetään aina.

Koska liukusäätimet on määritetty väriltään tummaksi, punaisen, vihreän ja sinisen selitteet kompensoivat sitä muuttumalla valkoisiksi. Tämä tapahtuu yksinkertaisella kaavalla kunkin otsikon ohjausobjektin ominaisuudessa Color.

Power Fx:n värien liukusäätimet

Hienoa on se, että tämä ei riipu siitä, mitä värille Fill tehdään. Nämä ovat kaksi täysin eri laskutoimitusta. Suurten monoliittisten proseduurien sijaan Power Fx -logiikka koostuu yleensä toisistaan riippumattomista pienemmistä kaavoista. Tämä helpottaa kielen ymmärtämistä ja mahdollistaa parannukset ilman olemassa olevan logiikan muuttamista.

Power Fx on deklaratiivinen kieli, kuten Excelkin. Tekijä määrittää haluamansa toiminnan, mutta järjestelmän on itse määritettävä ja optimoitava, miten ja milloin se tehdään. Jotta tämä olisi mahdollisimman käytännöllistä , useimmat työt tehdään ilman sivuvaikutuksia aidoilla funktioilla, mikä tekee Power Fx:stä myös funktionaalisen kielen (kuten Excelkin).

Aina käytettävissä

Laskentataulukoiden tärkeät ominaisuudet ovat kokoaikainen reaaliakaisuus ja muutosten näkyminen välittömästi. Laskentataulukossa ei ole käännös- ja suoritustilaa. Kun kaavaa muokataan tai arvo syötetään, laskentataulukko lasketaan heti uudelleen vastaamaan muutoksia. Havaitut virheet näytetään heti, eivätkä ne vaikuta laskentataulukon muihin osiin.

Sama on toteutettu Power Fx:ssä. Lisäävää kääntäjää käytetään, jotta ohjelma on jatkuvasti synkronoitu käytettävissä olevien tietojen kanssa. Muutokset levitetään automaattisesti ohjelman kaavion kautta. Tämä vaikuttaa riippuvaisten laskelmien tuloksiin, joka puolestaan voi vaikuttaa ohjausobjektien, kuten värin ja sijainnin, ominaisuuksiin. Lisäävä kääntäjä sisältää myös monipuolisen kaavan muokkauskokemuksen, sillä käytössä on IntelliSense, ehdotukset, automaattinen täyttö ja kirjoituksen tarkistus.

Seuraavassa animaatiossa järjestysnumero näkyy selitteen ohjausobjektissa liukusäätimen ohjausobjektin perusteella, vaikka sen alla olevissa selitteissä on kaksi virhettä. Sovellus on erittäin reagoiva ja vuorovaikutteinen. Kun kaava yritetään korjata ensimmäisellä kerralla syöttämällä .InvalidName, näkyviin tulee punainen viiva ja virhesanoma odotetulla tavalla, mutta sovelluksen suorittamista jatketaan.

Aina käytettävissä

Kun syötetään .Employee, ruutu Data lisää Työntekijät-taulukon ja tämän taulukon metatiedot haetaan. Sarakkeiden ehdotukset tarjotaan välittömästi. Tällä tavoin siirryttiin yhden taulukon suhteesta toiseen taulukkoon, järjestelmä teki tarvittavat muutokset sovelluksen viittauksiin. Sama tapahtuu lisättäessä .Customer.

Liukusäädin jatkaa kunkin muutoksen jälkeen viimeisimmällä arvolla, ja mahdolliset muuttujat pitävät arvonsa. Järjestysnumero on näytetty koko ajan ylimmässä selitteessä niin kuin on tarkoituskin. Sovellus on käsitellyt reaaliaikaisesti ja koko ajan todellisia tietoja. Se voidaan tallentaa, käyttö lopettaa ja muut voivat sitten avata ja käyttää sitä aivan kuten Exceliäkin. Koonti- ja käännösvaiheita ei ole. Käytettävissä on vain julkaisuvaihe, joka määrittää, mikä sovelluksen versio on valmis käyttäjille.

Vähän koodia

Power Fx kuvaa liiketoimintalogiikkaa tiiviissä mutta tehokkaissa kaavoissa. Suuri osa logiikkaa voidaan tiivistää yhdeksi riviksi, silti käytössä on runsaasti ilmaisuvoimaa ja hallintaa monimutkaisia tarpeita varten. Tavoitteena on pitää niiden käsitteiden määrä, jotka tekijöiden on ymmärrettävä, mahdollisimman vähäisinä. Parhaassa tapauksessa niitä ei ole enemmän kuin mitä Excel-käyttäjä jo tuntee.

Jos esimerkiksi haluat etsiä työntekijän etunimen tilausta varten, kirjoitat Power Fx-kaavan, joka näkyy seuraavassa animaatiossa. Ainoa käsite, jota Excelissä ei ole, on piste (.) -merkintä tietorakenteeseen porautumista varten. Tässä tapauksessa se on .Employee.'First Name'. Animaatio näyttää Power Fx -kaavan osien yhdistämismäärityksen ja käsitteet, jotka on koodattava eksplisiittisesti vastaavaan JavaScript-koodiin.

Vähän koodia käyttävä JavaScript

Katsotaanpa tarkemmin kaikkia asioita, joita Power Fx tekee ja sen vapautta optimoida, koska kaava on deklaratiivinen:

  • Asynkroninen: kaikki tietotoiminnot Power Fx:ssä ovat asynkronisia. Tekijän ei tarvitse määrittää tätä, eikä tekijän tarvitse synkronoida toimintoja tämän kutsun jälkeen. Tekijän ei tarvitse olla lainkaan tietoinen tästä käsitteestä, eikä heidän tarvitsee tietää, mikä promise- tai lambda-funktio on.

  • Paikallinen ja etänä: Power Fx käyttää samaa syntaksia ja toimintoja tietoihin, jotka ovat paikallisesti muistissa ja etätietokannassa tai -palvelussa. Käyttäjän ei tarvitse miettiä tätä erottelua. Power Fx delegoi palvelimelle automaattisesti kaiken mahdollisen, koska palvelin voi käsitellä suodattimia ja lajitella tietoja siellä tehokkaammin.

  • Relaatiotiedot: Tilaukset ja Asiakkaat ovat kaksi eri taulukkoa, joilla on monta yhteen -suhde. OData-kyselyyn tarvitaan $expand ja tieto viiteavaimesta, mikä vastaa SQL:n Join-toimintoa. Kaavassa ei käytetä mitään näistä, sillä myös tietokanta-avaimet ovat käsite, josta tekijän ei tarvitse välittää. Tekijä saa käyttöönsä koko tietueen suhdekaavion yksinkertaisesti käyttämällä pistettä merkintätapana.

  • Noudettavien tietojen valinta: Kyselyä kirjoitettaessa useat kehittäjät kirjoittavat select * from table. Tämä hakee tietojen kaikki sarakkeet. Power Fx analysoi kaikki sovelluksen kautta käytetyt sarakkeet myös kaavariippuvuuksien kautta. Noudettavien tietojen valinta optimoidaan automaattisesti, eikä tekijän tarvitse tietää, mitä noudettavien tietojen valinta tarkoittaa.

  • Nouda vain tarvittavat tiedot: Tässä esimerkissä funktio LookUp osoittaa, että noudetaan vain yksi tietue, ja se on ainoa palautettava tietue. Jos pyydetään useita tietueita käyttämällä Filter-funktiota (jolloin saatetaan saada tuhansia tietueita), kerralla palautetaan vain yksi sivullinen tietoja. Sivulla on 100 tietuetta. Käyttäjän on käytävä valikoima tai tietotaulukko läpi tietojen katselemiseksi. Nämä tuodaan automaattisesti käyttäjän käytettäviksi. Tekijä voi käsitellä suuria tietojoukkoja ilman, että hänen on mietittävä tietopyyntöjen rajoittamista hallittaviksi paloiksi.

  • Suoritetaan vain tarvittaessa: Otsikon ohjausobjektin ominaisuudelle Text on määritetty kaava. Kun valittu muuttuja vaihtuu, LookUp lasketaan automaattisesti uudelleen ja selite päivitetään. Tekijän ei tarvinnut kirjoittaa OnChange-käsittelijää valinnalle eikä muistaa, että tämä otsikko on siitä riippuvainen. Kyse on aiemmin käsitellystä deklaratiivisesta ohjelmoinnista, ja tekijä on määrittänyt, mitä selitteeseen ei halutaan eikä sitä, miten ja milloin se noudetaan. Jos tämä otsikko ei näy, koska se on näytössä joka ei ole näkyvä tai sen ominaisuuden Visible arvo on Epätosi, tämä laskutoimitus voidaan siirtää ajankohtaan, jolloin otsikko näkyy ja poistaa se tehokkaasti, jos niin tapahtuu tavallisuudesta poiketen.

  • Excel-syntaksin käännös: Monet käyttäjät käyttävät Exceliä, ja useimmat heistä tietävät, että et-merkkiä (&) käytetään merkkijonon yhdistimenä. JavaScript käyttää plusmerkkiä (+). Muissa kielissä käytetään pistettä (.).

  • Näyttönimet ja lokalisointi: First Name-tekstiä käytetään Power Fx -kaavassa , kun nwind_firstname-tekstiä käytetään JavaScript-vastineessa. Microsoft Dataversessa ja SharePointissa on näyttönimi sarakkeille ja taulukoille yksilöllisen loogisen nimen lisäksi. Näyttönimet ovat usein paljon käyttäjäystävällisiä, kuten tässä tapauksessa. Toinen näyttönimien tärkeä ominaisuus on, että ne voidaan lokalisoida. Jos sinulla on monikielinen ryhmä, jokainen ryhmän jäsen näkee taulukon ja kentän nimet omalla kielellään. Power Fx varmistaa aina, että oikea looginen nimi lähetetään automaattisesti tietokantaan.

Ei koodausta

Sinun ei tarvitse lukea ja kirjoittaa Power Fx:ää, jotta voisit luoda logiikkaa. Mukautuksia ja logiikkaa voidaan ilmaista myös käyttämällä yksinkertaisia kytkimiä ja käyttöliittymän muodostimia. Nämä no-code-työkalut on luotu lukemaan ja kirjoittamaan Power Fx -kieltä, jotta varmistetaan, että jollekin on mahdollisuus on viedä sitä eteenpäin, mutta samalla on hyvä tietää, että no-code-työkalut eivät tarjoa koko kielen ilmaisuvoimaa. Myös no-code-muodostimissa kaavarivi on Power Appsissa keskiössä, koska se opastaa tekijää siitä, mitä heidän puolestaan tehdään, jotta he voivat aloittaa Power Fx:n oppimisen.

Seuraavaksi käsitellään esimerkkejä. Power Appsin ominaisuuspaneelissa ohjausobjektien ominaisuuksiin liittyviä kytkimiä ja säätimiä, joiden käyttöön ei tarvita koodia. Käytännössä useimmat ominaisuusarvot ovat staattisia. Voit vaihtaa kohteen Gallery taustavärin värien muodostintyökalun avulla. Huomaa, että kaavarivi reagoi tähän muutokseen ja päivittää kaavan toiseksi kutsuksi, jonka muoto on RGBA. Voit milloin tahansa palata kaavariville ja tehdä tämän vaiheen – tässä esimerkissä värin muuttamisessa on käytössä ColorFade. Värin ominaisuus näkyy yhä ominaisuuspaneelissa, muttafx-kuvake näkyy, kun hiiri viedään paneelin yläpuolelle, ja sinut ohjataan kaavariviin. Tämä toimii täysin kahdella eri tavalla: jos kutsu ColorFade poistetaan, väriksi palautetaan sellainen väri, jota ominaisuuspaneeli ymmärtää, ja voit käyttää sitä uudelleen värin määrittämisessä.

Väri koodia käyttämättä

Seuraava on edellistä monimutkaisempi esimerkki. Valikoimassa näkyy Dataversen työntekijäluettelo. Dataversessa on näkymiä taulukon tietoihin. Voidaan valita jokin näistä näkymistä. Kaavaa muutetaan niin, että funktiota Filter käytetään tämän näkymän nimen kanssa. Kahden avattavan valikon avulla voidaan valita oikea taulukko ja näkymä koskematta kaavariviin. Oletetaan, että haluat lisätä siihen lajittelun. Se voidaan tehdä kaavarivillä, jolloin ominaisuuspaneelissa on taas näkyvissä fx-kuvake ja muokkaukset ohjataan kaavariville. Jos kaava taas yksinkertaistetaan muotoon, jonka ominaisuuspaneeli voi lukea ja kirjoittaa, sitä voi käytätä uudelleen.

Lajittelu koodia käyttämättä

Edelliset esimerkit ovat olleet yksinkertaisia. Mielestämme Power Fx-kieli on hyvä, kun kuvataan no-code-vuorovaikutuksia. Se on lyhyt, tehokas ja helposti jäsennettävä, minkä lisäksi siinä on riittävästi tilaa, jota tarvitaan, kun halutaan siirtyä turvallisesti vähän koodia käyttävään kehittämiseen.

Ammattimainen koodaus

Vähäistä koodia käyttävät tekijät tarvitsevat joskus asiantuntijoiden apua toimintojen luomisessa. Joskus ammattimainen kehittäjä ylläpitää ja tehostaa toimintoja heidän puolestaan. Myös ammattilaiset arvostavat sitä, että vähän koodia käyttävä ympäristö voi olla kätevämpi, nopeasti ja edullisempi kuin ammattimaisen työnkalun muodostaminen. Kaikkiin tilanteisiin ei tarvita Visual Studion kaikkia ominaisuuksia.

Ammattilaiset haluavat käyttää ammattilaistyökaluja, koska ne tehostavat toimintaa. -kaavat voidaan tallentaa Power FxYAML-lähdetiedostoihin, joita on helppo muokata Visual Studio Codessa tai Visual Studiossa tai millä tahansa muulla tekstieditorilla ja Power Fx voidaan määrittää lähdekoodin hallintaan GitHubiin, Azure DevOpsiin tai mihin tahansa muuhun lähdekoodin hallintajärjestelmään.

Ammattilaiskoodin Visual Studio Code

Ammattilaiskoodi GitHub

Power Fx tukee kaavapohjaisia osia jakamiseen ja uudelleenkäyttöön. Olemme kertoneet parametrien tuesta komponenttien ominaisuuksia varten, jossa otetaan käyttöön täysin käyttäjän määrittämien funktioiden luominen. Ja lisää parannuksia on luvassa.

Power Fx on myös hyvä kokoamaan yhteen ammattilaisten rakentamat komponentit ja palvelut. Käyttövalmiit yhdistimet mahdollistavat satojen tietolähteiden ja verkkopalveluiden käytön, mukautetut yhdyssovellukset mahdollistavat Power Fx:n yhteyden mihin tahansa REST-verkkopalveluun, ja koodikomponenttien avulla Power Fx voi olla yhteydessä täysin mukautetun JavaScript-koodin kanssa näytössä ja sivulla.

Suunnitteluperiaatteet

Yksinkertaista

Power Fx on suunniteltu tekijäkohdeyleisölle, jonka jäseniä ei ole koulutettu sovelluskehittäjiksi. Mahdollisuuksien mukaan on hyödynnetty sitä tietämystä, joka tällä käyttäjäryhmällä on tai joka heidän on helppo saada. Onnistuneeseen käyttöön tarvittavien käsitteiden määrä on pidetty mahdollisimman pienenä.

Yksinkertaisuus on hyödyllistä myös kehittäjille. Kehittäjäryhmän osalta tarkoitus on toimia vähän koodia käyttävänä kielenä, joka lyhentää ratkaisun muodostamiseen tarvittavaa aikaa.

Yhdenmukaisuus Excelin kanssa

Microsoft Power Fx -kieli lainaa paljon asioita Excelin kaavakielestä. Pyrimme hyödyntämään useiden tekijöiden Excel-tietämystä ja -kokemusta. Tyyppien, operaattorien ja funktioiden semantiikka muistuttaa Exceliä mahdollisimman paljon.

Jos Excel ei sisällä vastausta, sitä etsitään SQL-kielestä. SQL on Excelin jälkeen seuraavaksi yleisin määrittävä kieli. Se voi antaa ohjeita tietojen toiminnoissa ja vahvassa tyypityksessä, jota Excel ei tee.

Deklaratiivinen

Tekijä kuvaa, mitä hän haluaa logiikan tekevän, ei täsmällisesti miten tai milloin se tulisi tehdä. Näin kääntäjä voi optimoida suorittamalla toimintoja rinnakkain, lykkäämällä töitä tarpeen mukaan sekä hakemalla ennalta ja käyttämällä uudelleen välimuistiin tallennettuja tietoja.

Esimerkiksi Excel-laskentataulukossa tekijä määrittää solujen väliset suhteet, mutta Excel päättää, milloin ja missä järjestyksessä kaavat arvioidaan. Samalla tavalla sovelluksen kaavoja voidaan pitää tarvittaessa uudelleenlaskettavina käyttäjän toimintojen, tietokantamuutosten tai ajastimen tapahtumien perusteella.

Funktionaalinen

Suosimme puhtaita toimintoja, joilla ei ole epätoivottuja vaikutuksia. Tämä johtaa logiikkaan, joka on aiempaa helpommin ymmärrettävää ja joka antaa kääntäjälle eniten vapautta optimoinnissa.

Toisin kuin Excel, sovellukset muuttavat tilaa luonnostaan – sovelluksissa on esimerkiksi painikkeita tietokannan tietueen muutosten tallentamista varten. Joillakin funktioilla on siis sivuvaikutuksia, joskin sitä rajoitetaan niin paljon kuin on käytännöllistä.

Yhdistäminen

Aina kun se on mahdollista, pyritään siihen, että lisätyt toimintoja voi käyttää sujuvasti yhdessä olemassa olevien toimintojen kanssa. Tehokkaat funktiot voidaan jakaa pienemmiksi osiksi, sillä näitä itsenäisiä osia on helpompi käyttää.

Esimerkiksi Valikoima-ohjausobjektilla ei ole erillisiä ominaisuuksia Sort ja Filter. Sen sijaan Sort- ja Filter-funktiot on yhdistetty yhdeksi Items-ominaisuudeksi. Toiminnan Sort ja Filter ilmentämisen käyttöliittymä on määritetty tasoiksi ominaisuuden Items päälle käyttämällä tämän ominaisuuden kaksisuuntaista editoria.

Vahva tyypitys

Kaikkien arvojen tyypit tiedetään käännösajankohtana. Tällä tavoin voidaan tunnistaa virheet aikaisessa vaiheessa ja tehdä monipuolisia ehdotuksia sisällöntuotannon aikana.

Polymorfisia tyyppejä tuetaan, mutta ennen kuin niitä voidaan käyttää, tyypit on kiinnitettävä staattiseen tyyppiin. Tämän tyypin on oltava tunnettu käännösajankohtana. IsType- ja AsType-funktiot ovat käytettävissä testaus- ja määritystyyppeinä.

Tyyppipäättely

Tyypit johdetaan niiden käytöstä ilman määrittämistä. Jos muuttujan arvoksi määritetään esimerkiksi numero, muuttujan tyypiksi määritetään numero.

Tyypin käytön ristiriidat aiheuttavat käännösaikavirheen.

Aluekohtaiset asetukset huomioon ottavat desimaalierottimet

Pistettä (.) käytetään desimaalierottimena joillain alueilla, kun taas toisilla alueilla käytetään pilkkua (,). Myös Excel toimii tällä tavoin. Tätä ei yleensä tehdä muilla ohjelmointikielillä, jotka käyttävät yleisesti kanonista pistettä (.) desimaalierottimena kaikille käyttäjille maailmanlaajuisesti. Jotta tekijät kaikilla tasoilla voivat käyttää erottimia, on tärkeää, että 3,14 on desimaaliluku ranskalaiselle, joka on käyttänyt tätä syntaksia koko elämänsä ajan.

Desimaalierottimen valita vaikuttaa myös luetteloerottimeen, jota käytetään funktion kutsuargumentissa, ja ketjutusoperaattorissa.

Tekijän kielen desimaalierotin Power Fx:n desimaalierotin Power Fx:n luetteloerotin Power Fx:n ketjutusoperaattori
. (piste) . (piste) , (pilkku) ; (puolipiste)
, (pilkku) , (pilkku) ; (puolipiste) ;; (kaksinkertainen puolipiste)

Lisätietoja: Yleinen tuki

Ei olioperusteinen

Excel ei ole objektipohjainen, eikä ole myöskään Power Fx. Joissakin kielissä esimerkiksi merkkijonon pituus ilmastaan merkkijonon ominaisuutena, kuten "Hello World".length JavaScriptissä. Excel ja Power Fx ilmaisevat tämän sen sijaan funktiona Len( "Hello World" ).

Komponentit, joilla on ominaisuuksia ja menetelmiä, ovat objektikeskeisiä, ja Power Fx toimii helposti niiden kanssa. Toimintatapa on kuitenkin funktionaalinen silloin, kun se on mahdollista.

Laajennettava

Tekijät voivat luoda komponentit ja toiminnot Power Fx:n avulla. Kehittäjät voivat luoda komponentteja ja funktioita kirjoittamalla JavaScriptiä.

Kehittäjälle sopiva

Vaikka tekijät ovat ensisijainen kohderyhmä, myös kehittäjät on otettu huomioon mahdollisuuksien mukaan. Toiminnot tehdään kehittäjän toivomalla tavalla, jos se ei ole ristiriidassa edellä kerrottujen suunnitteluperiaatteiden kanssa. Esimerkiksi Excelillä ei ole kapasiteettia lisätä kommentteja, joten käytämme C-kielen kaltaisia rivikommentteja ja tekstiin sidottuja kommentteja.

Kielen kehittyminen

Ohjelmointikielien muuttuminen on sekä välttämätöntä että hankalaa. Kaikki ovat oikeutetusti huolissaan siitä, että muutos – vaikkakin hyvää tarkoittava – voi rikkoa aiemmin luodun koodin ja edellyttää käyttäjiltä uuden mallin oppimista. Power Fx ottaa taaksepäin yhteensopivuuden huomioon, mutta olemme myös sitä mieltä, että aina ei saada toimintoja oikein ensimmäisellä kerralla, ja me yhdessä opimme, mikä on yhteisön mielestä parasta. On kehityttävä ja Power Fx on suunniteltu tukemaan kielen evoluutiota alusta alkaen.

Jokaisen tallennetun Power Fx -tiedoston mukana tulee kieliversion leima. Jos haluamme tehdä yhteensopimattoman muutoksen, kirjoitamme "yhteensopivuus taaksepäin -muuntajan". Se kirjoittaa kaavan automaattisesti uudelleen seuraavalla muokkauskerralla. Jos muutos on tärkeä, ja käyttäjät tarvitsevat sitä koskevaa opetusta, näkyviin tulee myös ohjelinkit sisältävä sanoma. Käyttämällä tätä mahdollisuutta voidaan yhä ladata sovellukset, jotka on luotu Power Appsin esiversioina useita vuosia sitten riippumatta siitä, että tämän jälkeen on tehty paljon muutoksia.

ShowError-funktio esimerkiksi otettiin käyttöön näyttämään virhepalkki, jolla on punainen tausta.

Virheen näyttäminen

Vaikka käyttäjät pitivät siitä, he pyysivät myös tavan, jolla onnistumispalkki (vihreä tausta) tai tietopalkki (sininen tausta) voitaisiin näyttää. Loimme yleisemmän funktion Notify, joka ottaa toisen argumentin tällaisille ilmoituksille. Olisimme voineet vain lisätä funktion Notify ja pitää funktion ShowError ennallaan. Sen sijaan korvasimme funktion ShowError funktiolla Notify. Poistimme funktion, joka oli aiemmin tuotannossa, ja korvasimme sen toisella. Tämä oltaisiin voitu tehdä kahdella eri tavalla, mutta se olisi voinut aiheuttaa sekaannusta erityisesti uusille käyttäjille ja tehdä toiminnoista aiempaa monimutkaisempia. Kukaan ei valittanut, kaikki arvostivat muutosta ja sitten siirryttiin seuraavan ilmoitustoimintoon.

Saman sovelluksen ulkoasu on seuraavanlainen, kun se ladataan Power Appsin uuteen versioon. Käyttäjältä ei vaadittu toimintoja tämän muutoksen suorituksessa. Se tapahtui automaattisesti sovelluksen avaamisen yhteydessä.

Funktio Notify korvaa funktion ShowError

Tämän toiminnon avulla Power Fx voi kehittyä nopeammin ja aggressiivisemmin kuin useimmat ohjelmointikielet.

Ei määrittämätöntä arvo

Joissakin kielissä, kuten JavaScriptissä, käytetään määrittämätön-arvon käsitettä muuttujissa, joita ei ole alustettu, tai puuttuvissa ominaisuuksissa. Olemme välttäneet tätä käsitettä, koska näin kieli pidetään yksinkertaisena. Ilmentymiä, jotka ovat määrittämättömiä muissa kielissä, käsitellään virheinä tai tyhjinä arvoina. Esimerkiksi kaikkien alustamattomien muuttujien alussa on tyhjä arvo. Tyhjää arvoa voi käyttää kaikissa tietotyypeissä.

Tietotyypit
Operaattorit ja tunnisteet
Taulukot
Muuttujat
Imperatiivinen logiikka
Yleinen tuki
Lausekekielioppi
YAML-kaavan kielioppi
Kaavat pohjaan perustuvissa sovelluksissa