Vrste podataka u jeziku Power Apps
Informacija teče kroz aplikaciju u malim, diskretnim vrijednostima, vrlo sličnim ćelijama proračunske tablice. Na primjer, podatci u polju Rođendan i Obljetnica bi se izvodili kao vrijednost Data koja uključuje godinu, mjesec i dan. Aplikacija zna kako oblikovati ove vrijednosti, ograničiti unos onoga što je za svakoga prikladno i dijeliti vrijednosti s bazom podataka. Rođendani se razlikuju od obljetnica do ljudi, ali sustav s njima postupa na potpuno isti način. U ovom slučaju Datum je primjer vrsta podataka.
Ovaj članak sadrži detalje za vrste podataka koje podržavaju aplikacije radnog područja. Kada se aplikacija poveže s vanjskim izvor podataka, svaka vrsta podataka u tom izvoru mapira se u vrstu podataka za aplikacije radnog područja.
| Vrsta podataka | Opis | Primjeri |
|---|---|---|
| Booleov | Vrijednost true ili false. Može se koristiti izravno u If, Filter i drugim funkcijama bez usporedbe. | true |
| Color | Specifikacija boje, uključujući alfa kanal. | Color.Red ColorValue( "#102030" ) RGBA( 255, 128, 0, 0.5 ) |
| Valuta | Vrijednost valute koja je pohranjena u broju s pomičnom zarezom. Vrijednosti valuta jednake su brojčanim vrijednostima s mogućnostima oblikovanja valuta. | 123 4.56 |
| Datum | Datum bez vremena, u vremenskoj zoni korisnika aplikacije. | Datum( 2019, 5, 16 ) |
| DateTime | Datum s vremenom, u vremenskoj zoni korisnika aplikacije. | Vrijednostdatumaivremena( "16. svibnja, 2019. 1:23:09 PM" ) |
| GUID | Globalno jedinstveni identifikator. | GUID() GUID( "123e4567-e89b-12d3-a456-426655440000" ) |
| Hiperveza | Tekstni niz koji sadrži hipervezu. | "https://powerapps.microsoft.com" |
| Image | Universal Resource Identifier (URI) tekstni niz za sliku u .jpeg, .png, .svg, .gif ili drugom uobičajenom formatu web-slike. | Mojaslika dodana kao resurs aplikacije "https://northwindtraders.com/logo.jpg" "appres://blobmanager/7b12ffa2..." |
| Mediji | URI tekstni niz za snimak videozapisa ili audiozapisa. | Mojvideozapis dodano kao resurs aplikacije "https://northwindtraders.com/intro.mp4" "appres://blobmanager/3ba411c..." |
| Broj | Broj s pomičnim zarezom. | 123 -4.567 8.903e121 |
| Odabir | Izbor iz niza mogućnosti, poduprto brojem. Ova vrsta podataka kombinira lokaliziranu tekstnu oznaku s numeričkom vrijednošću. Oznaka se pojavljuje u aplikaciji, a brojčana vrijednost pohranjuje se i koristi za usporedbe. | ThisItem.OrderStatus |
| Record | Zapis vrijednosti podataka. Ova složena vrsta podataka sadrži primjerice drugih vrsti podataka koje su navedene u ovoj temi. Više informacija: Rad s tablicama. | { Company: "Northwind Traders", Staff: 35, NonProfit: false } |
| Record reference | Referenca na zapis u tablici. Takva upućivanja često se koriste kod polimorfnih pregleda. Više informacija: Rad s upućivanjima. | First(Accounts).Owner |
| Table | Tablica zapisa. Svi zapisi moraju imati iste nazive za svoja polja s istim vrstama podataka, a izostavljena polja tretiraju se kao prazna. Ova složena vrsta podataka sadrži primjerice drugih vrsti podataka koje su navedene u ovoj temi. Više informacija: Rad s tablicama. | Table( { FirstName: "Sidney", LastName: "Higa" }, { FirstName: "Nancy", LastName: "Anderson" } ) |
| Text | Tekstni niz Unicode. | "Hello, World" |
| Time | Vrijeme bez datuma, u vremenskoj zoni korisnika aplikacije. | Time( 11, 23, 45 ) |
| Two option | Izbor iz skupa dviju opcija, poduprtih Booleovom vrijednošću. Ova vrsta podataka kombinira lokaliziranu tekstnu oznaku s Booleovom vrijednošću. Oznaka se pojavljuje u aplikaciji, a Booleova vrijednost pohranjuje se i koristi za usporedbe. | ThisItem.Taxable |
Mnoge od ovih vrsta podataka su slične i imaju isto pozadinsko predstavljanje, kao što je polje Hyperlink koje se tretira kao Text. Dodatne vrste podataka pružaju bolje zadano iskustvo u obrascima i drugim kontrolama.
Blank
Sve vrste podataka mogu imati vrijednost blank (drugim riječima, bez vrijednosti). Izraz "null" često se koristi u bazama podataka za ovaj koncept.
Koristite funkciju Blank s funkcijom Set ili Patch da biste postavili varijablu ili polje na prazno. Na primjer, Set( x, Blank() ) uklanja vrijednost u globalnoj varijabli x.
Testirajte vrijednost blank pomoću funkcije IsBlank. Zamijenite moguće vrijednosti blank vrijednostima koje nisu blank pomoću funkcije Coalesce.
Zbog toga što sve vrste podataka podržavaju blank, vrste podataka Boolean i Two option praktički imaju tri moguće vrijednosti.
Text, Hyperlink, Image i Media
Sve ove četiri vrste podataka temelje se na tekstnom nizu Unicode.
Ugrađeni tekst
Ugrađeni tekstni nizovi u formuli zatvoreni su u dvostruke navodnike. Upotrijebite dva dvostruka navodnika zajedno da predstavite jedan dvostruki citat u tekstnom nizu. Na primjer, koristeći sljedeću formulu u svojstvu OnSelect kontrole Button:
Notify( "Jane said ""Hello, World!""" )
rezultira reklamnim natpisom kada je pritisnut gumb, kad su prvi i zadnji dvostruki citati izostavljeni (jer oni ograničavaju tekstni niz) i ponovljeni dvostruki citati oko Pozdrav svijete! zamijenjeni su jednim dvostrukim citatom:

