tabele,
Opomba
Microsoft Power Fx je novo ime za jezik formule za aplikacije s platnom. Ti članki so delo v teku, saj izvlečemo jezik iz aplikacij s platnom, ga integriramo z drugimi izdelki Microsoft Power Platform in damo na voljo odprtokodno. Začnite s člankom Pregled storitve Microsoft Power Fx za uvod v jezik.
V aplikaciji Microsoft Power Fx, lahko napišete formulo, ki dostopa do informacij v storitvah Microsoft Excel, SharePoint, SQL Server in več drugih virov, ki podatke shranjujejo v zapise in tabele. Za čim bolj učinkovito delo s takšnimi podatki si oglejte koncepte, na katerih temeljijo te strukture.
- Zapis vsebuje eno ali več kategorij informacij o osebi, kraju ali stvari. Zapis lahko na primer vsebuje ime, e-poštni naslov in telefonsko številko posamezne stranke. Druga orodja se nanašajo na zapis kot na »vrstico« ali »element«.
- Tabela vsebuje enega ali več zapisov, ki vsebujejo enake kategorije informacij. Tabela lahko na primer vsebuje imena, e-poštne naslove in telefonske številke 50 strank.
Zgradite lahko različne formule, ki ime tabele štejejo kot argument, tako kot formula v programu Excel kot argumente šteje eno ali več sklicev na celice. Nekatere formule v storitvi Power Fx vrnejo tabelo, ki odraža druge argumente, ki jih navedete. Na primer, ustvarite lahko formulo za:
- posodobitev zapisa v tabeli tako, da navedete tabelo kot enega od več argumentov za funkcijo Patch,
- dodajanje, odstranjevanje in preimenovanje stolpcev v tabeli tako, to tabelo navedete kot argument za funkcijo AddColumns, DropColumns ali RenameColumns. Nobena od teh funkcij ne spreminja izvirne tabele. Namesto tega funkcija vrne drugo tabelo na podlagi drugih argumentov, ki jih podate.
Vsak zapis vsebuje vsaj eno kategorij informacij za osebo, kraj ali stvar. Zgornji primer prikazuje zapis za vsak izdelek (Čokolada, Kruh in Voda) in stolpec za vsako kategorijo informacij (Cena, Količina na zalogi in Količina na naročilu).
V formuli se lahko sklicujete na sam zapis zunaj konteksta tabele tako, da uporabite zavite oklepaje. Na primer, ta zapis { Ime: "Jagode", cena: 7,99 } ni povezan s tabelo. Upoštevajte, da imena polj, kot sta Ime in Cena, v tem primeru niso zaprta z dvojnimi narekovaji.
Polje je posamezen podatek v zapisu. Takšno polje si lahko predstavljate kot vrednost v stolpcu za določen zapis.
Tako kot pri kontrolniku se na polje zapise sklicujete tako, da uporabite .operator v zapisu. Na primer, First(Products).Name vrne polje Ime za prvi zapis v tabeli Izdelki.
Polje lahko vsebuje še en zapis ali tabelo, kot prikazuje primer za funkcijo GroupBy. Ugnezdite lahko poljubno število ravni zapisov in tabel.
Stolpec se nanaša na enako polje za enega ali več zapisov v tabeli. V zgornjem primeru ima vsak izdelek polje za ceno, ki je za vse izdelke v enakem stolpcu. Zgornja tabela ima štiri stolpce, ki so prikazani vodoravno na vrhu:
- Ime
- Cena
- Količina na roki
- Količina po naročilu
Ime stolpca odraža polja v tem stolpcu.
Vse vrednosti v stolpcu so enake vrste podatkov. V zgornjem primeru stolpec "Količina na zalogi" vedno vsebuje številko in ne more vsebovati niza, kot je »12 enot«, za en zapis. Vrednost katerega koli polja je lahko tudi prazno.
V drugih orodij ste stolpce morda imenovali »polja«.
Tabela obsega enega ali več zapisov, pri čemer ima vsak več polj, ki imajo v vseh zapisih dosledna imena.
Vsaka tabela, ki je shranjena v vir podatkov ali zbirki, ima ime, ki ga uporabljate za sklicevanje na tabelo in posredovanje funkcijam, ki tabele sprejmejo kot argumente. Tabele so lahko tudi rezultat funkcije ali formule.
Kot je prikazano v naslednjem primeru, lahko tabelo v formuli izrazite s funkcijo Table z naborom zapisov, ki jih izrazite v zavitih oklepajih:
Table( { Value: "Strawberry" }, { Value: "Vanilla" } )
Z oglatimi oklepaji lahko ustvarite tudi tabelo z enim stolpcem. Enakovreden način zapisa za zgornjo formulo:
[ "Strawberry", "Vanilla" ]
V programu Excelu in storitvi Power Fx formule uporabljate za upravljanje številk in nizov besedila na podobne načine:
- V programu Excelu vnesite vrednost, kot je 42, v celico A1 in nato vnesite formulo, kot je A1 + 2, v drugo celico za prikaz vrednosti 44.
- V storitvi Power Apps nastavite lastnost Default za Slider1 na 42 in nastavite lastnost Text oznake na Slider1.Value + 2 za prikaz vrednosti 44.
V obeh primerih se izračunana vrednost samodejno spremeni, če spremenite vrednosti argumentov (na primer število v celici A1 ali vrednost Slider1).
Podobno lahko uporabite formule za dostop do podatkov in upravljanje z njimi v tabelah in zapisih. Imena tabel lahko uporabite kot argumente v nekaterih formulah, kot je Min(Catalog, Price), za prikaz najnižje vrednosti v stolpcu Cena v tabeli Katalog. Druge formule zagotavljanje celotne tabele kot vrnjene vrednosti, kot so RenameColumns(Catalog, "Price", "Cost"), ki vrne vse zapise iz tabele Katalog, spremeni pa ime stolpca Cena v Stroški.
Tako kot številke se tudi formule, ki vključujejo tabele in zapise, samodejno preračunajo kot osnovne tabele ali spremembe zapisa. Če se cena izdelka v tabeli Katalog spusti pod prejšnjo najnižjo vrednost, se bo vrnjena vrednost formule Min samodejno spremenila, da se bo ujemala.
Oglejmo si funkcijo Lower. Če spremenljivka welcome vsebuje besedilni niz "Hello, World", formula Lower( welcome) vrne "hello, world". Ta funkcija nikakor ne spremeni vrednosti v tej spremenljivki. Nižje je čista funkcija v tem, da obdeluje samo vhod in proizvaja izhod. To je vse, nima nobenih stranskih učinkov. Vse funkcije v programu Excel in večina funkcij v storitvi Power Fx so čiste funkcije, ki omogočajo samodejni izračun delovnega zvezka ali aplikacije.
Power Fx ponuja nabor funkcij, ki na tabele delujejo na enak način. Te funkcije tabele vzamejo kot vnos in filtrirajo, razvrščajo, preoblikujejo, zmanjšujejo in povzemajo celotne tabele podatkov. Funkcija Lower in številne druge funkcije, ki običajno vzamejo eno vrednost, lahko kot vnos vzamejo tudi tabelo z enim stolpcem.
Mnogo funkcij vzame tabelo z enim stolpcem kot vhodni podatek. Če ima celotna tabela samo en stolpec, jo lahko določite po imenu. Če ima tabela več stolpcev, lahko enega od teh stolpcev določite tako, da uporabite sintakso Table.Column. Products.Name na primer vrne tabelo z enim stolpcem samo za vrednosti Ime iz tabele Izdelki.
Če želite, lahko tabelo v celoti spremenite tako, da uporabite funkcije AddColumns, RenameColumns, ShowColumns ali DropColumns. Te funkcije spreminjajo samo izhodni element, ne pa tudi vira.
Druge funkcije so posebej zasnovane za spreminjanje podatkov in imajo stranske učinke. Ker te funkcije niso čiste, jih morate skrbno ustvariti in ne morejo sodelovati pri samodejnem preračunavanju vrednosti v aplikaciji. Te funkcije lahko uporabljate samo v formulah za delovanje.
Nekatere funkcije delujejo tako, da se ovrednotijo posamezno formulo v vseh zapisih tabele. Rezultat formule se uporablja na različne načine:
- Dodaj stolpce - Formula zagotavlja vrednost dodanega polja.
- Povprečje, maks, Min, vsota, StdevP, VarP - Formula zagotavlja vrednost za združevanje.
- Filter, Iskanje - Formula določa, ali naj bo zapis vključen v izhod.
- Concat - Formula določa nize, ki jih je treba združiti.
- Razločno - Formula vrne vrednost, ki se uporablja za prepoznavanje podvojenih zapisov.
- Za Vse - Formula lahko vrne katero koli vrednost, potencialno s stranskimi učinki.
- Razvrsti - Formula zagotavlja vrednost za razvrščanje zapisov.
- z - Formula lahko vrne katero koli vrednost, potencialno s stranskimi učinki.
V formulah lahko navajate polja zapisa, ki se obdeluje. Vsaka funkcija ustvari »obseg zapisa«, v katerem se formula ovrednoti, pri čemer so polja zapisa na voljo kot identifikatorji najvišje ravni. Kjer koli v aplikaciji se lahko sklicujete tudi na lastnosti kontrolnika in druge vrednosti.
Vzemite na primer tabelo Izdelki, umeščeno v globalno spremenljivko:
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 }
)
)
Če želite ugotoviti, ali je kateri od teh izdelkov zahteval več, kot je na voljo:
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
Prvi argument za Filter je tabela zapisov, ki jo je treba upravljati, in drugi argument je formula. Filter ustvari obseg zapisa za ovrednotenje te formule, v kateri so v tem primeru na voljo polja vsakega zapisa Izdelek, Zahtevana količina, in Razpoložljiva količina. Rezultat primerjave določa, ali naj bo vsak rezultat vključen v rezultat funkcije:
Če nadaljujemo s tem primerom, lahko izračunamo, koliko posameznega izdelka lahko naročimo:
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
Tukaj v rezultat dodamo izračunan stolpec. Dodaj stolpce ima lasten obseg zapisa, ki ga uporablja za izračun razlike med zahtevanim in razpoložljivim.
Na koncu lahko zmanjšamo tabelo rezultatov na samo stolpce, ki jih želimo:
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Upoštevajte, da smo v zgornjem primeru na nekaterih mestih uporabljali dvojne narekovaje ("), na nekaterih pa enojne narekovaje('). Enojne narekovaje je treba uporabiti pri sklicevanju na vrednost predmeta, na primer na polje ali tabelo, v katerih ime predmeta vsebuje presledek. Dvojni narekovaji se uporabljajo, kadar ne navedemo vrednosti predmeta, temveč o njem govorimo, zlasti v situacijah, kjer predmet še ne obstaja, npr. pri AddColumns.
Imena polj, dodana z obsegom zapisov, preglasijo enaka imena od drugod v aplikaciji. Ko se to zgodi, lahko do vrednosti še vedno dostopate zunaj obsega zapisov z operatorjem za @ razločitev:
- Za dostop do vrednosti iz ugnezdenih obsegov zapisov uporabite operator @ z imenom tabele, ki se upravlja s tem vzorcem:
Tabela [@ Ime polja ] - Za dostop do globalnih vrednosti, kot so viri podatkov, zbirke in spremenljivke konteksta, uporabite vzorec [@ObjectName] (brez oznake tabele).
Če je tabela, s katero se upravlja, izraz, kot je Filter (Table, ... ), operatorja za razveljavitev ni mogoče uporabiti. Samo najgloblji obseg zapisa lahko dostopa do polj iz tega izraza tabele, pri čemer ne uporablja operatorja za razločitev.
Predstavljajte si na primer zbirko X:
To zbirko lahko ustvarite tako, da uporabite ClearCollect( X, [1, 2] ).
Oglejmo si še zbirko Y:
To zbirko lahko ustvarite tako, da uporabite ClearCollect( Y, ["A", "B"] ).
Poleg tega določite spremenljivko konteksta z imenom Vrednost s to formulo: UpdateContext( {Value: "!"} )
Oglejmo si vse skupaj. V tem kontekstu se s to formulo:
Ungroup(
ForAll( X,
ForAll( Y,
Y[@Value] & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
ustvari ta tabela:
Kaj se dogaja? Zunanja funkcija ForAll določa obseg zapisa za X, ki omogoča dostop do polja Vrednost vsakega zapisa pri obdelavi. Do njega lahko preprosto dostopate tako, uporabite besedo Vrednost X[@ocena].
Najgloblja funkcija ForAll določil drug obseg zapisa za Y. Ker je za to tabelo določeno tudi polje Vrednost, se Vrednosti tukaj nanaša na polje v zapisu za Y in ne več na polje v zapisu za X. Tukaj je treba za dostop do polja Vrednost za X uporabiti daljšo različico z operatorjem za razločitev.
Ker je Y najgloblji obseg zapisa, za dostop do polj te tabele razločitev ni potrebna, kar nam omogoča uporabo te formule z enakim rezultatom:
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
Vsi obsegi razpisa ForAll preglasijo globalni obseg. Spremenljivka konteksta Vrednost, ki smo jo opredelili, ni na voljo po imenu brez operatorja za razločitev. Za dostop do te vrednosti uporabite [@Value].
Razdruži izravna rezultat, ker je ugnezden Za Vse funkcije povzročijo ugnezdeno tabelo rezultatov.
Za delovanje na en stolpec iz tabele uporabite funkcijo ShowColumns kot v tem primeru:
ShowColumns( Products, "Product" )
Ta formula ustvari to tabelo z enim stolpcem:
Za krajšo možnost navedite Table.Column, ki ekstrahira tabelo z enim stolpcem s samo Stolpec iz Tabela. Ta formula na primer ustvari popolnoma enak rezultat kot uporaba funkcije ShowColumns.
Products.Product
Zapise lahko izrazite z uporabo zavitih oklepajev, ki vsebujejo poimenovane vrednosti polja. Prvi zapis v tabeli lahko na primer izrazite na začetku te teme s to formulo:
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }
Formule lahko vdelate tudi v druge formule, kot prikazuje ta primer:
{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }
Zapise lahko ugnezdite tako, da ugnezdite zavite oklepaje, kot prikazuje ta primer:
{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }
Vsak stolpec, ki vsebuje poseben znak, na primer presledek ali dvopičje, vključite v enojne narekovaje. Če želite uporabiti enojni narekovaj v imenu stolpca, ga podvojite.
Upoštevajte, da vrednost v stolpcu Cena ne vključuje simbola valute, kot je znak dolarja. To oblikovanje bo uporabljeno, ko bo prikazana vrednost.
Tabelo lahko ustvarite s funkcijo Table in naborom zapisov. Tabelo lahko izrazite na začetku te teme s to formulo:
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 }
)
Tabele lahko tudi ugnezdite:
Table(
{ Name: "Chocolate",
'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
{ Quarter: "Q2", OnHand: 18, OnOrder: 0 } )
}
)
Tabele z enim stolpcem lahko ustvarite tako, da vrednosti navedete v oglatih oklepajih. Nastala tabela ima en stolpec z imenom Vrednost.
[ 1, 2, 3, 4 ]
je na primer enako Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } )
in vrne to tabelo: