Înțelegeți tabelele și înregistrările din aplicațiile proiectate pe pânză
În Power Apps, puteți crea o aplicație proiectată pe pânză care accesează informațiile din Microsoft Excel, SharePoint, SQL Server și mai multe alte surse care stochează date în înregistrări și tabele. Pentru a lucra cel mai eficient cu acest tip de date, consultați conceptele care stau la baza acestor structuri.
- O înregistrare conține una sau mai multe categorii de informații despre o persoană, un loc sau un lucru. De exemplu, o înregistrare poate conține numele, adresa de e-mail și numărul de telefon al unui singur client. Alte instrumente se referă la o înregistrare ca „rând” sau „element”.
- Un tabel conține una sau mai multe înregistrări care conțin aceleași categorii de informații. De exemplu, un tabel poate conține numele, adresele de e-mail și numerele de telefon a 50 de clienți.
În aplicația dvs., veți utiliza formule pentru a crea, actualiza și manipula înregistrări și tabele. Probabil veți citi și scrie date unei surse de date externe, care este un tabel extins. În plus, puteți crea unul sau mai multe tabele interne, care sunt numite colecții.
Puteți construi o varietate de formule care iau numele unui tabel ca argument, la fel cum o formulă în Excel ia una sau mai multe referințe de celule ca argumente. Câteva formule în Power Apps returnează un tabel care reflectă celelalte argumente pe care le specificați. De exemplu, puteți crea o formulă:
- pentru a actualiza o înregistrare într-un tabel, specificând tabelul ca unul dintre argumentele multiple pentru funcția Patch
- Pentru a adăuga, elimina și redenumi coloanele dintr-un tabel, specificând tabelul ca un argument pentru funcţia AddColumns, DropColumns sau RenameColumns. Niciuna dintre aceste funcții nu modifică tabelul original. În schimb, funcția returnează un alt tabel bazat pe celelalte argumente pe care le specificați.
Elemente ale unui tabel
Înregistrări
Fiecare înregistrare conține cel puțin o categorie de informații pentru o persoană, un loc sau un lucru. Exemplul de mai sus arată o înregistrare pentru fiecare produs (Ciocolată Pâine și Apă) și o coloană pentru fiecare categorie de informații (Preț, Cantitate în stoc și Cantitate la comandă).
Într-o formulă, vă puteți referi la o înregistrare de sine stătător, în afara contextului unui tabel, folosind acolade. De exemplu, această înregistrare { Nume: „Căpșuni”, Preț: 7,99 } nu este asociată cu un tabel. Rețineți că numele câmpului, cum ar fi Nume și Preț în acest exemplu, nu sunt incluse în ghilimele duble.
Câmpuri
Un câmp este o informație individuală dintr-o înregistrare. Puteți vizualiza acest tip de câmp ca valoare într-o coloană pentru o anumită înregistrare.
La fel ca în cazul unui control, vă referiți la un câmp al unei înregistrări folosind . operator pe înregistrare. De exemplu, First(Products).Name returnează câmpul Nume pentru prima înregistrare din tabelul Produse.
Un câmp poate conține o altă înregistrare sau tabel, ca exemplu pentru funcția GroupBy. Puteți imbrica cât de multe niveluri de înregistrări și tabele doriți.
Coloane
O coloană se referă la același câmp pentru una sau mai multe înregistrări dintr-un tabel. În exemplul de mai sus, fiecare produs are un câmp de preț și acel preț este în aceeași coloană pentru toate produsele. Tabelul de mai sus are patru coloane, afișate orizontal în partea de sus:
- Nume
- Preț
- Cantitate în stoc
- Cantitate la comandă
Numele coloanei reflectă câmpurile din acea coloană.
Toate valorile dintr-o coloană sunt de același tip de date. În exemplul de mai sus, coloana „Cantitate în stoc” conține întotdeauna un număr și nu poate conține un șir, cum ar fi „12 unități”, pentru o înregistrare. Valoarea oricărui câmp poate fi de asemenea necompletat.
Este posibil să fi făcut referire la coloane drept "câmpuri" în alte instrumente.
Notă
Pentru surse de date precum dale SharePoint, Excel sau Power BI care conțin nume de coloane cu spații, Power Apps va înlocui spațiile cu "_x0020_". De exemplu, „Nume coloană” în dala SharePoint, Excel sau Power BI va apărea ca „Column_x0020_Name” în Power Apps când este afișată în aspectul datelor sau este utilizată într-o formulă.
Table
Un tabel cuprinde una sau mai multe înregistrări, fiecare având mai multe câmpuri care au nume consecvente în înregistrări.
Orice tabel stocat într-un sursă de date sau într-o colecție are un nume, pe care îl utilizați pentru a face referire la tabel și îl transmiteți funcțiilor care iau tabele ca argumente. Tabelele pot fi, de asemenea, rezultatul unei funcții sau a unei formule.
Ca și în exemplul următor, puteți exprima un tabel într-o formulă utilizând funcția Tabel cu un set de înregistrări, pe care le exprimați cu acolade:
Table( { Value: "Strawberry" }, { Value: "Vanilla" } )
Puteți defini, de asemenea, un tabel cu o singură coloană cu paranteze pătrate. Un mod echivalent de a scrie cele de mai sus:
[ "Strawberry", "Vanilla" ]
Formule de tabel
În Excel și Power Apps, utilizați formule pentru a manipula numerele și șirurile de text în moduri similare:
- În Excel, tastați o valoare, cum ar fi 42, în celulă A1 și apoi tastați o formulă, cum ar fi A1 + 2, într-o altă celulă pentru a arăta valoarea lui 44.
- În Power Apps, setați proprietatea Mod implicit a Glisor1 la 42 și setați proprietatea Text a unei etichete la Slider1.Value + 2 pentru a arăta valoarea lui 44.
În ambele cazuri, valoarea calculată se modifică automat dacă modificați valorile argumentelor (de exemplu, numărul din celula A1 sau valoarea Glisor1).
În mod similar, puteți utiliza formule pentru a accesa și manipula datele din tabele și înregistrări. Puteți utiliza nume de tabele ca argumente în unele formule, cum ar fi Min (Catalog, Preț) pentru a afișa cea mai mică valoare în coloana Preț din tabelul Catalog. Alte formule furnizează tabele întregi ca valori returnate, cum ar fi Redenumire coloane (Catalog, „Preț”, „Cost”), care returnează toate înregistrările din tabelul Catalog dar modifică numele coloanei Preț în Cost.
La fel ca în cazul numerelor, formulele care implică tabele și înregistrări sunt recalculate automat pe măsură ce tabelul subiacent sau înregistrările se modifică. În cazul în care costul unui produs din tabelul Catalog este redus sub minimum precedent, valoarea de returnare a formulei Min se va schimba automat pentru a se potrivi.
Să parcurgem câteva exemple simple.
Creați o aplicație de la zero pentru un telefon și adăugați un control vertical Galerie care conține alte controale.
În mod implicit, ecranul afișează textul substituent dintr-un tabel numit CustomGallerySample. Proprietatea Elemente a controlului ecranului Galerie este setată automat la tabelul respectiv.
Notă
Unele controale au fost rearanjate și lărgite în scop ilustrativ.
În loc să setați proprietatea Elemente la numele unui tabel, setați-o pe o formulă care include numele tabelului ca argument, ca în acest exemplu:
Sort(CustomGallerySample, SampleHeading, SortOrder.Descending)
Această formulă încorporează funcția Sortare, care ia numele unui tabel ca prim argument și numele unei coloane din tabelul respectiv ca al doilea argument. Funcția acceptă și un al treilea argument opțional, care prevede că doriți să sortați datele în ordine descendentă.
Setați proprietatea Elemente la o formulă care ia formula din pasul anterior ca argument și returnează un tabel, ca în acest exemplu:
FirstN(Sort(CustomGallerySample, SampleHeading, SortOrder.Descending), 2)
În această formulă, utilizați funcția FirstN pentru a afișa un anumit număr de înregistrări într-un tabel. Utilizați funcția Sortare ca prim argument la FirstN și un număr (în acest caz, 2) ca al doilea argument, care specifică câte înregistrări trebuie afișate.
Întreaga formulă returnează un tabel care conține primele două înregistrări ale tabelului CustomGallerySample, sortat după coloana SampleHeading in ordine descendentă.
Funcțiile tabelului și proprietățile de control
Luați în considerare funcţia Lower. Dacă variabila Bine ați venit conține șirul de text "Salut, Lume", formula Lower (Bine ați venit) returnează "Salut, Lume". Această funcție nu schimbă, în niciun fel, valoarea din acea variabilă. Lower este o funcție pură prin faptul că procesează numai intrări și produce ieșiri. Asta e tot; nu are efecte secundare. Toate funcțiile în Excel și cele mai multe funcții în Power Apps sunt funcții pure, care permit recalcularea automată a registrului de lucru sau a aplicației.
Power Apps oferă un set de funcții care operează pe tabele în același mod. Aceste funcții iau tabele ca intrare și filtrare, sortare, transformare, reducere și rezumare tabele întregi de date. De fapt, Lower și multe alte funcții care iau de obicei o singură valoare, pot, de asemenea, lua un tabel cu o singură coloană ca intrare.
- Sortare, Filtrare - Sortează și filtrează înregistrările.
- FirstN, LastN - Returnează primele sau ultimele înregistrări N ale tabelului.
- Abs, Sqrt, Round, RoundUp, RoundDown - Operații aritmetice pe fiecare înregistrare a unui tabel cu o singură coloană, rezultând un tabel cu rezultate dintr-o singură coloană.
- Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - Manipularea șirurilor pe fiecare înregistrare a unui tabel cu o singură coloană, rezultând un tabel de șiruri cu o singură coloană.
- Len - Pentru o coloană de șiruri, returnează un tabel cu o singură coloană care conține lungimea fiecărui șir.
- Concatenate - Concatenează mai multe coloane de șiruri, rezultând într-un tabel de șiruri cu o singură coloană.
- AddColumns, DropColumns, RenameColumns, ShowColumns - Manipularea coloanelor din tabel, rezultând un nou tabel cu diferite coloane.
- Distinct - Elimină înregistrările dublurilor.
- Shuffle - Modifică înregistrările într-o ordine aleatorie.
- HashTags - Caută hashtag-uri într-un șir.
- Errors - Oferă informații despre erori atunci când lucrați cu o sursă de date.
Multe dintre aceste funcții iau un tabel cu o singură coloană ca intrearea lor. Dacă un tabel întreg are o singură coloană, o puteți specifica după nume. Dacă un tabel are mai multe coloane, puteți specifica una dintre aceste coloane folosind sintaxa Table.Column. De exemplu, Products.Name returnează tabelul cu o singură coloană doar a valorilor Nume din tabelul Produse.
Puteți remodela complet un tabel, oricum doriți, folosind funcţia AddColumns, RenameColumns, ShowColumns, sau DropColumns. Din nou, aceste funcții își schimbă doar ieșirea, nu și sursa.
Proprietățile controalelor pot fi, de asemenea, tabele:
- Elemente - Se aplică galeriilor, casetelor de listă și casetelor combo. Această proprietate definește tabelul pe care îl arată galeria sau lista.
- SelectedItems - Se aplică casetelor de listă și casetelor combo. Această proprietate definește tabelul cu elementele selectate de utilizator dacă SelectMultiple este activat.
Formule comportamentale
Alte funcții sunt concepute special pentru a modifica datele și a avea efecte secundare. Deoarece aceste funcții nu sunt pure, trebuie să le creați cu atenție și nu pot participa la recalcularea automată a valorilor din aplicație. Puteți utiliza aceste funcții doar în cadrul formulelor comportamentale.
- Colectare, Eliminare, EliminareColectare - Creează colecții, le elimină și le adaugă date.
- Patch - Modifică unul sau mai multe câmpuri dintr-o înregistrare.
- Actualizare, UpdateIf -Actualizează înregistrările care se potrivesc unuia sau mai multor criterii specificate de dvs.
- Eliminare, RemoveIf - Șterge înregistrările care se potrivesc unuia sau mai multor criterii specificate de dvs.
Formule înregistrare
Puteți crea, de asemenea, o formulă care calculează datele pentru o înregistrare individuală, ia o înregistrare individuală ca argument și furnizează o înregistrare individuală ca valoare retrurnată. Revenind la exemplul nostru legat de galerie de mai sus, să folosim proprietatea Gallery1.Selected pentru a afișa informații din orice înregistrare selectată de utilizator în galeria respectivă.
Adăugați un Buton și setați proprietatea sa OnSelect la această formulă:
Collect( SelectedRecord, Gallery1.Selected )În timp ce țineți apăsată tasta Alt, selectați butonul.
În meniul Fişier, selectați Colecții.
Această formulă returnează o înregistrare care include nu numai datele din înregistrarea care este selectată în prezent în galerie, ci și fiecare control din galeria respectivă. De exemplu, înregistrarea conține atât o coloană SampleText, care se potrivește cu coloana SampleText din tabelul original, cât și o coloană Subtitle1, care reprezintă eticheta care prezintă datele din acea coloana. Selectați pictograma tabelului din coloana Subtitle1 pentru a examina datele respective.
Notă
Coloana Subtitle1 ar putea fi numită Subtitle2 sau similar dacă ați adăugat alte elemente decât cele pe care le specifică acest subiect.
Acum că aveți înregistrarea selectată, puteți extrage câmpuri individuale din ea cu ajutorul . operator.
Adăugați un control Etichetă, apoi mutați-l sub galerie și buton.
Setați proprietatea etichetei Text la această expresie:
"Selected: " & Gallery1.Selected.SampleHeading
Ați luat proprietatea Selectat care este o înregistrare și ați extras proprietatea SampleHeading din ea.
Puteți utiliza, de asemenea, o înregistrare ca recipient cu scop general pentru valorile numite înrudite.
- Dacă generați o formulă în jurul funcțiilor UpdateContext și Navigare, utilizați o înregistrare pentru a aduna variabilele de context pe care doriți să le actualizați.
- Utilizați proprietatea Actualizări pe un control Editare formular pentru a aduna modificările aduse de utilizator într-un formular.
- Utilizați funcția Patch pentru actualizarea unei surse de date, dar și pentru îmbinarea înregistrărilor.
În aceste cazuri, înregistrarea nu a fost niciodată parte a unui tabel.
Înregistrați funcțiile și proprietățile de control
Funcții care returnează înregistrări:
- FirstN, LastN - Returnează prima sau ultima înregistrare sau înregistrări ale tabelului.
- Căutare - Returnează prima înregistrare dintr-un tabel care corespunde unuia sau mai multor criterii.
- Patch - Actualizează o sursă de date sau îmbină înregistrări.
- Valori implicite - Returnează valorile implicite pentru un sursă de date.
Proprietăți care returnează înregistrări:
- Selectat - Se aplică galeriilor și casetelor de listă. Returnează înregistrarea selectată în prezent.
- Actualizări - Se aplică galeriilor. Reunește toate modificările pe care le face un utilizator într-un formular de introducere a datelor.
- Actualizare - Se aplică controalelor de intrare, cum ar fi controalele de introducere text și glisoarele. Configurează proprietățile individuale pentru ca galeria să se poată reuni.
Domeniul de aplicare a înregistrării
Unele funcții operează evaluând o formulă în toate înregistrările unui tabel individual. Rezultatul formulei este utilizat în diferite moduri:
- AddColumns - Formula furnizează valoarea câmpului adăugat.
- Average, Max, Min, Sum, StdevP, VarP - Formula oferă valoarea agregată.
- Filtru, Căutare - Formula stabilește dacă înregistrarea ar trebui să fie inclusă în ieșire.
- Concat - Formula determină șirurile care se concatenează împreună.
- Distinct - Formula returnează o valoare, folosită pentru identificarea înregistrărilor duplicat.
- ForAll - Formula poate returna orice valoare, posibil cu efecte secundare.
- Sortare - Formula oferă valoarea pentru a sorta înregistrările.
- With - Formula poate returna orice valoare, posibil cu efecte secundare.
În aceste formule, puteți face referire la câmpurile înregistrării procesate. Fiecare dintre aceste funcții creează un „domeniu de aplicare a înregistrării” în care formula este evaluată, unde câmpurile înregistrării sunt disponibile ca identificatori de nivel superior. Puteți menționa proprietățile de control și alte valori și din cadrul aplicației.
De exemplu, luați un tabel din Produse:
Pentru a crea acest tabel exemplificator în aplicație, introduceți un buton, setați-i proprietate OnSelect pentru această formulă, apoi selectați butonul (faceți clic pe el în timp ce țineți apăsată tasta Alt în Power Apps Studio):
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 }
)
)
Pentru a determina dacă oricare dintre aceste produse a avut mai multe solicitări decât este disponibil:
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
Primul argument la Filtru este tabelul de înregistrări pe care să se opereze, iar al doilea argument este o formulă. Filtru creează un domeniu de aplicare a înregistrării pentru evaluarea acestei formule în care sunt disponibile câmpurile fiecărei înregistrări, în acest caz Produs, Cantitate solicitată și Cantitate disponibilă. Rezultatul comparației determină dacă fiecare înregistrare trebuie inclusă în rezultatul funcției:
Adăugând la acest exemplu, putem calcula cât din fiecare produs trebuie comandat:
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
Aici adăugăm o coloană calculată la rezultat. AddColumns are propriul său domeniu de înregistrare pe care îl folosește pentru a calcula diferența dintre ceea ce a fost solicitat și ceea ce este disponibil.
În cele din urmă, putem reduce tabelul de rezultate doar la coloanele dorite:
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Rețineți că, în cele de mai sus, am folosit ghilimele duble (") în unele locuri și ghilimele simple (') în alte locuri. Sunt necesare ghilimele simple atunci când se face referire la valoarea unui obiect, cum ar fi un câmp sau un tabel, în care numele obiectului conține un spațiu. Ghilimelele duble sunt utilizate atunci când nu facem referire la valoarea unui obiect, ci în schimb vorbim despre acesta, în special în situațiile în care obiectul încă nu există, ca în cazul AddColumns.
Dezambiguizare
Numele de câmp adăugate cu domeniul de aplicare a înregistrării înlocuiesc aceleași nume din alte părți ale aplicației. Când se întâmplă acest lucru, puteți accesa în continuare valori din afara domeniului de înregistrare cu ajutorul operatorului @ dezambiguizare:
- Pentru a accesa valori din domenii de aplicare a înregistrării imbricate, utilizați butonul operator @ cu numele tabelului care este operat la utilizarea acestui model:
Table[@FieldName] - Pentru a accesa valori globale, cum ar fi sursele de date, colecțiile și variabilele de context, utilizați modelul [@ObjectName] (fără denumire de tabel).
Dacă tabelul care este operat este o expresie, cum ar fi Filtru( _Tabel _, ... ), atunci operatorul de dezambiguizare nu poate fi utilizat. Doar domeniul de aplicare a înregistrării interior poate accesa câmpurile din această expresie a tabelului, prin utilizarea operatorului de dezambiguizare.
De exemplu, imaginați-vă că aveți o colecție X:
Puteți crea această colecție cu ClearCollect (X, [1, 2]).
Și o altă colecție Y:
Puteți crea această colecție cu ClearCollect (Y, ["A", "B"]).
În plus, definiți o variabilă de context numită Valoare cu această formulă: UpdateContext( {Valoare: "!"})
Să le punem la un loc. În acest context, următoarea formulă:
Ungroup(
ForAll( X,
ForAll( Y,
Y[@Value] & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
produce acest tabel:
Ce se intamplă aici? Funcția exterioară ForAll definește un domeniu de înregistrare pentru X, care permite accesul la câmpul Valoare a fiecărei înregistrări pe măsură ce este procesată. Poate fi accesat folosind pur și simplu cuvântul Valoare sau folosind X[@Value].
Funcția interioară ForAll definește un alt domeniu de aplicare a înregistrării pentru Y. Deoarece acest tabel are și un câmp Valoare definit, folosirea Valoare aici se referă la câmpul din înregistrarea Y și nu cel din X. Aici, pentru a accesa câmpul X al Valoare, trebuie să utilizăm versiunea mai lungă cu operatorul de dezambiguizare.
Deoarece Y este domeniul de aplicare a înregistrării interior, accesarea câmpurilor din acest tabel nu necesită dezambiguizare, permițându-ne să utilizăm această formulă cu același rezultat:
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
Pentru toate ForAll domeniile de aplicare a înregistrărilor depășesc domeniul de aplicare global. Variabila de context Valoare pe care am definit-o nu este disponibilă pe nume fără operatorul de dezambiguizare. Pentru a accesa această valoare, utilizați [@Value].
Ungroup aplatizează rezultatul deoarece funcțiile imbricate ForAll au drept rezultat un tabel de rezultate imbricat.
Tabele cu o singură coloană
Pentru a opera pe o singură coloană dintr-un tabel, utilizați funcția ShowColumns ca în acest exemplu:
ShowColumns( Products, "Product" )
Această formulă produce acest tabel cu o singură coloană:
Pentru o alternativă mai scurtă, specificați Table.Column, care extrage tabelul cu o singură coloană doar din Coloană din Tabel. De exemplu, această formulă produce exact același rezultat ca și utilizarea ShowColumns.
Products.Product
Înregistrări în linie
Exprimați înregistrările folosind acolade care conțin valori de câmp numite. De exemplu, puteți exprima prima înregistrare din tabel la începutul acestui subiect utilizând această formulă:
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }
De asemenea, puteți încorpora formule în alte formule, așa cum arată acest exemplu:
{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }
Puteți imbrica înregistrări prin imbricarea acoladelor, așa cum arată acest exemplu:
{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }
Încadraţi fiecare nume de coloană care conține un caracter special, cum ar fi un spațiu sau un punct, în ghilimele simple. Pentru a utiliza ghilimele simple în cadrul unui nume de coloană, dublați-le.
Rețineți că valoarea din coloana Preț nu include un simbol valutar, cum ar fi un semn dolar. Acea formatare va fi aplicată atunci când este afișată valoarea.
Tabele în linie
Puteți crea un tabel folosind funcția Tabel și un set de înregistrări. Puteți exprima tabelul la începutul acestui subiect utilizând această formulă:
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 }
)
Puteți, de asemenea, să imbricați tabele:
Table(
{ Name: "Chocolate",
'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
{ Quarter: "Q2", OnHand: 18, OnOrder: 0 } )
}
)
Tabele de valori în linie
Puteți crea tabele cu o singură coloană specificând valorile între paranteze pătrate. Tabelul rezultat are o singură coloană, numită Valoare.
De exemplu, [ 1, 2, 3, 4 ]
este echivalent cu Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } )
și returnează acest tabel:
Notă
Ne puteți spune care preferințele dvs. lingvistice pentru documentație? Răspundeți la un chestionar scurt. (rețineți că acest chestionar este în limba engleză)
Chestionarul va dura aproximativ șapte minute. Nu sunt colectate date personale (angajament de respectare a confidențialității).