Pojedinačni navodnici nisu korišteni za nazivi identifikatora koji obuhvaćaju posebne znakove i nemaju nikavo značenje unutar tekstsnog niza.
Slikovni i medijski resursi
U izborniku Datoteka možete dodati sliku, videozapis i datoteke audiozapisa kao resurse aplikacije. Naziv uvezene datoteke postaje naziv resursa u aplikaciji. Na ovoj grafici, logotip Northwind Traders koji je nazvan nwindlogo, dodaj je aplikaciji:

Da biste koristiti ovaj resurs u aplikaciji, navedite ga u svojstvu Slika kontrole Image:

URI-ji za slike i druge medije
Možete tražiti dalje u posljednjem primjeru postavljanjem svojstva Text kontrole Label na nwindlogo. Oznaka pokazuje tekstni niz:

Aplikacije radnog područja povezuju svaku sliku ili drugu medijsku datoteku, bilo da je u oblaku ili je dodana kao resurs aplikacije, tekstnim nizom URI.
Na primjer, svojstvo Slika kontrole slike prihvaća ne samo resurse aplikacije već i veze na slike na webu kao što je "https://northwindtraders.com/logo.jpg". Svojstvo također prihvaća umetnute slike koje koriste shema URI podataka, kao u ovom primjeru:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
Da URI prikazuje uvećanu verziju dva ljubičasta dijamanta:

