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.
Muistiinpano
Microsoft Power Fx on pohjaan perustuvien sovellusten kaavakieli. Näitä artikkeleita käsitellään parhaillaan, kun Microsoft poimii kielen pohjaan perustuvista sovelluksista, integroi sen muihin Microsoft Power Platform tuotteisiin ja tuo sen saataville avoin lähdekoodi. Aloita kielen esittelyn Microsoft Power Fx:n yleiskatsaus.
Microsoft Power Fx -taulukot järjestävät tiedot tietueiksi, kentiksi ja sarakkeiksi lähteistä, kuten Microsoft Excel, SharePoint ja SQL Server. Tutustu näihin rakenteisiin ja kirjoita kaavoja, jotka käyttävät, muotoilevat ja käsittelevät taulukkomuotoisia tietoja tehokkaasti.
- Tietue sisältää yhden tai useamman tietoluokan, joka koskee henkilöä, paikkaa tai asiaa. Tietue voi esimerkiksi sisältää yksittäisen asiakkaan nimen, sähköpostiosoitteen ja puhelinnumeron. Muut työkalut viittaavat tietueeseen termillä ”rivi” tai ”kohde”.
- Taulukko sisältää yhden tai useampia tietueita, jotka sisältävät samat tietoluokat. Taulukko saattaa esimerkiksi sisältää 50 asiakkaan nimet, sähköpostiosoitteet ja puhelinnumerot.
Voit luoda erilaisia kaavoja, joille taulukon nimi annetaan argumenttina samalla tavoin kuin Excelissä olevalle kaavalle annetaan yksi tai useampi soluviittaus argumentteina. Jotkin Power Fxin kaavat palauttavat taulukon, joka kuvastaa muita argumentteja, joita sinä määrität. Voit luoda kaavan esimerkiksi:
- päivittämään taulukossa olevan tietueen siten, että kyseinen taulukko määritetään yhdeksi Patch-funktion useista argumenteista
- lisäämään, poistamaan ja nimeämään uudelleen taulukon sarakkeita siten, että kyseinen taulukko määritetään argumentiksi AddColumns-, DropColumns- tai RenameColumns-funktiolle. Mikään näistä funktioista ei muokkaa alkuperäistä taulukkoa. Sen sijaan funktio palauttaa toisen taulukon määrittämiesi argumenttien perusteella.
Taulukon osat
Tietueet
Kukin tietue sisältää vähintään yhden henkilön, sijainnin tai asian tietoluokan. Esimerkissä näkyy tietue kullekin tuotteelle (suklaa, leipä ja vesi) ja sarake kullekin tietoluokalle (Hinta, Saatavilla oleva määrä ja Tilattu määrä).
Jos haluat viitata kaavassa johonkin tietueeseen yksinään taulukon kontekstin ulkopuolella, voit käyttää aaltosulkeita. Esimerkiksi tietuetta { Nimi: "Mansikat", Hinta: 7.99 } ei ole liitetty taulukkoon. Huomaa, että kyseisessä esimerkissä olevat kenttien nimet, kuten Nimi ja Hinta, eivät ole lainausmerkeissä.
Kentät
Kenttä on yksittäinen tieto-osio tietueessa. Voit määrittää tämän tyyppisen kentän näkymään arvona tietyssä tietueessa olevassa sarakkeessa.
Samoin kuin ohjausobjektin osalta tietueen kenttään viitataan käyttämällä tietueessa .-operaattoria. Esimerkiksi First(Tuotteet).Nimi hakee Nimi-kentän sisällön Tuotteet-taulukon ensimmäiseen tietueeseen.
Kenttä voi sisältää toisen tietueen tai taulukon, kuten esimerkki GroupBy-funktiosta esittää. Voit asettaa sisäkkäin niin monta tieto- ja taulukkotasoa kuin haluat.
Sarakkeet
Sarake viittaa kenttään, joka on yhteinen taulukon tietueessa oleville tietueille. Edellisessä esimerkissä kullakin tuotteella on hintakenttä, ja kaikkien tuotteiden hinta on samassa sarakkeessa. Edellisessä taulukossa on neljä saraketta, jotka näytetään vaakasuunnassa yläreunassa:
- Nimi
- Hinta
- Käytettävissä oleva määrä
- Tilattu määrä
Sarakkeen nimi kuvastaa kyseisen sarakkeen kenttiä.
Kaikki sarakkeen arvot ovat samaa tietotyyppiä. Edellisessä esimerkissä "Käytettävissä oleva määrä" -sarake sisältää aina luvun, eikä se voi sisältää merkkijonoa, kuten "12 yksikköä", yhdelle tietueelle. Minkä tahansa kentän arvo voi olla myös tyhjä.
Olet ehkä kutsunut sarakkeita "kentiksi" muissa työkaluissa.
Taulukko
Taulukko koostuu yhdestä tai useammasta tietueesta, ja jokaisessa tietueessa on useita kenttiä. Kenttien nimet ovat yhdenmukaisia kaikissa tietueissa.
Kaikilla tietolähteeseen tai kokoelmaan tallennetuilla taulukoilla on nimi, jolla käyttäjä viittaa taulukkoon. Tämä nimi annetaan funktioon argumenttina. Taulukkoja voidaan saada myös funktion tai kaavan tuloksena.
Seuraavassa esimerkissä taulukko ilmaistaan kaavassa käyttämällä Table-funktiota, ja funktion tietojoukko ilmaistaan aaltosulkeilla:
Table( { Value: "Strawberry" }, { Value: "Vanilla" } )
Voit myös määrittää yksisarakkeisen taulukon käyttämällä hakasulkeita. Edellisen kaavan voi kirjoittaa myös näin:
[ "Strawberry", "Vanilla" ]
Taulukkokaavat
Excelissä ja Power Fxissa käytetään kaavoja, joilla käsitellään numeroita ja tekstimerkkijonoja samalla tavoin:
- Kirjoita Excelissä soluun A1 arvo 42, ja kirjoita sitten toiseen soluun kaava A1 + 2. Näkyviin tulee arvo 44.
- Määritä Power Appsissa Slider1:n Oletus-ominaisuudeksi 42, ja määritä selitteen Teksti-ominaisuudeksi Slider1.Value + 2, jolloin näkyviin tulee arvo 44.
Kummassakin tapauksessa laskettu arvo muuttuu automaattisesti, jos muutat argumenttien arvoja (esimerkiksi numeroa solussa A1 tai Slider1:n arvoa).
Samalla tavoin voit käyttää kaavoja taulukoissa ja tietueissa olevien tietojen käyttöönottoon ja käsittelyyn. Voit käyttää taulukoiden nimiä argumentteina joissakin kaavoissa. Esimerkiksi käyttämällä kaavaa Min(Tuoteluettelo, Hinta) voit näyttää Tuoteluettelo-taulukon pienimmän arvon Hinta-sarakkeessa. Lisäksi on kaavoja, jotka tarjoavat palautusarvoina kokonaisia taulukkoja. Esimerkiksi RenameColumns(Tuoteluettelo, "Hinta", "Kustannus")-kaava palauttaa kaikki tietueet Tuoteluettelo-taulukosta, mutta muuttaaHinta-sarakkeen nimeksi Kustannus.
Numeroiden tavoin myös taulukkoihin ja tietueisiin liittyvät kaavat lasketaan automaattisesti uudelleen, jos niiden pohjana oleva taulukko tai tietue muuttuu. Jos Tuoteluettelo-taulukossa olevan tuotteen aiheuttama kustannus laskee edellistä vähimmäisarvoa pienemmäksi, Min-kaavan palautusarvo muuttuu automaattisesti tätä vastaavaksi.
Taulukkofunktiot ja ohjausobjektien ominaisuudet
Harkitse Lower-funktiota. Jos muuttuja welcome sisältää tekstimerkkijonon "Hello, World", kaava Lower( welcome ) palauttaa arvon "hello, world". Tämä funktio ei muuta kyseisen muuttujan arvoa. Lower on puhdas funktio, koska se käsittelee vain syötteitä ja tuottaa tulosteita. Siinä kaikki; sillä ei ole sivuvaikutuksia. Kaikki Excelin toiminnot ja useimmat Power Fxin toiminnot ovat puhtaita funktioita, joiden avulla työkirja tai sovellus voidaan laskea uudelleen automaattisesti.
Power Fx sisältää joukon toimintoja, jotka toimivat taulukoille samalla tavalla. Nämä toiminnot ottavat taulukot syötteinä ja suodattavat, lajittelevat, muuntavat, vähentävät ja tekevät yhteenvetoja kokonaisista tietotaulukoista. Itse asiassa Lower ja monet muut toiminnot, jotka yleensä ottavat vastaan yksittäisen arvon, voivat myös ottaa vastaan yksisarakkeisen taulukon syötteenä.
Monet funktiot käyttävät lähteenä yksisarakkeita taulukkoa. Jos koko taulukossa on vain yksi sarake, voit määrittää sen nimen mukaan. Jos taulukossa on useita sarakkeita, voit määrittää yhden näistä sarakkeista käyttämällä Table.Column-syntaksia. Esimerkiksi Products.Name palauttaa yksisarakkeisen taulukon, jossa on vain Name-arvot Products-taulukosta.
Taulukon voi muotoilla kokonaan uudelleen käyttämällä AddColumns-, RenameColumns-, ShowColumns- tai DropColumns-funktiota. Myös nämä toiminnot muuttavat vain tulosta, ei niiden lähdettä.
Toimintakaaviot
Muut toiminnot on suunniteltu erityisesti muuttamaan tietoja ja niillä on sivuvaikutuksia. Koska nämä toiminnot eivät ole puhtaita, ne on rakennettava huolellisesti, eivätkä ne voi osallistua sovelluksen arvojen automaattiseen uudelleenlaskentaan. Näitä funktioita voidaan käyttää vain toimintakaavoissa.
Tietueen vaikutusalue
Jotkin funktiot toimivat arvioimalla kaavan kaikissa taulukon tietueissa yksi tietue kerrallaan. Kaavan tulosta käytetään eri tavoilla:
- AddColumns – antaa arvon uudelle sarakkeelle.
- Average, Max, Min, Sum, StdevP, VarP – nämä määritteet antavat koostearvon.
- Filter, Lookup – määrittää, sisällytetäänkö tietue tulokseen.
- Concat – määrittää merkkijonot, jotka yhdistetään.
- Distinct – palauttaa arvon, jolla tunnistetaan tietueiden kaksoiskappaleet.
- ForAll – voi palauttaa minkä tahansa arvon, ja sillä voi olla sivuvaikutuksia.
- Sort – antaa arvon, jonka mukaan tietueita lajitellaan.
- With – voi palauttaa minkä tahansa arvon, ja sillä voi olla sivuvaikutuksia.
Näiden kaavojen sisällä voit viitata käsiteltävänä olevan tietueen kenttiin. Kaikki nämä funktiot luovat ”tietueen vaikutusalueen”, jossa kaava lasketaan ja tietueen kentät ovat käytettävissä ylimmän tason tunnisteina. Voit viitata myös ohjausobjektien ominaisuuksiin ja muihin arvoihin kaikkialla sovelluksessa.
Käytetään esimerkkinä yleiseen muuttujaan sijoitettua Tuotteet-taulukkoa.
Set( Products,
Table(
{ Product: "Widget", 'Quantity Requested': 6, 'Quantity Available': 3 },
{ Product: "Gadget", 'Quantity Requested': 10, 'Quantity Available': 20 },
{ Product: "Gizmo", 'Quantity Requested': 4, 'Quantity Available': 11 },
{ Product: "Apparatus", 'Quantity Requested': 7, 'Quantity Available': 6 }
)
)
Voit selvittää, onko mitään näitä tuotteita pyydetty enemmän kuin niitä on saatavana:
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
Filter-kaavan ensimmäinen argumentti on käsiteltävänä oleva tietuetaulukko, ja toinen argumentti on kaava. Filter-kaava luo tietueen vaikutusalueen, jonka perusteella määritetään tämä kaava, jossa kunkin tietueen kentät ovat käytettävissä. Tässä tapauksessa näitä kenttiä ovat Tuote, Pyydetty määrä ja Käytettävissä oleva määrä. Vertailun tulos määrittää, sisällytetäänkö kukin tietue funktion tulokseen:
Lisäämällä tähän esimerkkiin voit laskea, kuinka paljon kutakin tuotetta on tilattava:
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
Tässä lisäät tulokseen lasketun sarakkeen. AddColumns-ominaisuudella on oma tietuealueensa, jonka avulla se laskee pyydettyjen ja saatavana olevien tietojen välisen eron.
Lopuksi voit pienentää tulostaulukon niin, että se sisältää vain haluamasi sarakkeet:
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Huomaa, että edellisissä esimerkeissä käytät joissakin paikoissa lainausmerkkejä (") ja toisinaan heittomerkkejä ('). Heittomerkkejä on käytettävä viitattaessa objektin arvoon, kuten kenttään tai taulukkoon, jos objektin nimessä on välilyönti. Käytä lainausmerkkejä, kun et viittaa objektin arvoon, vaan sen sijaan puhut siitä. Tämä koskee erityisesti tilanteita, joissa objektia ei vielä ole, kuten AddColumns-funktion tapauksessa.
Selvitys
Tietuealueen yhteydessä lisäämäsi kenttien nimet ohittavat samat nimet, jotka ovat peräisin muualta sovelluksesta. Kun tämä ohitus tapahtuu, voit edelleen käyttää arvoja tietuealueen ulkopuolelta käyttämällä @ selvitysoperaattoria :
- Voit käyttää sisäkkäisten tietuealueiden arvoja käyttämällä @ -operaattoria käyttämäsi taulukon nimellä tämän mallin mukaisesti:
Table[@FieldName] - Voit käyttää yleisiä arvoja, kuten tietolähteitä, kokoelmia ja kontekstimuuttujia, esittämällä ne mallin [@ObjectName] mukaisesti (ilman taulukon määritystä).
Jos taulukko, jota käytät, on lauseke, kuten Filter(Table, ... ), et voi käyttää selvitysoperaattoria. Vain sisin tietuealue voi käyttää kenttiä tästä taulukkolausekkeesta ilman selvitysoperaattoria.
Kuvitellaan esimerkiksi, että sinulla on kokoelma X:
Voit luoda tämän kokoelman käyttämällä kaavaa ClearCollect( X, [1, 2] ).
Ja toinen kokoelma Y:
Voit luoda tämän kokoelman käyttämällä kaavaa ClearCollect( Y, ["A", "B"] ).
Määritä lisäksi kontekstimuuttuja, jonka nimi on Value käyttämällä tätä kaavaa: UpdateContext( {Value: "!"} )
Kootaan nyt kaikki tiedot yhteen. Tässä kontekstissa seuraava kaava:
Ungroup(
ForAll( X,
ForAll( Y,
Y[@Value] & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
tuottaa tämän taulukon:
Mitä tapahtui? Uloin ForAll-funktio määrittää tietuealueen X:lle, joten voit käyttää kunkin tietueen Arvo-kenttää sen prosessoitaessa. Voit käyttää sitä sanalla Arvo tai käyttämällä X[@Value]-sanaa.
Sisin ForAll-funktio määrittää toisen tietuealueen Y:lle. Koska myös tässä taulukossa on määritettynä Arvo-kenttä , Arvo-kentän käyttäminen tässä viittaa Y:n tietueessa eikä enää X:n tietueessa olevaa kenttään. Jos haluat käyttää X:n Arvo-kenttää , sinun on käytettävä pidempää versiota selvitysoperaattorilla.
Koska Y on alueen sisin tietuealue, tämän taulukon kenttien käyttäminen ei edellytä selvitystä, joten voit käyttää tätä kaavaa ja samaa tulosta:
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
Kaikki ForAll-tietuealueet ohittavat yleisen vaikutusalueen. Määrittämäsi Arvo-kontekstimuuttuja ei ole käytettävissä nimen mukaan ilman selvitysoperaattoria. Voit käyttää tätä arvoa kirjoittamalla [@Value].
Ungroup tasoittaa tuloksen, koska sisäkkäiset ForAll-funktiot tuottavat sisäkkäisen tulostaulukon.
Yksisarakkeiset taulukot
Jos haluat käyttää yhtä saraketta taulukosta, käytä ShowColumns-funktiota kuten tässä esimerkissä:
ShowColumns( Products, "Product" )
Tämä kaava tuottaa yhden sarakkeen taulukon:
Lyhyempänä vaihtoehtona voit määrittää Table.Column, joka poimii yksisarakkeisen taulukon kohteen Table sarakkeesta Column. Tämä kaava tuottaa esimerkiksi täsmälleen saman tuloksen kuin ShowcColumns.
Products.Product
Sidotut tietueet
Tietueita ilmaistaan aaltosulkeilla, jotka sisältävät nimetyt kenttäarvot. Voit esimerkiksi ilmaista tämän ohjeaiheen alussa olevan taulukon ensimmäisen tietueen käyttämällä seuraavaa kaavaa:
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }
Voit myös upottaa kaavoja muihin kaavoihin tämän esimerkin mukaan:
{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }
Voit sijoittaa tietueita sisäkkäin käyttämällä aaltosulkeita sisäkkäin tämän esimerkin mukaisesti:
{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }
Lisää heittomerkkien sisään jokainen sarakkeen nimi, joka sisältää erikoismerkin, kuten välilyönnin tai kaksoispisteen. Kun haluat käyttää heittomerkkiä sarakkeen nimen sisällä, tuplaa se.
Huomaa, että Hinta-sarakkeessa oleva arvo ei sisällä valuuttasymbolia, kuten dollarimerkkiä. Kyseinen muotoilu otetaan käyttöön, kun arvo näytetään.
Sidotut taulukot
Voit luoda taulukon käyttämällä Table-funktiota ja tietuejoukkoa. Voit ilmaista tämän ohjeaiheen alussa olevan taulukon käyttämällä seuraavaa kaavaa:
Table(
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
{ Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
{ Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 }
)
Voit myös asettaa taulukkoja sisäkkäin:
Table(
{ Name: "Chocolate",
'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
{ Quarter: "Q2", OnHand: 18, OnOrder: 0 } )
}
)
Sidotut arvotaulukot
Voit luoda yksisarakkeisia taulukkoja määrittämällä arvot hakasulkeisissa. Tuloksena saatavassa taulukossa on yksittäinen sarake, jonka nimi on Value.
Esimerkiksi [ 1, 2, 3, 4 ] vastaa Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) ja palauttaa tämän taulukon: