Vrste podataka
Napomena
Microsoft Power Fx novo je ime za jezik formula za aplikacije od gotovih gradivnih elemenata. Ovi su članci nedovršeni dok izdvajamo jezik iz aplikacija od gotovih gradivnih elemenata i integriramo ga s drugim Microsoft Power Platform proizvoda i činimo ga dostupnim kao otvoreni kod. Počnite s odjeljkom Pregled jezika Microsoft Power Fx za uvod u jezik.
Informacije prolaze kroz Microsoft Power Fx u malim, diskretnim vrijednostima, slično ć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 pruža pojedinosti o vrstama podataka koje podržava Power Fx. Kada se vanjski podaci unesu u jezik, svaka vrsta podataka u tom izvoru mapira se u vrstu podataka za Power Fx.
| Vrsta podataka | Opis | Primjeri |
|---|---|---|
| Boolean | Vrijednost true ili false. Može se koristiti izravno u Ako, 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 |
| Skup mogućnosti | 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 | Upućivanje na zapis u entitetu. 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 Prazno s funkcijom Postavi 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:

Power Fx referencira svaku sliku ili drugu medijsku datoteku, bilo da je u oblaku ili dodana kao resurs aplikacije, pomoću URI tekstnog niza.
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. Tako aplikacija neće dohvatiti stvarne podatke sve dok nisu potrebni. Na primjer, privitak u entitetu Microsoft Dataverse se može vratiti "appres://datasources/Contacts/table/..." Kao u primjeru kamere, ovu sliku možete prikazati podešavanjem svojstva Slika kontrole slike za 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 širok raspon brojeva u kojima se može raditi, od –1,79769 x 10308 do 1,79769 x 10308. Najmanja vrijednost koja se može predstaviti je 5 x 10–324.
Power Fx može točno predstavljati cijele brojeve (ili cijele brojeve) između –9 007 199 254 740 991 (-(253- 1)) i 9 007 199 254 740 991 (253- 1) uključivo. Ovaj raspon je veći od 32-bitnih (ili 4-bajtnih) cjelobrojnih vrsta podataka koje baze podataka obično koriste. Međutim, Power Fx ne može predstavljati 64-bitne (ili 8-bajtne) vrste cjelobrojnih podataka. Možda biste trebali pohraniti broj u tekstno polje ili koristiti izračunati stupac da biste kopirali broj u tekstno polje, tako da je mapiran u vrstu podataka Tekst u programu Power Fx. Na taj način možete zadržati, prikazati i unijeti te vrijednosti te ih uspoređivati da biste utvrdili jesu li jednake; međutim, u ovom obrascu na njima ne možete izvoditi numeričke izračune.
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, potonja formula vraća 7,1054 x 10–15, što je 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. Prema zadanim postavkama aplikacije Power Fx mapiraju valute u vrijednosti s pokretnom točkom i izvan njih, stoga se rezultat može razlikovati od izračuna koji se rade u nativnoj 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 |
Kada se koristi u Power Apps za datum / vrijeme Lokalno vrijeme korisnika, Power Fx koristi 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
Power Fx čuva i izračunava sve vrijednosti datuma/vremena, bez obzira jesu li Lokalno vrijeme korisnika ili Neovisno o vremenskoj zoni u UTC. Aplikacija prevodi vrijednosti na temelju vremenske zone korisnika aplikacije kada ih prikazuje i kada ih korisnik navodi.
Kada Power Fx pročita vrijednost Neovisno o vremenskoj zoni iz izvora podataka ili zapisuje takvu vrijednost u izvor podataka, aplikacija automatski prilagođava vrijednost kako bi nadoknadila 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. Budući da Power Fx koristi 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 vrijednost tog datuma/vremena prikazali kao tekst, pomnožite taj broj s 1 000 da biste ga pretvorili u milisekunde, a zatim ga koristite u funkciji Tekst. 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. Power Fx pretpostavlja da su te vrijednosti pohranjene u UTC i tretira ih kao Lokalno vrijeme korisnika. Ako vrijednosti trebaju biti neovisne o vremenskoj zoni, ispravite ih za UTC prijevode pomoću funkcije TimeZoneOffset.
Power Fx koristi uključene podatke o vremenskoj zoni u poljima Datetimeoffset prilikom pretvaranja vrijednosti u interni UTC prikaz aplikacije. Aplikacije uvijek koriste UTC kao vremensku zonu (nulti pomak vremenske zone) kada upisuju podatke.
Power Fx čita i zapisuje vrijednosti vrste podataka Vrijeme u SQL Server kao tekstne nizove u Formatu trajanja ISO 8601. 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, Power Fx ponekad razlikuje ove vrste podataka kako bi odredio zadane formate i kontrole.
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.
Skup mogućnosti i dvije mogućnosti
Vrste podataka skupovi mogućnosti i dvije mogućnosti pružaju dva ili više izbora za odabir korisnika aplikacije. Na primjer, skup mogućnosti Status narudžbe može ponuditi odabire Novo, Isporučeno, 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 pokazuje jednu od mogućnosti statusa narudžbe ako je svojstvo kontrole Text postavljeno na formulu koja upućuje na taj skup mogućnosti. 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 skupu mogućnosti prenosi se i pohranjuje kao broj, a mogućnost vrsti podataka 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 skup mogućnosti koristi enumeraciju koja radi s predmetnim brojem ili boolean vrijednosti. 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 skupove mogućnosti (koje dijele entiteti) naziv enumeracije skupa mogućnosti odgovara nazivu globalnog skupa mogućnosti. Za lokalne skupove mogućnosti (koji su određeni za entitet) naziv može uključivati naziv entiteta. Ovo ponašanje izbjegava konflikte ako više entiteta imaju skupove mogućnosti s istim nazivom. Na primjer, entitet Računi može imati skup mogućnosti Statusnarudžbe a njegov naziv može biti Statusnarudž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, ...