Možete pokazati najnoviju sliku snimljenu u kontroli Camera ako postavite svojstvo Slika kontrole slike na svojstvo Photo kontrole kamere. Aplikacija sadrži sliku u memoriji, a svojstvo Photo kontrole kamere vraća URI referencu na sliku. Na primjer, možete snimiti sliku, a svojstvo kamere Photo vratiti "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
Koristite URI za upućivanje na sliku ili drugu medijsku datoteku pohranjenu u bazi podataka. Na taj način, aplikacija ne dohvaća stvarne podatke dok to zaista i nije potrebno. Na primjer, privitak u tablici Microsoft Dataverse mogao bi vratiti "appres://datasources/Contacts/table/..." kao u primjeru fotoaparata, ovu sliku možete prikazati podešavanjem svojstvo Slika kontrole slike na ovu referencu koja dohvaća binarne podatke.
Kad spremate vrstu medijskog podatka kao što je slika u bazu podataka, aplikacija šalje stvarnu sliku ili medijske podatke, a ne URI referencu.
Ograničenja veličine
Kao tekstni nizovi i URI-ji, ove vrste podataka nemaju unaprijed postavljeno ograničenje glede njihove dužine.
Binarni podatci na koje se odnose ove vrste podataka također nemaju unaprijed postavljeno ograničenje glede veličine. Na primjer, slika snimljena kontrolom kamere koja se sada navodi kao "appres://..." može biti toliko velike i visoke razlučivosti koliko kamera uređaja može prikupiti. Razlučivost, broj slika u sekundi i drugi atributi medijskih datoteka nisu ograničeni vrstom podataka, ali posebne kontrole za reprodukciju i snimanje medija mogu imati svoja ograničenja.
Ipak, sve veličine podataka podliježu količini raspoložive memorije u aplikaciji. Preglednici koji rade na stolnom računalu obično podržavaju više od 100 megabajta podataka. Međutim, količina raspoložive memorije na uređaju kao što je telefon može biti daleko manja, obično u rasponu od 30 do 70 megabajta. Da biste odredili hoće li vaša aplikacija raditi u ovim granicama, testirajte uobičajene scenarije na svim uređajima na kojima bi se trebala pokrenuti.
Kao najbolja praksa držite podatke u memoriji samo onoliko dugo koliko je potrebno. Prenesite slike u bazu podataka što je prije moguće; preuzimajte slike samo kada ih korisnik aplikacije zatraži.
Broj i valuta
Vrste podataka Broj i Valuta koriste IEEE 754 standard raspona točaka za dvostruku preciznost. Ovaj standard pruža vrlo veliki raspon brojeva u kojima treba raditi, od –1,79769 x 10308 do 1,79769 x 10308. Najmanja vrijednost koja se može predstaviti je 5 x 10–324.
Aplikacije radnog područja mogu točno predstavljati cijele brojeve između –9.007.199.254.740.991 (–(253 – 1)) i 9.007.199.254.740.991 (253 – 1) uključujući i to. Ovaj raspon je veći od 32-bitnih (ili 4-bajtnih) cjelobrojnih vrsta podataka koje baze podataka obično koriste. Međutim, aplikacije radne površine ne mogu predstavljati 64-bitne (ili 8-bajtne) cjelobrojne vrste podataka. Možda želite pohraniti broj u tekstno polje ili upotrijebiti izračunati stupac za kopiranje broja u tekstnom polju tako da je preslikan u vrstu podataka Text u aplikaciji radne površine. Na ovaj način možete držati, prikazati i upisati ove vrijednosti te ih uspoređivati da biste utvrdili jesu li jednake; međutim, ne možete vršiti numeričke izračune u ovom obrascu.
Aritmetika s pomičnom točkom je približna, pa ponekad može dati neočekivane rezultate na mnogim dokumentiranim primjerima. Možete očekivati da formula 55 / 100 * 100 vrati točno 55 a (55 / 100 * 100) - 55 vrati točno nula. Međutim, zadnja formula vraća 7,1054 x 10–15, što je vrlo malo, ali nije nula. Ta sitna razlika obično ne stvara problem, a aplikacija to zaokružuje kad prikazuje rezultat. Međutim, male razlike mogu se složiti u kasnijim izračunima i čini se da daju pogrešan odgovor.
Sustavi baza podataka često pohranjuju valute i izvode izračune koristeći decimalnu matematiku, što nudi manji raspon, ali veću kontrolu nad preciznošću. Aplikacije radnog područja prema zadanome preslikavaju valute unutar i izvan krajnje vrijednosti; stoga se rezultat može razlikovati od izračuna koji se izvode u izvornoj decimalnoj vrsti podataka. Ako će ova vrsta odstupanja uzrokovati probleme, možda ćete htjeti raditi s ovim vrijednostima kao Text, baš kao što biste mogli s velikim cijelim brojevima opisanim u ovom odjeljku.
Date, Time i DateTime
Vremenske zone
Vrijednosti datum/vrijeme spadaju u ove kategorije:
- Lokalno vrijeme korisnika: Ove vrijednosti pohranjene su u UTC (Univerzalno koordinirano vrijeme), ali vremenska zona korisnika aplikacije utječe na to kako aplikacija prikazuje te vrijednosti i kako ih korisnik određuje. Primjerice, isti trenutak prikazuje se drugačije korisniku u Kanadi od korisnika u Japanu.
- Neovisno o vremenskoj zoni: Aplikacija pokazuje ove vrijednosti na isti način i korisnik aplikacije određuje ih na isti način, neovisno o vremenskoj zoni. Isti trenutak prikazuje se na isti način korisniku u Kanadi kao i korisniku u Japanu. Autori aplikacija koji ne očekuju da se njihove aplikacije izvode u različitim vremenskim zonama koriste ove vrijednosti jer su sveukupno jednostavnije.
Ova tablica pokazuje neke primjere:
| Vrsta Datum/vrijeme. | Vrijednost pohranjena u bazi podataka | Vrijednost prikazana i unesena 7 sati zapadno od UTC | Vrijednost prikazana i unesena 4 sati istočno od UTC |
|---|---|---|---|
| Lokalno vrijeme korisnika | Nedjelja, 19. svibnja 2019. 4:00 |
Subota, 18. svibnja 2019. 21:00 |
Nedjelja, 19. svibnja 2019. 8:00 |
| Neovisno o vremenskoj zoni | Nedjelja, 19. svibnja 2019. 4:00 |
Nedjelja, 19. svibnja 2019. 4:00 |
Nedjelja, 19. svibnja 2019. 4:00 |
Za datum/vrijeme za Lokalno vrijeme korisnika, aplikacije radnog područja koriste vremensku zonu preglednika ili uređaja, ali aplikacije stvorene prema modelu koriste korisničku postavku u Dataverse. Ove se postavke obično podudaraju, ali rezultati će se razlikovati ako se te postavke razlikuju.
Koristite funkcije DateAdd i Informacijeovremenskojzoni za pretvaranje lokalnog vremena korisnika na UTC i natrag. Pogledajte primjere na kraju dokumentacije za ove funkcije.
Numerički ekvivalenti
Aplikacije radnog područja uključuju i izračunavaju sve vrijednosti za datum/vrijeme, bez obzira na Lokalno vrijeme korisnika ili Neovisno o vremenoj zoni u UTC. Aplikacija prevodi vrijednosti na temelju vremenske zone korisnika aplikacije kada ih prikazuje i kada ih korisnik navodi.
Kada aplikacija radnog područja očitava vrijednost Neovisno o vremenskoj zoni iz izvora podataka ili upiše takvu vrijednost u izvor podataka, aplikacija automatski prilagođava vrijednost da nadoknadi vremensku zonu korisnika aplikacije. Aplikacija tada tretira vrijednost kao UTC vrijednost, u skladu sa svim ostalim vrijednostima za datum/vrijeme u aplikaciji. Zbog ove nadoknade, pojavljuje se izvorna vrijednost Neovisno o vremenskoj zoni kada aplikacija prilagodi UTC vrijednost za vremensku zonu korisnika aplikacije.
Ovo ponašanje možete pobliže promatrati pomoću funkcije Value za pristup izvornoj brojčanoj vrijednosti za vrijednost datum/vrijeme. Ova funkcija vraća vrijednost datum/vrijeme kao broj milisekundi od 1. siječnja, 1970. 00:00:00.000 UTC.
S obzirom na to da se svaka vrijednosti datum/vrijeme održava u UTC, formula Value( Date( 1970, 1, 1 ) ) neće vratiti nulu u većini dijelova svijeta jer funkcija Date vraća datum u UTC. Na primjer, formula bi vratila 28.800.000 u vremensku zonu koja je od UTC pomaknuta za osam sati. Taj broj odražava broj milisekundi u osam sati.
Vraćamo se našem primjeru odozgo:
| Vrsta Datum/vrijeme | Vrijednost pohranjena u bazi podataka | Vrijednost prikazana i unesena 7 sati zapadno od UTC | Funkcija Value vraća |
|---|---|---|---|
| Lokalno vrijeme korisnika | Nedjelja, 19. svibnja, 2019. 4:00 |
Subota, 18. svibnja, 2019. 21:00 |
1,558,238,400,000 (Nedjelja, 19. svibnja, 2019. 4:00 AM UTC) |
| Neovisno o vremenskoj zoni | Nedjelja, 19. svibnja, 2019. 4:00 |
Nedjelja, 19. svibnja, 2019. 4:00 |
1,558,263,600,000 (Nedjelja, 19. svibnja, 2019. 11:00 AM UTC) |
Pretvaranje Unix vremena
Unix vremena odražavaju broj sekundi od 1. siječnja, 1970. 00:00:00 UTC. S obzirom na to da aplikacije radne površine koriste milisekunde umjesto sekundi, možete ih pretvoriti množenjem ili dijeljenjem s 1.000.
Primjerice, Unix vrijeme pokazuje 9. rujna, 2001. u 01:46:40 UTC kao 1,000,000,000. Da biste pokazali vrijednosti datum/vrijeme u aplikaciji radnog područja, pomnožite taj broj s 1.000 da biste ga pretvorili u milisekunde, a zatim ga upotrijebite u funkciji Text. Formula Text( 1000000000 * 1000, DateTimeFormat.UTC ) vraća niz 2001-09-09T01:46:40.000Z.
Međutim, ta funkcija vraća Subota, 8. rujna, 2001. 18:46:40 ako koristite format Formatdatumvrijeme.Dugačakdatumvrijeme24 u vrmenskoj zoni koja je pomaknuta za -7 sati od UTC (7 sati zapadno od UTC). Ovaj rezultat pokazuje točnu vrijednost DateTime na temelju lokalne vremenske zone.
Da biste pretvorili u Unix vrijeme, podijelite rezultat iz Value sa 1,000:
RoundDown( Value( UnixTime ) / 1000, 0 )
Ako vam treba Unix vrijeme u vrijednosti Datum za daljnje izračune ili prikaz unutar Power Apps, koristite ovu formulu:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )
SQL Server
SQL Server ima DateTime, DateTime2, i druge vrste podataka datum/vrijeme koji ne uključuju pomak vremenske zone i ne navode u kojoj se vremenskoj zoni nalaze. Aplikacije radnog područja pretpostavljaju da su ove vrijednosti pohranjene u UTC i tretiraju ih kao Lokalno vrijeme korisnika. Ako vrijednosti trebaju biti neovisne o vremenskoj zoni, ispravite za UTC prijevode pomoću funkcije TimeZoneOffset.
Aplikacije radnog područja koriste obuhvaćene informacije o vremenskoj zoni u poljima Pomakzadatumvrijeme prilikom pretvaranja vrijednosti na unutarnji UTC prikaz aplikacije. Aplikacije uvijek koriste UTC kao vremensku zonu (nulti pomak vremenske zone) kada upisuju podatke.
Aplikacije radnog područja čitaju i pišu vrijednosti vrste podataka Time u SQL Server kao tekstni niz u ISO 8601 format trajanja. Na primjer, morate raščlaniti ovaj format niza i koristiti funkciju Time za pretvaranje tekstnog niza "PT2H1M39S" u vrijednost Time:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)
Miješanje informacija o datumu i vremenu
Date, Time i DateTime imaju različite nazive ali svi imaju iste informacije o datumima i vremenima.
Vrijednost Date može uključivati informacije o vremenu, što je obično ponoć. Vrijednost Time može obuhvaćati informacije o datumu, što je obično 1. siječnja, 1970. godine. Dataverse također pohranjuje informacije o vremenu s poljem Samo datum ali prema zadanome, pokazuje samo informacije o datumu. Slično tome, aplikacije radnog područja ponekad razlikuju ove vrste podataka za određivanje zadanih formata i kontrola.
Ne preporučuje se dodavanje i oduzimanje vrijednosti datuma i vremena jer vremenska zona i druge pretvorbe mogu prouzročiti zbunjujuće rezultate. Koristite funkciju Value da biste pretvorili vrijednosti datum/vrijeme u milisekunde i uzmite u obzir vremensku zonu korisnika aplikacije ili koristite funkcije DateAdd i DateDiff da biste dodali ili oduzeli jednu od ovih vrijednosti.
Izbori i Da/Ne
Izbori i vrste podataka s dvije mogućnosti pružaju dva ili više izbora za odabir korisnika aplikacije. Na primjer, izbor Stanje narudžbe može ponuditi izbore Novo, Otpremljeno, Fakturirano i Zatvoreno. Vrsta podataka dvije opcije nudi samo dva izbora.
Obje ove vrste podataka pokazuju svoje oznake u kontekstnom tekstnom nizu. Na primjer, kontrola oznake prikazuje jednu od mogućnosti statusa narudžbe ako je svojstvo Teksta kontrole postavljeno na formulu koja upućuje na taj izbor. Oznake mogućnosti mogu se lokalizirati za korisnike aplikacija na različitim lokacijama.
Kad korisnik aplikacije odabere mogućnost i spremi tu promjenu, aplikacija podatke šalje u bazu podataka, koja pohranjuje te podatke u reprezentaciji koja je neovisna o jeziku. Mogućnost u izboru prenosi se i pohranjuje kao broj, a mogućnost u vrsti podataka s dvije mogućnosti prenosi se i pohranjuje kao Booleova vrijednost.
Oznake služe samo za potrebe prikaza. Ne možete provesti direktne usporedbe s oznakama jer su one specifične za jezik. Umjesto toga, svaki izbor ima nabrajanje koje radi s osnovnim brojem ili Booleovom vrijednošću. Na primjer, ne možete koristiti ovu formulu:
If( ThisItem.OrderStatus = "Active", ...
Ali možete koristiti ovu formulu:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Za globalne izbore (koje tablice dijele) naziv nabrajanja skupa mogućnosti podudara se s nazivom globalnog izbora. Za lokalne izbore (koji su ograničeni na tablicu), naziv može sadržavati naziv tablice. Ovo ponašanje izbjegava sukobe ako više tablica ima izbore s istim nazivom. Na primjer, tablica Računi može imati izbor Stanje narudžbe, a njegov bi naziv mogao biti Status narudžbe (Računi). To ime sadrži jedan ili više razmaka i zagrade, pa ga morate okružiti jednim navodnicima ako ga upućujete u formuli.
Osim toga, vrijednosti s dvije mogućnosti mogu se ponašati kao Booleove vrijednosti. Na primjer, vrijednost s dvije mogućnosti pod nazivom Poreznistatus možda ima oznake Oporezivo i Neoporezivo, koje sukladno tome odgovaraju true i false. Za prikaz možete koristiti ovu formulu:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Možete koristiti i ovu ekvivalentnu formulu:
If( ThisItem.Taxable, ...