Taulak
Oharra
Microsoft Power Fx formula hizkuntzaren mihise aplikazioen izen berria da. Artikulu hauek egiten ari diren lana dira, mihise aplikazioetatik hizkuntza atera eta beste batzuekin integratzen baitugu Microsoft Power Platform produktuak eta eskuragarri jarri kode ireki gisa. Hasi Microsoft Power Fx ikuspegi orokorra hizkuntzaren aurkezpenerako.
Hurrengoan Microsoft Power Fx, informazioan sartzen den formula bat idatz dezakezu Microsoft Excel, SharePoint, SQL Server eta datuak erregistro eta tauletan gordetzen dituzten beste hainbat iturri. Era honetako datuekin modu eraginkorrenean lan egiteko, berrikusi egitura horien azpian dauden kontzeptuak.
- Erregistro batek pertsona, leku edo gauza bati buruzko informazio kategoria bat edo gehiago biltzen ditu. Adibidez, erregistro batek izena, helbide elektronikoa eta bezero bakar baten telefonoa izan ditzake. Beste tresna batzuek erregistro bat aipatzen dute "errenkada" edo "elementu gisa."
- Taula batek informazio kategoria bera duten erregistro bat edo gehiago ditu. Adibidez, taula batek izenak, helbide elektronikoak eta 50 bezeroen baten telefonoak izan ditzake.
Taula baten izena argumentu gisa hartzen duten hainbat formula eraiki ditzakezu, Excel-en formula batek gelaxka-erreferentzia bat edo gehiago argumentu gisa hartzen duen bezala. Formula batzuk Power Fx itzul ezazu zuk zehaztutako gainerako argumentuak islatzen dituen taula. Adibidez, formula bat sor dezakezu:
- Taulan erregistro bat eguneratzeko, taula hori argumentu anitzetako bat dela zehaztuz adabakia Funtzio
- Taulan zutabeak gehitu, kendu eta berrizendatzeko, taula hori argumentu gisa zehaztuz AddColumns, DropColumns, edo RenameColumns funtzioa. Funtzio horietako batek ez du jatorrizko taula aldatzen. Horren ordez, funtzioak beste taula bat itzultzen du zuk zehaztutako beste argumentuetan oinarrituta.
Erregistro bakoitzak pertsona, gutxienez leku edo gauza bati buruzko informazio kategoria bat edo gehiago biltzen ditu. Goiko adibidean produktu bakoitzaren erregistroa erakusten da (Txokolatea, ogia, eta Ura) eta zutabe bat informazio-kategoria bakoitzerako (Prezioa, Eskuz kantitatea, eta Eskaria kantitatea).
Formula batean, erregistro bati erreferentzia egin diezaiokezu, mahaiaren testuingurutik kanpo, giltza lokarriak erabiliz. Adibidez, disko hau { Izena: "Marrubiak", Prezioa: 7.99 } ez dago taula batekin lotuta. Kontuan izan eremu izenak, adibidez izena eta Prezioa adibide horretan, ez dira komatxo bikoitzetan sartzen.
Eremu bat erregistro bateko informazio pieza bat da. Eremu hau mota bat ikus dezakezu erregistro jakin baterako zutabe batean.
Kontrol baten antzera, erreferentzia egin eremu bati erregistro batean erabilita .operadorea erregistroan. Adibidez, Lehenengoa(produktuak).Name itzultzen du izena eremuan lehenengo erregistrorako Produktuak mahaia.
Eremu batek beste erregistro edo taula bat izan dezake, adibide gisa hautatutako funtzioak erakusten ditu. Erregistroak eta taulak nahi adina maila habia ditzakezu.
Zutabe batek eremu berdina aipatzen du taula bateko erregistro bat edo gehiago egiteko. Goiko adibidean, produktu bakoitzak prezioen eremua du, eta prezio hori zutabe berean dago produktu guztientzat. Goiko taulak lau zutabe ditu horizontalki goiko aldean agertzen direnak:
- Izena
- Prezioa
- Eskura dagoen kantitatea
- Eskaeran dagoen kantitatea
Zutabearen izenak zutabe horretako eremuak islatzen ditu.
Zutabe bateko balio guztiak datu mota berekoak dira. Goiko adibidean, "Kantitatea Eskuan" zutabeak beti dauka zenbaki bat eta ezin du kateik eduki, esaterako "12 unitate", erregistro baterako. Edozein eremuen balioa ere izan daiteke hutsik.
Baliteke zutabeak "tresna" aipatzea beste tresna batzuetan.
Taula bat erregistro bat edo gehiago biltzen dira, bakoitza erregistroetan izen koherenteak dituzten eremu anitz.
datu-iturburu edo bilduma batean gordetako edozein taulak izen bat du, mahaiari erreferentzia egiteko eta taulak argumentu gisa hartzen dituzten funtzioetara pasatzeko erabiltzen duzun izena. Taulak funtzio edo formula baten emaitza ere izan daitezke.
Hurrengo adibidean bezala, formula batean taula adieraz dezakezu Taula funtzio parentesi artean adierazten duzun erregistro multzo batekin:
Table( { Value: "Strawberry" }, { Value: "Vanilla" } )
Zutabe bakarreko taula parentesi karratuekin ere defini dezakezu. Goiko idazteko modu baliokidea:
[ "Strawberry", "Vanilla" ]
Excel-en eta Power Fx, formulak erabiltzen dituzu testu zenbakiak eta kateak modu desberdinetan manipulatzeko:
- Excel-en, idatzi balio bat, adibidez 42, gelaxkan A1 eta, ondoren, idatzi formula bat, adibidez A1 + 2, beste gelaxka batean balioa erakusteko 44.
- Power Apps-en, ezarri Lehenetsia ondasunak slider1 42 eta ezarri Testua etiketa baten jabetza Slider1.Value + 2 balioa erakusteko 44.
Bi kasuetan, kalkulatutako balioa automatikoki aldatzen da argumentuen balioak aldatzen badituzu (adibidez, gelaxkako zenbakia A1 edo balioa slider1).
Era berean, datuak tauletan eta erregistroetan sartzeko eta manipulatzeko formulak erabil ditzakezu. Taulen izenak argumentu gisa erabil ditzakezu zenbait formulatan, adibidez Min (Katalogoa, Prezioa) balio txikiena erakusteko Prezioa zutabe honen katalogoa mahaia. Beste formula batzuek taula osoak ematen dituzte itzulketa-balio gisa, adibidez RenameColumns (Katalogoa, "Prezioa", "Kostua"), erregistro guztiak fitxategi honetatik itzultzen ditu katalogoa baina taularen izena aldatzen du Prezioa zutabeari kostua.
Zenbakiekin gertatzen den bezala, taulak eta erregistroak biltzen dituzten formulak automatikoki berriro kalkulatuko dira azpiko taula edo erregistro aldaketak bezala. Produktu baten kostua baldin badago katalogoa taula aurreko minimoaren azpitik dago; itzuleraren balioa Gutxienezko formula automatikoki aldatuko da honekin bat etor dadin.
Demagun Baxuagoa funtzioa. Aldagaia bada ongietorri testu katea dauka "Kaixo Mundua", formula Behera (ongi etorria) itzultzen "Kaixo Mundua". Funtzio honek ez du inolaz ere aldagai horren balioa aldatzen. Lower funtzio hutsa da, sarrera soilik prozesatzen baitu eta irteera sortzen du. Hori da dena; ez du bigarren mailako eraginik. Funtzio guztiak Excel-en eta funtzio gehienetan Power Fx funtzio hutsak dira, lan-koadernoa edo aplikazioa automatikoki berriro kalkulatzeko aukera ematen dutenak.
Power Fx mahaietan funtzionatzen duten funtzioen multzoa eskaintzen du. Funtzio hauek taulak sarrera gisa iragazi eta iragazi, ordenatu, eraldatu, murriztu eta laburbiltzen dituzte. Izan ere, Baxuagoa eta balio bakarra hartzen duten beste funtzio askok zutabe bakarreko taula ere har dezakete sarrera gisa.
Funtzio askok zutabe bakarreko taula hartzen dute sarrera gisa. Taula osoak zutabe bakarra badu, izenaren arabera zehaztu dezakezu. Taulak zutabe bat baino gehiago badu, zutabe horietako bat zehaztu dezakezu erabiliz Table.Column sintaxia. Adibidez, Products.Name zutabe bakarreko taula itzultzen du izena balioak Produktuak mahaia.
Taula guztiz aldatu dezakezu, hala ere nahi duzunarekin AddColumns, RenameColumns, ShowColumns, edo DropColumns funtzioa. Berriz ere, funtzio horiek beren irteera soilik aldatzen dute, ez beren iturria.
Beste funtzio batzuk datuak aldatzeko eta bigarren mailako efektuak dituzte bereziki diseinatuta daude. Funtzio horiek hutsak ez direnez, kontu handiz eraiki behar dituzu eta ezin dute aplikazioko balioak automatikoki birkalkulatu. Funtzio horiek barruan bakarrik erabil ditzakezu portaera-formulak.
Zenbait funtzioak taula baten erregistro guztietan formula bat ebaluatzen dute banan-banan. Formularen emaitza hainbat modutan erabiltzen da:
- AddColumns - Formulak eremu erantsiaren balioa ematen du.
- Batez bestekoa, Max, Min, Batuketa, StdevP, VarP - Formulak batzeko balioa ematen du.
- Iragazkia, Bilaketa - Formulak zehazten du erregistroa irteeran sartu behar den.
- Concat - Formulak elkarrekin kateatu beharreko kateak zehazten ditu.
- Distinct - Formulak balio bat ematen du, erregistro bikoiztuak identifikatzeko erabiltzen dena.
- ForAll - Formulak edozein balio itzul dezake, agian albo-ondorioekin.
- Ordenatu - Formulak erregistroak ordenatzeko balioa ematen du.
- -rekin Formulak edozein balio itzul dezake, albo-ondorioekin.
Formula hauen barruan, prozesatzen ari den erregistroaren eremuak aipa ditzakezu. Funtzio horietako bakoitzak "erregistro esparrua" sortzen du formula ebaluatzen denean, non erregistroaren eremuak goi mailako identifikatzaile gisa eskuragarri dauden. Kontrol-propietateak eta aplikazioa beste balio batzuk ere erreferentzia ditzakezu.
Adibidez, hartu taula Produktuak aldagai global batean kokatuta:
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 }
)
)
Produktu hauetakoren bat eskuragarri dagoena baino gehiago eskatu den ala ez zehazteko:
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
Lehenengo argumentua Iragazi erregistratzeko taula da funtzionatzeko, eta bigarren argumentua formula da. Iragazkiak erregistro-esparru bat sortzen du formula hau ebaluatzeko, non erregistro bakoitzaren eremuak eskuragarri dauden, kasu honetan Produktua, . a45>Eskatutako kantitatea, eta Eskuragarri dagoen kantitatea. Konparazioaren emaitza zehazten da erregistro bakoitza funtzioaren emaitzan sartu behar den ala ez:
Adibide honi gehituta, produktu bakoitzari zenbat eska dion kalkulatu ahal izango dugu:
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
Hemen emaitza kalkulatutako zutabe bat gehitzen ari gara. AddColumns k bere erregistro-esparrua du, eskatutakoaren eta eskuragarri dagoenaren arteko aldea kalkulatzeko erabiltzen duena.
Azkenean, emaitza taula nahi dugun zutabeetara soilik murriztu dezakegu:
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Kontuan izan goiko aldetik komatxo bikoitzak (") leku batzuetan eta komatxo bakunak (') beste leku batzuetan erabili genituela. Komatxo bakarrekoak behar dira objektu baten balioa erreferentziatzean, adibidez, eremu edo taula bat, zeinetan objektuaren izenak espazio bat duen. Komatxo bikoitzak objektu baten balioa aipatzen ez dugunean, baina horretaz hitz egiten dugunean, objektua oraindik existitzen ez den egoeretan erabiltzen da, adibidez AddColumns.
Erregistro-esparruarekin gehitutako eremu-izenek aplikazioko beste leku batzuetako izen berberak gailentzen dituzte. Hori gertatzen denean, erregistroaren eremutik kanpora balioak sar ditzakezu @ argipena operadoreak:
- Habiaratutako erregistro esparruetatik balioak atzitzeko, eredu hau erabiltzen ari den taularen izena duen @ eragilea erabiliz:
Taula[@Eremu izena] - Balio orokorrak atzitzeko, hala nola datu iturriak, bildumak eta testuinguru aldagaiak, erabili eredua [@ObjectName] (taula izendapenik gabe).
Taula eragiketa egiten ari bada adierazpen baten gainean, esaterako Iragazkia(Taula, ... ), gero disanbiguazioaren operadorea ezin da erabili. Erregistroaren barneko esparrua soilik sar daiteke taularen adierazpen honetatik eremuak, ez baita desambiguazio operadorea erabiltzen.
Adibidez, imajinatu bilduma bat edukitzea X:
Bilduma hau sortu dezakezu ClearCollect( X, [1, 2] ).
Eta beste bilduma bat Y:
Bilduma hori sor dezakezu hurrengoarekin ClearCollect( Y, ["A", "B"] ).
Gainera, zehaztu testuinguru aldagai bat Balio formula honekin: UpdateContext( {Balioa: "!"} )
Jarri dezagun guztia. Testuinguru honetan, formula hau:
Ungroup(
ForAll( X,
ForAll( Y,
Y[@Value] & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
Taula hau sortzen du:
Zer gertatzen da hemen? Kanpokoa Guztientzat funtzioak erregistro-eremua definitzen du X, sarbidea baimendu du Balioa erregistro bakoitzaren eremua prozesatu ahala. Hitza soilik erabiliz sar daiteke Balioa edo erabiliz X [@Value].
Barrukoa Guztientzat funtzioak beste erregistro-esparru bat definitzen du Y. Taula honek ere badu Balio eremua definituta dago Balio hemen, eremuan aipatzen da Y bere erregistroa eta ez dagoena X. Hemen, sartzeko X-ren Balio eremua, bertsio luzeagoa desambiguazio operadorearekin erabili behar dugu.
Geroztik Y erregistroaren barne-eremua da. Taula honetako eremuetara sartzea ez da desambiguazioa behar. Formula hau emaitza berarekin erabiltzeko aukera ematen digu:
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
Guztiak Guztientzat erregistro-esparruek esparru globala gainditzen dute. Balio definitu dugun testuinguru aldagaia ez dago izenaren arabera desambiguazio operadorerik gabe. Balio hori eskuratzeko erabili [@Value].
Destaldekatzea k emaitza berdindu egiten du, habiaratu diren ForAll funtzioek emaitza-taula habiaratua sortzen dutelako.
Taula bateko zutabe bakar batean funtzionatzeko, erabili ShowColumns adibide honetan bezala funtzionatu:
ShowColumns( Products, "Product" )
Formula honek zutabe bakarreko taula hau sortzen du:
Alternatiba motzagoetarako, zehaztu Table.Column, justuaren zutabe bakarreko taula ateratzen duena Zutabe batetik Taula. Adibidez, formula honek erabiltzearen emaitza bera sortzen du ShowColumns.
Products.Product
Erregistroak adierazten dituzu eremu balioen izenak dituzten giltza makurrak erabiliz. Adibidez, gai honen hasieran taulan lehenengo diskoa adieraz dezakezu formula hau erabiliz:
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }
Formulak beste formula batzuen barruan txerta ditzakezu, adibide honek erakusten duenez:
{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }
Erregistroak habiaka giltza gurutzatuak eginez habia ditzakezu, adibide honek erakusten duenez:
{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }
Itxi komatxo bakoitza karaktere berezi bat duen zutabe bakoitzaren izena, esaterako, espazioa edo bi puntuak. Zutabe izenaren barruan aurrekontu bakarra erabiltzeko, bikoiztu.
Kontuan izan balioa Prezioa zutabeak ez du monetaren sinbolo bat, hala nola dolar ikurra. Formatua hori balioa bistaratzen denean aplikatuko da.
Taula sor dezakezu Taula funtzioa eta erregistro multzoa. Zuk gai honen hasieran taulan adieraz dezakezu formula hau erabiliz:
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 }
)
Taulak habia ditzakezu:
Table(
{ Name: "Chocolate",
'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
{ Quarter: "Q2", OnHand: 18, OnOrder: 0 } )
}
)
Zutabe bakarreko taulak sor ditzakezu parentesi karratuetan balioak zehaztuz. Emaitzen den taulak zutabe bakarra du, izena duena Balio.
Adibidez, [ 1, 2, 3, 4 ]
baliokidea da Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } )
eta taula hau itzultzen du: