Tabelid
Märkus
Microsoft Power Fx on lõuendirakenduste valemikeele uus nimi. Need artiklid on pooleli, kuna ekstraktime keele lõuendirakendustest, integreerime selle teiste Microsoft Power Platform toodetega ja teeme selle kättesaadavaks avatud allikana. Alustage Microsoft Power Fx ülevaatega sissejuhatuseks keelde.
Rakenduses Microsoft Power Fx saate kirjutada valemi, mis juurde pääseb teabele teenuses Microsoft Excel, SharePoint, SQL Server või teised allikad, mis talletavad andmeid kirjetes ja tabelites. Seda tüüpi andmetega kõige tõhusamalt töötamiseks vaadake üle nende struktuuride aluseks olevad kontseptsioonid.
- 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õned Power Fx-i valemid tagastavad 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. Ülaltoodud näites on kuvatud iga toote (šokolaad, leib ja vesi) kirje ja veerg iga teabekategooria kohta (hind, kogus laos ja tellimuse 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.
Nii nagu juhtelemendi puhul, viitate kirje väljale, kasutades kirjel funktsiooni . tehtemärki. 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. Eeltoodud näites on igal tootel hinna väli ja see hind on kõigi toodete jaoks samas veerus. Ülaltoodud tabelis on neli veergu, mis kuvatakse ülaosas horisontaalselt.
- Nimi
- Hind
- Kogus laos
- Kogus tellimuses
Veeru nimi kajastab selle veeru välju.
Kõik veerus olevad väärtused on samast andmetüübist. Eeltoodud näites on veerus "Kogus laos" alati arv, ja see ei tohi sisaldada stringi (nt "12 ühikut") ühe kirje jaoks. Mis tahes välja väärtus võib olla ka tühi.
Võimalik, et olete teistes tööriistades viidanud veergudele kui "väljad".
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 Fx-is saate valemeid kasutada arvude ja tekstistringidega manipuleerimiseks järgmistega 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 mingil viisil selle muutuja väärtust. Alumine on puhas funktsioon, kuna töötleb ainult sisendeid ja toodab väljundit. See on kõik; sellel pole kõrvaltoimeid. Kõik Exceli funktsioonid ja enamik Power Fx-i funktsioone on puhtad funktsioonid, mis võimaldavad töövihiku või rakenduse automaatselt ümber arvutada.
Power Fx pakub funktsioonide kogumeid, 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
Teatud funktsioonid töötavad, hinnates valemit kõigis tabeli kirjetes eraldi. Valemi tulemit kasutatakse erinevatel viisidel.
- AddColumns – valem annab lisatud välja väärtuse.
- Keskmine, Max, Min, SUM, StdevP, VARP – valem annab väärtuse koondamiseks.
- Filter, Otsing – valem määratleb, kas kirje tuleks väljundisse kaasata.
- Concat – valem määratleb stringid kokku ühendamiseks.
- Eristus – valem tagastab väärtuse, mida kasutatakse topeltkirjete tuvastamiseks.
- ForAll – valem võib tagastada mis tahes väärtuse, mis võib põhjustada kõrvaltoimeid.
- Sortimine – valem annab kirjete sortimiseks väärtuse.
- Koos – valem võib tagastada mis tahes väärtuse, mis võib põhjustada kõrvaltoimeid.
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 }
)
)
Et teha kindlaks, kas mõni nendest toodetest oli rohkem nõutud kui saadaval toimige järgmiselt.
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
Esimene argument Filtreerimiseks on kirjete tabel, mida soovite kasutada, ja teine argument on valem. Filter loob kirjete ulatuse selle valemi hindamiseks, kus iga kirje väljad on saadaval, antud juhul Toode, Nõutud kogus ja Saadaolev kogus. Võrdluse tulemus määratleb, kas iga kirje tuleks kaasata funktsiooni tulemisse.

Sellele näitele lisamisel saame arvutada, kui palju iga toodet tellitakse.
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
Siin lisame tulemusele arvutatud veeru. AddColumns omab oma kirjete ulatust, mida ta kasutab nõudluse ja saadaolevuse erinevuste arvutamiseks.

Lõpuks saame vähendada tulemuste tabelit ainult soovitud veergudeni.
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)

Pange tähele, et ülaltoodud osas kasutasime mõnes kohas jutumärke ja mõnes teises kohas semikoolonit ('). Semikoolonid on vajalikud objekti väärtusele viitamisel, näiteks väljale või tabelile, misjuhul objekti nimi sisaldab tühikut. Jutumärke kasutatakse juhul, kui me ei viita objekti väärtusele, vaid räägime sellest, eriti olukordades, kus objekti pole veel olemas, nagu AddColumns korral.
Ühtestamine
Kirje ulatusega lisatud väljade nimed tühistavad samad nimed mujal rakenduses. Kui nii juhtub, saate siiski pääseda väärtuste juurde väljaspoolt kirje ulatus, kasutades tehtemärki @ ühtestamine.
- Pesastatud kirje ulatustest väärtustele juurdepääsuks kasutage tehtemärki @ koos tabeli nimega, mida kasutatakse selle musti kasutamisel.
Table[@FieldName] - Globaalsetele väärtustele (nt andmeallikad, kogumid ja konteksti muutujad) juurdepääsuks kasutage mustrit [@ObjectName] (ilma tabeli määramiseta).
Kui arvutatav tabel on avaldis, näiteks nagu Filter( Tabel, ... ), siis ei saa ühtestamise tehtemärki kasutada. Ainult sisima kirje ulatus pääseb sellele tabeli avaldise väljadele juurde ühtestamise tehtemärki mitte kasutades.
Näiteks kujutage ette, et teil on kogumik X:

Saate selle kogumi luua atribuudiga ClearCollect (X, [1, 2] ).
Ja teine kogum Y.

Saate selle kogumi luua atribuudiga 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? Funktsiooni äärepoolseim funktsioon ForAll määratleb X kirje ulatuse, võimaldades juurdepääsu iga kirje väljale Väärtus, kui seda töödeldakse. Seda saab kasutada lihtsalt sõna Väärtus abol või kasutades väärtust X[@Value].
Rakenduse kõige sisemisem funktsioon ForAll määratleb teise kirje ulatus Y jaoks. Kuna sellel tabelil on ka Väärtuse väli määratletud, kasutades siin Väärtust viidatakse Y-i kirjele ja mitte enam ühele kirjest X . Selleks, et pääseda X i väärtuse väljale, peame kasutama pikemat versiooni koos ühitamise tehtemärgiga.
Kuna Y on kõige sisemise kirje ulatus, ei nõua juurdepääs selle tabeli väljadele ühitamist ja võimaldab meil kasutada seda valemit sama tulemusega.
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
Kõik ForAll kirjete ulatused alistavad globaalse ulatuse. Konteksti muutuja Väärtus, mille määratlesime, ei ole saadaval ning on nime järgi ilma allkasutajata. Selle väärtuse avamiseks kasutage funktsiooni [@Value].
Tühista rühmitamine tasandab tulemi, kuna pesastatud funktsioonid ForAll põhjustavad peastunud tulemustetabeli.
Ü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 Tabeli Veerust. 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 vorming rakendatakse väärtuse kuvamisel.
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.
