Märkus.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida sisse logida või kausta vahetada.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida kausta vahetada.
Märkus.
Microsoft Power Fx on lõuendirakenduste valemikeele uus nimi. Need artiklid töötavad, kuna Microsoft ekstraktib keele lõuendirakendustest, integreerib selle teiste Microsoft Power Platform toodetega ja teeb selle kättesaadavaks open source. Alustage Microsoft Power Fx ülevaatega sissejuhatuseks keelde.
Microsoft Power Fx tabelid korraldavad andmed sellistest allikatest (nt Microsoft Excel, SharePoint ja SQL Server) pärinevateks kirjeteks, väljadeks ja veergudeks. Tutvuge nende struktuuridega, et kirjutada valemeid, mis pääsevad tabeliandmetele juurde, kujundavad ja manipuleerivad tõhusalt.
- Kirje sisaldab ühte või mitut liiki teavet isiku, koha või asja kohta. Näiteks võib kirje sisaldada ühe kliendi nime, meiliaadressi ja telefoninumbrit. Muud tööriistad viitavad kirjele, kui "reale" või "üksusele".
- Tabelis on üks või mitu sama liiki teavet sisaldavat kirjet. Näiteks võib tabeö sisaldada 50 kliendi nimesid, meiliaadresse ja telefoninumbreid.
Saate luua mitmesuguseid valemeid, mis kasutavad argumendina tabeli nime, samamoodi kui Excel kasutab argumentidena ühte või enamat lahtri viidet. Mõni valem tagastab Power Fxsis tabeli, mis kajastab teisi teie määratud argumente. Näiteks võite luua valemi järgmistel eesmärkidel.
- Kirje värskendamiseks tabelis, määrates selle tabeli üheks mitmest argumendist funktsioonile Paik
- tabeli veergude lisamiseks, eemaldamiseks ja ümbernimetamiseks, määrates selle tabeli argumendiks funktsioonidele AddColumns, DropColumns või RenameColumns. Ükski nendest funktsioonidest ei muuda algset tabelit. Selle asemel tagastab funktsioon uue tabeli, mis põhineb teistel teie määratud argumentidel.
Tabeli elemendid
Kirjed
Iga kirje sisaldab vähemalt ühte liiki teavet isiku, koha või asja kohta. Varasemas näites on ära toodud iga toote kirje (šokolaad, leib ja vesi) ning iga teabekategooria veerg (Hind, Vaba kogus ja Tellitav kogus).
Valemis saate viidata kirjele, mis on väljaspool tabeli konteksti, kasutades looksulgusid. Näiteks see kirje { Nimi: "Maasikad", hind: 7,99 } pole tabeliga seostatud. Pange tähele, et väljanimed nagu Nimi ja Hind, ei ole selles näites jutumärkides.
Väljad
Väli on kirjes üksik teave. Seda sorti välja saab kindla kirje veerus väärtusena visualiseerida.
Sarnaselt juhtelemendiga viitate kirje väljale, kasutades .tehtemärki kirjes. Näiteks First(Products).Name tagastab esimesele kirjele tabelis Tooted välja Nimi.
Väli võib sisaldada mõnda muud kirjet või tabelit, nagu näidatakse funktsiooni GroupBy näites. Soovi korral saate pesastada sellise arvu kirjete ja tabelite tasemeid kui soovite.
Veerud
Veerg viitab tabeli ühe või mitme kirje samale väljale. Eelmises näites on igal tootel hinnaväli ja see hind on kõigi toodete puhul samas veerus. Eelnevas tabelis on neli veergu, mis on horisontaalselt ülaosas:
- Nimi
- Hind
- Kogus laos
- Tellitud kogus
Veeru nimi kajastab selle veeru välju.
Kõik veerus olevad väärtused on samast andmetüübist. Eelnevas näites sisaldab veerg "Kogus käes" alati numbrit, kuid ei saa sisaldada stringi, näiteks "12 ühikut", ühe kirje jaoks. Mis tahes välja väärtus võib olla ka tühi.
Võib-olla nimetasid veerge teistes tööriistades "väljadeks".
Tabel
Tabel koosneb ühest või mitmest kirjest, millest igaühel on mitu välja, millel on üle kirjete ühtsed nimed.
Igal tabelil, mis on talletatud andmeallikas või kogumis, on nimi, mille abil saate viidata tabelile ja edastada See funktsioonidele, mis võtavad tabeleid argumentidena. Tabelis võivad olla ka funktsiooni või valemi tulemid.
Nagu järgmises näites, saate valemis tabelit väljendada, kasutades funktsiooni Tabel koos määratud kirjetega, mida väljendate looksulgudes.
Table( { Value: "Strawberry" }, { Value: "Vanilla" } )
Saate nurksulgudega määratleda ka ühe veeruga tabeli. Samaväärne võimalus kirjutada eespool toodut on järgmine.
[ "Strawberry", "Vanilla" ]
Tabeli valemid
Excelis ja Power Fxis kasutate arvude ja tekstistringide manipuleerimiseks valemeid või teksti sarnastel viisidel.
- Tippige Excelis väärtus, nagu 42, lahtrisse A1 ja seejärel tippige valem, nagu A1+2, teise lahtrisse, et kuvada väärtust 44.
- Power Appsis määrake Liugur1 atribuut vaikeväärtus väärtusele 42 ja määrake sildi atribuudi Tekst valemiks Slider1.Value + 2, et kuvada väärtust 44.
Mõlemal juhul muutub arvutatud väärtus automaatselt, kui muudate argumentide väärtusi (nt numbrit lahtris A1 või Liugur1 väärtust).
Samuti saate kasutada valemeid, et pääseda juurde ja manipuleerida tabelites ja kirjetes olevaid andmeid. Saate tabelite nimesid kasutada argumentidena mõnes valemis, näiteks nagu Min(Catalog, Price), et kuvada madalaimat väärtust tabeli Kataloog veerus Hind. Muud valemid annavad terve tabeli tagastatavate väärtustena nt RenameColumns(Catalog, "Price", "Cost"), mis tagastab kõik kirjed tabelist Kataloog, kuid muudab selle veeru Hind nimeks Maksumus.
Nagu numbritega, nii ka tabeleid ja kirjeid sisaldavad valemid arvutatakse automaatselt aluseks olevate tabeli või kirje muudatuste põhjal ümber. Kui toote kulu tabelis Kataloog langeb alla eelmise miinimumi, muudetakse valemi Min tagastatav väärtus automaatselt sellele vastavaks.
Tabeli funktsioonid ja juhtelemendi atribuudid
Arvestage Madalama funktsiooniga. Kui muutuja Tervitus sisaldab tekstistringi "Tere, maailm", siis valem Madalam (tervitus) tagastab "Tere, Maailm". See funktsioon ei muuda selle muutuja väärtust. Alumine on puhas funktsioon, kuna see töötleb ainult sisendit ja toodab väljundit. See on kõik; sellel pole kõrvaltoimeid. Kõik funktsioonid Excelis ja enamikud funktsioonid Power Fxis on puhtad funktsioonid, mis võimaldavad töövihikut või rakendust automaatselt ümber arvutada.
Power Fx pakub funktsioone, mis töötavad tabelites samal viisil. Need funktsioonid võtavad tabeleid sisendina ja filtreerivad, sorteerivad, teisendavad, vähendavad ja summeerivad terveid andmetabeleid. Tegelikult võib Madalam ja paljud teised funktsioonid, mis võtavad tavaliselt üksiku väärtuse, võtta sisendina ka ühe veeruga tabeli.
Paljude funktsioonide sisendiks on üheveeruline tabel. Kui kogu tabelis on ainult üks veerg, saate selle määrata nime järgi. Kui tabelis on mitu veergu, saate määrata ühe nendest veergudest, kasutades süntaksit Table.Column. Näiteks Products.Name tagastab ühe veeruga tabeli ainult Nime väärtustega tabelist Tooted.
Soovi korral saate tabelit täielikult ümber kujundada, kasutades funktsioone AddColumns, RenameColumns, ShowColumns või DropColumns. Jällegi, need funktsioonid muudavad ainult oma väljundit, mitte allikat.
Käitumise valemid
Muud funktsioonid on välja töötatud spetsiaalselt andmete muutmiseks ja kõrvaltoimete loomiseks. Kuna need funktsioonid ei ole puhtad, peate need hoolikalt üles ehitama ning nad ei saa osaleda rakenduses automaatselt väärtuste ümberarvutamisel. Neid funktsioone saate kasutada ainult käitumisvalemites.
Kirje ulatus
Mõned funktsioonid töötavad nii, et nad hindavad valemit kõigi tabeli kirjete vahel, üks kirje korraga. Valemi tulemit kasutatakse mitmel viisil.
- AddColumns – valem annab uue veeru väärtuse.
- Keskmine, Maks, Min, Summa, StandarddevP, VarP - Valem annab koondatava väärtuse.
- Filter, Otsing - Valem määrab, kas kirje peaks väljundisse kaasatama.
- Concat - Valem määrab stringid, mis omavahel ühendatakse.
- Eristuv - Valem tagastab väärtuse, mida kasutatakse duplikaatkirjete tuvastamiseks.
- Kõigile - Valem võib tagastada mis tahes väärtuse, millel võivad olla kõrvalmõjud.
- Sorteeri - Valem annab väärtuse, mille alusel kirjeid sortida.
- Koos - Valem võib tagastada mis tahes väärtuse, millel võivad olla kõrvalmõjud.
Nende valemite sees saate viidata töödeldava kirje väljadele. Kõik need funktsioonid loovad "kirje ulatuse", milles valemit hinnatakse, kus kirje väljad on saadaval kõrgeima taseme identifikaatoritena. Samuti saate kõikjal rakenduses viidata juhtelementide atribuutidele ja muudele väärtustele.
Vaadake näitena globaalsesse muutujasse paigutatavate toodete tabelit.
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 }
)
)
Kui soovite kindlaks teha, kas mõni neist toodetest on taotletud rohkem, kui on saadaval, tehke järgmist.
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
Esimene argument Filtreerimiseks on kirjete tabel, mida soovite kasutada, ja teine argument on valem. Filter loob selle valemi hindamiseks kirje ulatuse, milles on saadaval iga kirje väljad, antud juhul Toode, Taotletud kogus ja Saadaval olev kogus. Võrdluse tulemus määratleb, kas iga kirje tuleks kaasata funktsiooni tulemisse.
Sellesse näitesse lisades saate arvutada, kui palju igast tootest tellida:
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
Siin saate tulemile lisada arvutatud veeru. AddColumnsil on oma kirjeulatus, mida kasutatakse taotletud ja saadaoleva sisu erinevuse arvutamiseks.
Lõpuks saad tulemustabeli vähendada ainult soovitud veergudeks:
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Pange tähele, et eelnevates näidetes tuleb mõnes kohas kasutada jutumärke (") ja teistes kohtades üksikuid jutumärke ('). Kui objekti nimi sisaldab tühikut, on objekti väärtusele viitamisel (nt väljal või tabelis) vaja ühekordseid jutumärke. Kasutage jutumärke, kui te ei viita objekti väärtusele, vaid selle asemel räägime sellest, eriti olukordades, kus objekti veel pole, nagu näiteks AddColumnsi korral.
Ühtestamine
Kirjeulatusega lisatavad väljanimed alistavad samad nimed mujalt rakendusest. Selle alistamise korral pääsete siiski juurde kirjeulatusest väljaspool asuvatele väärtustele, kasutades @ selleks täpsustustehtemärki.
- Pesastatud kirjeulatuste väärtustele juurdepääsemiseks kasutage @ tehtemärki koos kasutatava tabeli nimega, järgides järgmist mustrit.
Tabel [@] Väljanimi ] - Globaalsetele väärtustele (nt andmeallikad, kogumid ja konteksti muutujad) juurdepääsuks kasutage mustrit [@ObjectName] (ilma tabeli määramiseta).
Kui tabel, mille kallal töötate, on avaldis,nt Filter(Tabel, ... ) ei saa kasutada ühemõttelist tehtemärki. Ainult sisemine kirjeulatus pääseb selle tabeliavaldise väljadele juurde, kui tehtemärki ei kasutata.
Oletagem näiteks, et teil on kogum X.
Selle kogumi saate luua funktsiooni ClearCollect( X, [1, 2] ) abil.
Ja teine kogum Y.
Selle kogumi loomiseks saate kasutada clearCollect( Y, ["A", "B"] ).
Lisaks määratlege konteksti muutuja nimega Väärtus selle valemi abil: UpdateContext( {Väärtus: "!"} )
Paneme selle kõik kokku. Selles kontekstis järgmine valem
Ungroup(
ForAll( X,
ForAll( Y,
Y[@Value] & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
toodab selle taebli.
Mis siin toimub? Funktsioon ForAll määratleb X-i kirjeulatuse , nii et pääsete protsessi käigus juurde iga kirje väljale Väärtus . Sellele pääseb ligi lihtsalt sõnaga Value või X[@Value]-ga.
Kõige sisemine ForAll-funktsioon määrab Y jaoks teise kirjeulatuse. Kuna selles tabelis on samuti väärtusväli määratletud, viitabväärtus siin Y kirje väljale, mitte enam X-i väljale. Xväärtuse väljale pääsemiseks pead kasutama pikemat versiooni koos täpsustusoperaatoriga.
Kuna Y on kõige sisemine kirjeulatus, ei vaja selle tabeli väljadele ligipääs täpsustamist, seega võid kasutada seda valemit sama tulemusega:
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
Kõik ForAll kirjete ulatused alistavad globaalse ulatuse. Väärtuskonteksti muutuja, mille sa määratlesid, ei ole nimepidi kättesaadav ilma täpsustusoperaatorita. Selle väärtuse avamiseks kasutage funktsiooni [@Value].
Tühista rühmitamine lamendab tulemuse, kuna see on pesastatud Kõigile funktsioonide tulemuseks on pesastatud tulemuste tabel.
Ühe veeruga tabelid
Ühe veeru kasutamiseks tahvelarvutiga kasutage funktsiooni ShowColumns, nii nagu käesolevas näites.
ShowColumns( Products, "Product" )
See valem toodab seda ühe veeruga tabeli..
Lühema alternatiivi korral määrake Tabel.Column, mis ekstraktib ühe veeruga tabeli lihtsalt TabeliVeerust. See valem toodab näiteks täpselt sama tulemit, mis ShowColumnsi kasutamine.
Products.Product
Tekstisisesed kirjed
Väljendate kirjeid kasutades looksulgi, mis sisaldavad nimega välja väärtusi. Näiteks saate esimest kirjet väljendada tabelis selle teema alguses, kasutades järgmist valemit.
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }
Valemeid saate manustada ka muudele valemitele, nagu selles näites on kuvatud.
{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }
Kirjete pesastamiseks on vaja pesastada looksulgi, nii nagu selles näites.
{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }
Ümbritsege iga veeru nimi, mis sisaldab erimärki (nt tühikut või koolonit), ülakomadega. Ühe hinnapakkumise kasutamiseks veeru nime piires topeltklõpsake seda.
Pange tähele, et väärtus veerus Hind ei sisalda valuutatähist, nagu näiteks dollarimärki. See vormindus rakendatakse, kui väärtus kuvatakse.
Tekstisisesed tabelid
Tabeli saate luua funktsiooni Tabel ja seadistatud kirjete abil. Saate väljendada tabelit selle teema alguses, kasutades järgmist valemit.
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 }
)
Samuti saate tabeleid pesastada.
Table(
{ Name: "Chocolate",
'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
{ Quarter: "Q2", OnHand: 18, OnOrder: 0 } )
}
)
Tekstisisesed väärtustabelid
Saate luua ühe veeruga tabeleid, määratledes nurksulgades olevad väärtused. Tulemuseks olevas tabelis on üks veerg nimega Väärtus.
Näiteks [ 1, 2, 3, 4 ] võrdub väärtusega Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) ja tagastab selle tabeli.