Tipovi podataka
Informacije teku kroz Power Fx male, diskretne vrednosti, veoma slično ćelijama tabele. Na primer, podaci u polju Rođendan i polju Godišnjica teku kroz vrednost Datum koja uključuje godinu, mesec i dan. Power Fx zna kako da formatira ove vrednosti, ograniči unos na ono što je prikladno za svaku od njih i deli vrednosti sa bazom podataka. Rođendani se ljudima razlikuju od godišnjica, ali sistem tim podacima rukuje na potpuno isti način. U ovom slučaju, Datum je primer tipa podataka.
Ovaj članak pruža detalje o tipovima podataka koji Power Fx podržavaju. Kada Power Fx se poveže sa spoljnim izvorom podataka, svaki tip podataka u tom izvoru je mapiran na tip podataka u Power Fx.
Tip podataka | Opis | Primeri |
---|---|---|
Bulovu | Vrednost tačno ili netačno. Može se direktno koristiti u funkcijama If, Filter i drugim funkcijama bez poređenja. | Istina |
Izbor | Izbor iz niza opcija, podržanih brojem. Ovaj tip podataka kombinuje oznaku teksta koja može da se lokalizuje i koja ima numeričku vrednost. Oznaka se prikazuje u aplikaciji, a numerička vrednost se čuva i koristi za poređenje. Ovaj tip podataka je podržan od strane funkcije Tip ako se instanca polja Izbor koristi po imenu. | ThisItem.OrderStatus |
Boja | Specifikacija boje, uključujući alfa kanal. |
Boja.Crvena ColorValue( "#102030" ) RGBA( 255, 128, 0, 0.5 ) |
Valuta | Vrednost valute koja se čuva u broju s pomičnom zarezom. Vrednosti valuta jednake su brojčanim vrednostima sa opcijama formatiranja valuta. Tip podataka valute nije podržan od strane funkcije Tipe . |
123 4.56 |
Datum | Datum bez vremena, u vremenskoj zoni korisnika aplikacije. | Datum( 2019, 5, 16 ) |
Datum i vreme | Datum sa vremenom, u vremenskoj zoni korisnika aplikacije. | DateTimeValue( "16. maj, 2019 1:23:09 AM" ) |
Decimalni | Broj sa visokom preciznošću, bazom 10 operacija i ograničenim dometom. |
123 Decimalna( "1.2345" ) |
Pluta | Broj sa standardnom preciznošću, bazom 2 operacija i širokim rasponom. |
123 8.903e121 1.234E-200 |
GUID | Globalno jedinstveni identifikator. |
GUID() GUID( "123e4567-e89b-12d3-a456-426655440000" ) |
Hiperveza | Tekstualna niska koja sadrži hipervezu. | "https://powerapps.microsoft.com" |
Slika | Tekstualna niska univerzalni identifikator resursa (URI) do slike u .jpeg, .png, .svg, .gif ili drugom uobičajenom formatu veb-slike. Tip podataka slike nije podržan od strane funkcije Tip . |
MiImage je dodat kao resurs aplikacije "https://northwindtraders.com/logo.jpg" "appres://blobmanager/7b12ffa2..." |
Media | URI tekstualna niska video ili audio zapisa. Tip podataka Mediji nije podržan od strane funkcije Tipe . |
MiVideo je dodan kao resurs aplikacije "https://northwindtraders.com/intro.mp4" "appres://blobmanager/3ba411c..." |
Broj | Alias za Decimal (većina Power Fx domaćina) ili Float (Canvas aplikacije). Ako se bilo koja vrsta broja može koristiti za datu situaciju, koristite broj za maksimalnu kompatibilnost. |
123 0.0123 1e4 |
Zapis | Zapis vrednosti podataka. Ovaj složeni tip podataka sadrži instance drugih tipova podataka koji su navedeni u ovoj temi. Još informacija: Rad sa tabelama. Ovaj tip podataka je podržan funkcijom Type ako se koristi instanca zapisa . |
{ Kompanija: "Northwind Traders", Staff: 35, NonProfit: false } |
Referenca zapisa | Referenca na zapis u tabeli. Takve reference se često koriste kod polimorfnih pronalaženja. Još informacija: Rad sa referencama. Ovaj tip podataka nije podržan od strane funkcije Tipe . | Prvo (Računi). Vlasnik |
Stol | Tabela zapisa. Svi zapisi moraju imati ista imena za svoja polja sa istim tipovima podataka, a izostavljena polja se tretiraju kao prazna. Ovaj složeni tip podataka sadrži instance drugih tipova podataka koji su navedeni u ovoj temi. Još informacija: Rad sa tabelama. Ovaj tip podataka je podržan od strane funkcije Type ako se koristi instanca tabele . |
Tabela( { Ime: "Sidnei", LastName: "Higa" }, { FirstName: "Nancy", LastName: "Anderson" } ) |
Tekstualna poruka | Niska Unikod teksta. | "Zdravo, Svet" |
Vreme | Vreme bez datuma, u vremenskoj zoni korisnika aplikacije. | Vreme( 11, 23, 45 ) |
Neotkucano | Objekat nedeklarisanog tipa. Osnovni objekat može biti bilo koji postojeći tip, i može se pretvoriti u kompatibilne tipove koristeći funkcije kao što su Boolean (), Value (), Table () itd. Za više informacija, pogledajte Netipisani objekat i Rad sa JSON-om. | ParseJSON("{ ""Field"" : 1234 }"). Polje |
Prazninu | Koristi se samo od strane ponašanja korisnički definisanih funkcija, to ukazuje da funkcija nema tip povratka. Ovaj tip podataka nije podržan od strane funkcije Tipe . Čak i ako funkcija nema povratni tip ili vrednost, ona uvek može da vrati grešku. | Hi(): void = { Notifi( "Hello!" ) } |
Da/Ne | Izbor iz niza od dve opcije, podržane logičkom vrednošću. Ovaj tip podataka kombinuje oznaku teksta koja može da se lokalizuje i koja ima logičku vrednost. Oznaka se prikazuje u aplikaciji, a logička vrednost se čuva i koristi za poređenje. Ovaj tip podataka je podržan od strane funkcije Type ako je instanca polja Da/Ne korišćena po imenu. | ThisItem.Oporezivi |
Mnogi od ovih tipova podataka su slični i imaju isto osnovno predstavljanje, kao što se polje tipa hiperveza se tretira kao tekst. Dodatni tipovi podataka pružaju bolja podrazumevana iskustva u obrascima i drugim kontrolama.
Prazno
Svi tipovi podataka mogu imati vrednost prazno (drugim rečima, bez vrednosti). Izraz "null" se često koristi u bazama podataka za ovaj koncept.
Koristite funkciju Blank sa funkcijom Set ili Patch da biste podesili promenljivu ili polje na prazno. Na primer, Set( x, Blank() ) uklanja svaku vrednost u globalnoj promenljivoj x.
Testirajte praznu vrednost koristeći funkciju IsBlank. Zamenite moguće prazne vrednosti nepraznim vrednostima pomoću funkcije Coalesce.
Pošto svi tipovi podataka podržavaju prazno, tipovi podataka logička vrednost i dve opcije efektivno imaju tri moguće vrednosti.
Tekst, hiperveza, slika i mediji
Sve četiri ove vrste podataka zasnovane su na Unikod tekstualnoj niski.
Ugrađeni tekst
Ugrađene niske teksta u formuli su zatvorene u dvostrukim navodnicima. Koristite dva dvostruka navodnika zajedno da biste predstavili jedan jednostruki navodnik u tekstualnoj niski. Na primer, ako koristite sledeću formulu u svojstvu OnSelect kontrole dugme:
Notify( "Jane said ""Hello, World!""" )
dobićete baner kada se pritisnete dugme, pri čemu su prvi i poslednji dvostruki navodnik izostavljeni (jer oni ograničavaju tekstualnu nisku), a ponovljeni dvostruki navodnici oko Zdravo svima! se zamenjuju jednostrukim navodnicima:
Oznake za jednostruke navodnike se koriste za nazive identifikatora koji sadrže posebne znakove i nemaju nikakvo posebno značenje unutar tekstualne niske.
Interpolacija niske
Koristite interpolaciju niske da biste ugradili formule unutar tekstualne niske. Ovaj pristup je često lakši za rad i vizualizaciju izlaza nego pomoću funkcije Concatenate ili & operatora.
Stavite prefiks tekstualne niske znakom za dolar $ i zatvorite formulu koja će biti ugrađena u vitičaste zagrade { }. Da biste uključili vitičastu zagradu u tekstualnu nisku, koristite ponovljene zagrade za vitičaste zagrade: {{ or }}. Interpolacija niske se može koristiti na svakom mestu gde se može koristiti standardna tekstualna niska.
Na primer, uzmite u obzir ovu formulu sa globalnim promenljivama Jabuke, postavljeno na 3, i kruške, postavljeno na 4:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Ova formula daje tekstualnu nisku Imamo 3 jabuke, 4 kruške, što daje ukupno 7 komada voća. Promenljive Jabuke i kruške se ubacuju u tekst zamenjujući vitičaste zagrade, zajedno sa rezultatom matematičke formule Jabuke + kruške. Razmaci i drugi znakovi oko vitičastih zagrada se čuvaju onako kako jesu.
Ugrađene formule mogu da sadrže sve funkcije ili operatore. Sve što je potrebno je da se rezultat formule može prisiliti na tekstualnu nisku. Na primer, ova formula ubacuje NickName ako je isporučen, ili Ime ako nije, u pozdrav:
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"
Ako je Nadimaj podešeno na „Džo“, onda ova formula proizvodi tekstualnu nisku Dobro došli Džo, sjajno je upoznati vas!. Ali ako je Nadimak ostao prazan a Ime je „Džozef“, onda ova formula umesto toga proizvodi Dragi Džozef, sjajno je upoznati vas!.
Interpolacija niske može da sadrži standardne tekstualne niske u ugrađenoj formuli. Na primer, ako ni Nadimak ni Ime nisu navedeni, još uvek možemo da obezbedimo reč Prijatelju kao zamenu:
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Interpolacije niski se čak mogu ugnezditi. Uzmite u obzir ovaj primer gde se Ime, Srednje ime i Prezime kombinuju u pozdrav. Čak i ako je jedna ili dve od ovih vrednosti prazno , tačan broj razmaka se održava između delova imena. Ako nijedan od delova nije naveden, unutrašnja interpolacija niske će se skupiti u praznu nisku i biće zamenjena funkcijom Coalesce u „Prijatelju“.
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Ime | Sredina | Poslednja | rezultat |
---|---|---|---|
John | Qunicy | Doe | Welcome John Quincy Doe! |
John | Prazno | Doe | Welcome John Doe! |
Prazno | Prazno | Doe | Welcome Doe! |
Prazno | Prazno | Prazno | Welcome Friend! |
Nove linije
Ugrađene tekstualne niske mogu da sadrže nove linije. Na primer, razmotrite da podesite svojstvo Text kontrole Label na sledeći način:
"Line 1
Line 2
Line 3"
Ova formula rezultira u tri linije prikazane u kontroli oznake:
Nove linije su takođe podržane sa string interpolacijom:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Što rezultira istim izlazom:
Resursi slika i medija
Putem menija Datoteka možete da dodajete slike, video i audio datoteke kao resurse aplikacija. Ime uvezene datoteke postaje ime resursa u aplikaciji. U ovoj grafici, logotip Northvind Traders, koji se zove nvindlogo, dodan je u aplikaciju:
Da biste koristili ovaj resurs u aplikaciji, navedite ga u svojstvu Image kontrole Slika:
URI-ji za slike i druge medije
Možete da se detaljnije upoznate sa tim poslednjim primerom ako podesite svojstvo Text kontrole oznaka na nwindlogo. Oznaka prikazuje tekstualnu nisku:
Aplikacije sa podlogom referenciraju svaku sliku ili drugu medijsku datoteku, bilo da je u oblaku ili je dodata kao resurs aplikacije, putem URI tekstualne niske.
Na primer, svojstvo Image kontrole slike prihvata ne samo resurse Aplikacija već i veze do slika na vebu, kao što je "https://northwindtraders.com/logo.jpg". Svojstvo takođe prihvata umetnute slike koje koriste šemu URI podataka, kao u ovom primeru:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
Taj URI prikazuje umanjenu verziju dva ljubičasta romba:
Možete prikazati najnoviju sliku snimljenu u kontroli Kamera ako svojstvo Image kontrole slike podesite na svojstvo Photo kontrole kamere. Aplikacija čuva sliku u memoriji i svojstvo Photo kontrole kamere vraća URI referencu na sliku. Na primer, možete da snimite sliku, a svojstvo Photo kamere može da vrati "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
Koristite URI da biste referencirali sliku ili drugu medijsku datoteku smeštenu u bazu podataka. Na taj način, aplikacija ne preuzima stvarne podatke dok nisu potrebni. Na primer, prilog u Microsoft Dataverse tabeli može vratiti "appres://datasources/Contacts/table/..." Kao u primeru sa kamerom, ovu sliku možete prikazati podešavanjem svojstva Image kontrole slike na ovu referencu, koja preuzima binarne podatke.
Kada sačuvate tip podataka medija, poput slike, u bazu podataka, aplikacija šalje stvarnu sliku ili podatke medija, a ne URI referencu.
Ograničenja veličine
Kao niske teksta i URI-ji, ovi tipovi podataka nemaju unapred zadato ograničenje dužine.
Binarni podaci na koje se odnose ove vrste podataka takođe nemaju unapred zadato ograničenje veličine. Na primer, slika snimljena kroz kontrolu kamere koja se odnosi na "appres://..." može biti velika i visoke rezolucije kao kamera uređaja može da skupi. Rezolucija, broj slika u sekundi i drugi atributi medijskih datoteka nisu ograničeni tipom podataka, ali posebne kontrole za reprodukciju i snimanje medija mogu imati sopstvena ograničenja.
Međutim, sve veličine podataka podležu količini dostupne memorije u aplikaciji. Pregledači na stonom računaru obično podržavaju više od 100 megabajta podataka. Međutim, količina dostupne memorije na uređaju kao što je telefon može biti daleko manja, obično u opsegu 30-70 megabajta. Da biste utvrdili da li vaša aplikacija radi u ovim granicama, testirajte uobičajene scenarije na svim uređajima na kojima bi trebalo da radi.
Kao najbolja praksa, držite podatke u memoriji samo onoliko dugo koliko je potrebno. Otpremite slike u bazu podataka što je pre moguće; preuzmite slike samo kada ih korisnik aplikacije zatraži.
Brojevi
Belešku
Power Apps danas podržava samo Float i to je tip svih brojeva. Decimalna podrška će biti dodata uskoro.
Power Fx podržava dve vrste brojeva: Decimalni i Float (sa sinonimima Broj i Valuta ).
Decimalna je najbolja za većinu poslovnih proračuna. Može tačno predstaviti brojeve u bazi 10, što znači da 0.1
se može tačno predstaviti i da će izbeći greške zaokruživanja tokom proračuna. Ima dovoljno veliki opseg za bilo koju poslovnu potrebu, do 10- 28 sa do 28 cifara preciznosti.
Decimalni je podrazumevani numerički tip podataka za većinu Power Fx domaćina, koji se koristi ako se jednostavno piše 2*2
.
Float je najbolji za naučne proračune. Može predstavljati brojeve u većem opsegu, do 10308. Preciznost je ograničena na 15 decimalnih mesta i matematika se zasniva na bazi 2, tako da ne može precizno predstaviti neke zajedničke decimalne vrednosti. Float takođe ima veće performanse i favorizovan je ako je to faktor i preciznost nije kritična.
Decimalni brojevi
Decimalni tip podataka najčešće koristi .NET decimalni tip podataka. Neki domaćini, kao što su Dataverse kolone formule koje se pokreću u SKL Serer-u, koriste SKL Server decimalni tip podataka.
Decimalno radi matematiku na način na koji ste učili u školi, koristeći bazu 10 cifara, važno je da se izbegne zaokruživanje grešaka od vrlo malih razlika koje se mogu akumulirati kada se koristi osnova 2 matematika (kao što koristi Float).
Raspon je od pozitivnog 79,228,162,514,264,337,593,543,950,335 do negativnog 79,228,162,514,264,337,593,543,950,335. Decimalni separator može biti postavljen bilo gde unutar ovih brojeva, pružajući do 28 cifara preciznosti, i dalje biti precizno predstavljen. Na primer, 79,228,162,514,264.337593543950335 može biti tačno predstavljen, kao i 7.9228162514264337593543950335.
Brojevi sa pomičnim zarezom
Tip podataka Float , poznat i kao Broj ili Valuta, koristi IEEE 754 standard sa pomičnim zarezom sa dvostrukom preciznošću. Taj standard pruža veoma veliki raspon brojeva u kojima treba raditi, od –1,79769 x 10308 do 1,79769 x 10308. Najmanja vrednost koja se može predstaviti je 5 x 10–324.
Float može tačno predstavljati cele brojeve (ili cele brojeve) između –9,007,199,254,740,991 (–(253 – 1)) i 9,007,199,254,740,991 (253 – 1), zaključno. Ovaj opseg je veći od 32-bitnog (ili 4-bajtnog) celobrojnog tipa podataka koje najčešće koriste baze podataka. Međutim, aplikacije sa podlogom ne mogu predstavljati 64-bitne (ili 8-bajtne) celobrojne tipove podataka. Možda ćete želeti da sačuvate broj u tekstualnom polju ili koristite izračunatu kolonu da napravite kopiju broja u tekstualnom polju, tako da se mapira u tekstualni tip podataka aplikaciju platna. Na ovaj način možete da zadržite, prikažete i unesete ove vrednosti i uporedite ih da biste utvrdili da li su jednake; međutim, u tom obliku ne možete obavljati numerička izračunavanja nad njima.
Aritmetika pokretnog zareza je približna, tako da ponekad može dati neočekivane rezultate na mnogim dokumentovanim primerima. Možete očekivati da formula 55 / 100 * 100 vrati tačno 55 i da (55 / 100 * 100) – 55 vrati tačno nulu. Međutim, druga formula vraća 7,1054 x 10–15, što je veoma mala vrednost, ali nije nula. Ta sitna razlika obično ne pravi problem, a aplikacija je zaokružuje kada prikazuje rezultat. Međutim, male razlike mogu se naslagati u narednim proračunima i dovesti do toga da daju pogrešan odgovor.
Sistemi baza podataka često skladište valute i izvršavaju proračune koristeći decimalnu matematiku, što nudi manji opseg, ali veću kontrolu nad preciznošću. Prilagođene aplikacije sa podlogom podrazumevano mapiraju valute u vrednosti sa pokretnim zarezom i nazad; stoga se rezultat može razlikovati od izračunavanja koja se obavljaju u prirodnom decimalnom tipu podataka. U zavisnosti od potreba za preciznošću vaše aplikacije, možda ćete želeti da radite sa ovim vrednostima kao tekstom, baš kao što je ranije opisano za velike cele brojeve.
Podrazumevane vrednosti i konverzije
Belešku
Power Apps danas podržava samo Float i to je tip svih brojeva. Decimalna podrška će biti dodata uskoro.
Većina Power Fx domaćina koristi Decimal po defaultu. Imajući ovu podrazumevanu vrednost znači:
- Bukvalni brojevi u formulama. Broj
1.234
se tumači kao decimalna vrednost. Na primer, formula tumači i kao Decimalno1.234 * 2
i vraća decimalni1.234
2
rezultat. - Funkcija vrednosti.
Value( "1.234" )
vraća decimalnu vrednost. Na primer, u formuliValue( "1.234" ) * 2
, funkcija Vrednost tumači sadržaj tekstualnog niza"1.234"
kao decimalni .
Da biste radili sa Float vrednostima, koristi se funkcija Float . Proširenje našeg primera, Float( 1.234 )
pretvara Decimal1.234
u Float.
Float se takođe može koristiti kao zamena za Vrednost za konvertovanje stringa koji sadrži broj sa pomičnim zarezom kao što Float( "1.234" )
je Float vrednost, što je potrebno ako broj ne može biti predstavljen kao Decimal.
Ukratko:
Iskorišćenost | Decimalni | Pluta |
---|---|---|
Bukvalni brojevi u formulama | 1.234 |
Float( 1.234 ) Float( "1.234" ) |
Konverzija iz tekstualnog niza | Value( "1.234" ) Decimal( "1.234" ) |
Float( "1.234" ) |
Konverzija između numeričkih tipova | Decimal( float ) |
Float( decimal ) |
Konverzija u tekstualni niz | Text( decimal ) |
Text( float ) |
Mešanje numeričkih tipova
Float i decimalne vrednosti mogu se slobodno mešati. Kada se mešaju, Decimalne vrednosti se pretvaraju u Float vrednosti zbog većeg opsega. Pošto ova konverzija može dovesti do gubitka preciznosti, važno je da se ne mešaju dva nepotrebno. Pošto je Decimal podrazumevani bukvalni tip podataka i većina numeričkih funkcija čuva tip, relativno je lako izbeći prelazak na Float bez želje.
Na primer, razmotrite sledeću kalkulaciju koristeći pac power-fx repl
nakon instaliranja CLI-a Power Platform . Pošto su oba broja decimalna , izračunavanje se vrši u decimalnom , a rezultat zadržava punu preciznost:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Ako bi umesto toga, drugi operand bio promenjen u Float onda bi ceo proračun bio urađen u Float-u, a mali delić bi bio izgubljen:
>> 1.0000000000000000000000000001 * Float(2)
2
Datum, vreme i datum-vreme
Vremenske zone
Vrednosti datuma/vremena spadaju u ove kategorije:
- Lokalni korisnik: Ove vrednosti se čuvaju u UTC (koordinirano univerzalno vreme), ali vremenska zona korisnika aplikacije utiče na to kako aplikacija prikazuje ove vrednosti i kako ih korisnik aplikacije specificira. Kao primer, isti trenutak se različito prikazuje korisniku u Kanadi nego što se prikazuje korisniku u Japanu.
- Nezavisno od vremenske zone: Aplikacija prikazuje ove vrednosti na isti način, a korisnik aplikacije ih određuje na isti način, bez obzira na vremensku zonu. Isti trenutak se prikazuje na isti način korisniku u Kanadi nego kao i korisniku u Japanu. Autori aplikacija koji ne očekuju da se njihove aplikacije pokreću u različitim vremenskim zonama koriste te vrednosti jer su one sveukupno jednostavnije.
Ova tabela prikazuje nekoliko primera:
Tip datum/vreme | Vrednost uskladištena u bazi podataka | Vrednost je prikazana i unesena 7 sati zapadno od UTC | Vrednost je prikazana i unesena 4 sata istočno od UTC |
---|---|---|---|
Korisnik lokalno | Nedelja,19.maj2019. 4:00 |
Subota,18.maj2019. 21:00 |
Nedelja,19.maj2019. 8:00 |
Vremenska zona nezavisna | Nedelja,19.maj2019. 4:00 |
Nedelja,19.maj2019. 4:00 |
Nedelja,19.maj2019. 4:00 |
Za korisnički lokalni datum/vreme, aplikacije sa podlogom koriste vremensku zonu pregledača ili uređaja, ali aplikacije zasnovane na modelu koriste korisničku postavku u usluzi Dataverse. Ove postavke se obično poklapaju, ali rezultati će se razlikovati ukoliko se te postavke razlikuju.
Koristite funkcije DateAdd i TimeZoneInformation za konvertovanje lokalnog vremena u UTC i nazad. Pogledajte primere na kraju dokumentacije za ove funkcije.
Numerički ekvivalenti
Aplikacije sa podlogom sadrže i izračunavaju sve vrednosti datuma/vremena, da li je lokalno vreme korisnika ili nezavisno od vremenske zone u UTC. Aplikacija prevodi vrednosti na osnovu vremenske zone korisnika aplikacije kada ih prikazuje i kada ih korisnik specificira.
Kada aplikacija sa podlogom pročita vrednost nezavisnu od vremenske zone iz izvora podataka ili upisuje takvu vrednost u izvor podataka, aplikacija automatski prilagođava vrednost da kompenzuje vremensku zonu korisnika aplikacije. Aplikacija tada tretira vrednost kao UTC vrednost, u skladu sa svim ostalim vrednostima datuma/vremena u aplikaciji. Zbog ove kompenzacije, originalna vrednost nezavisno od vremenske zone se prikazuje kada aplikacija prilagodi UTC vrednost za vremensku zonu korisnika aplikacije.
Ovo ponašanje možete bliže posmatrati koristeći funkciju Value za pristup osnovnoj numeričkoj vrednosti za vrednost datuma/vremena. Ova funkcija vraća vrednost datuma/vremena kao broj milisekundi od 1. januara 1970. 00:00:00.000 UTC.
Budući da se svaka vrednost datuma/vremena održava u UTC, formula Value( Date( 1970, 1, 1 ) ) neće vratiti nulu u većini delova sveta, jer funkcija Date vraća datum u UTC. Na primer, formula bi vratila 28.800.000 u vremensku zonu koja je pomerena od UTC za osam sati. Taj broj odražava broj milisekundi u osam sati.
Vraćajući se na naš primer:
Tip datum/vreme | Vrednost uskladištena u bazi podataka | Vrednost je prikazana i unesena 7 sati zapadno od UTC | Funkcija vrednosti se vraća |
---|---|---|---|
Korisnik lokalno | Nedelja,19.maj2019. 4:00 |
Subota,18.maj2019. 21:00 |
1,558,238,400,000 (Nedelja,19.maj2019. 4:00 UTC) |
Vremenska zona nezavisna | Nedelja,19.maj2019. 4:00 |
Nedelja,19.maj2019. 4:00 |
1,558,263,600,000 (Nedelja,19.maj2019. 11:00 UTC) |
Konvertovanje Unix vremena
Unix vremena odražavaju broj sekundi od 1. januara, 1970 00:00:00 UTC. Budući da aplikacije sa podlogom koriste milisekunde umesto sekundi, možete ih konvertovati množenjem ili deljenjem sa 1000.
Na primer, Unix vreme prikazuje 9. septembar 2001. u 01:46:40 UTC kao 1.000.000.000. Da biste prikazali vrednost datuma/vremena u aplikaciji sa podlogom, pomnožite taj broj sa 1000 da biste ga pretvorili u milisekunde, a zatim ga koristite u funkciji Text. Formula Text( 1000000000 * 1000, DateTimeFormat.UTC ) vraća nisku 2001-09-09T01:46:40.000Z.
Međutim, ta funkcija vraća Subota, 8. septembar 2001. 18:46:40 ako koristite format DateTimeFormat.LongDateTime24 u vremenskoj zoni koja je pomaknuta za –7 sati od UTC (7 sati zapadno od UTC). Ovaj rezultat pokazuje vrednost tipa datum-vreme pravilno na osnovu lokalne vremenske zone.
Da biste ga konvertovali u Unix vreme, podelite rezultat funkcije Value sa 1000:
RoundDovn( Value( UnixTime ) / 1000, 0 )
Ako vam treba Unix vreme u vrednosti Datum vrednost za dalja izračunavanja ili prikaz unutar usluge Power Apps, koristite ovu formulu:
DateAdd( Date( 1970,1,1 ), UnixTime, sekundi )
SQL Server
SQL Server ima Datetime, Datetime2 i druge tipove podataka za datum/vreme koji ne uključuju pomak vremenske zone i ne naznačuju u kojoj se vremenskoj zoni nalaze. Aplikacije sa podlogom pretpostavljaju da su te vrednosti uskladištene u UTC i tretiraju ih kao lokalno vreme korisnika. Ako su vrednosti zamišljene kao nezavisne od vremenske zone, ispravite na UTC prevode koristeći funkciju TimeZoneOffset.
Aplikacije sa podlogom koriste obuhvaćene informacije o vremenskoj zoni u polja tipa Datetimeoffset pri konvertovanju vrednosti u interno UTC predstavljanje u aplikaciji. Aplikacije uvek koriste UTC kao vremensku zonu (nulti pomak vremenske zone) kada zapisuju podatke.
Aplikacije sa podlogom čitaju i zapisuju vrednosti tipa podataka vreme u sistemu SQL Server kao tekstualne niske u ISO 8601 formatu trajanja. Na primer, morate da raščlanite ovaj format niske i da upotrebite funkciju Time da konvertujete tekstualnu nisku "PT2H1M39S" na vrednost tipa vreme:
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)
Mešanje podataka o datumu i vremenu
Datum, Vreme i DatumVreme imaju različita imena, ali svi imaju iste informacije o datumima i vremenima.
Vrednost tipa datum može da sadrži podatke o vremenu u sebi, što je obično ponoć. Vrednost tipa vreme može da sadrži podatke o datumu, što je obično 1. januar 1970. Dataverse takođe čuva vremenske informacije sa poljem tipa samo datum, ali podrazumevano prikazuje samo podatke o datumu. Slično tome, aplikacije sa podlogom ponekad razlikuju ove vrste podataka da bi se odredili podrazumevani formati i kontrole.
Ne preporučujemo vam da dodajete i oduzimate vrednosti direktno, jer vremenska zona i druge konverzije mogu izazvati zbunjujuće rezultate. Koristite funkciju Value da konvertujete vrednosti datuma/vremena u milisekunde i uzmete u obzir vremensku zonu korisnika aplikacije ili koristite funkcije DateAdd i DateDiff za dodavanje ili oduzimanje od jedne od ovih vrednosti.
Izbori i Da/Ne
Tipovi podataka za izbor i dve opcije pružaju dva ili više izbora koja korisnik aplikacije može da bira. Na primer, izbor Status porudžbine može ponuditi opcije Novo, Isporučeno, Fakturisano i Zatvoreno. Tip podataka sa dve opcije nudi samo dva izbora.
Oba ova tipa podataka pokazuju svoje oznake u kontekstu tekstualne niske. Na primer, kontrola oznake prikazuje jednu od opcija statusa naloga ako je svojstvo Text kontrole postavljeno na formulu koja upućuje na taj izbor. Oznake opcija mogu se lokalizovati za korisnike aplikacija na različitim lokacijama.
Kada korisnik aplikacije odabere opciju i sačuva tu promenu, aplikacija prenosi podatke u bazu podataka, koja podatke čuva u predstavljanju koje je nezavisno od jezika. Opcija u izboru se prenosi i čuva kao broj, a opcija u tipu podataka sa dve opcije se prenosi i čuva kao logička vrednost.
Oznake su date samo u svrhu prikaza. Ne možete izvršiti direktna poređenja sa oznakama, jer su one specifične za jezik. Umesto toga, svaki izbor ima nabrajanje koje radi sa osnovnim brojem ili logičkom vrednošću. Na primer, 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 tabele dele), ime nabrajanja skupa opcija podudara se sa imenom globalnog izbora. Za lokalne izbore (koji se prikazuju u tabeli), naziv može sadržati naziv tabele. Ovo ponašanje izbegava sukobe ako više tabela ima izbore koji imaju isto ime. Na primer, tabela Poslovni kontakti možda ima izbor Status porudžbine, a njegovo ime bi moglo biti Status porudžbine (poslovni kontakti). To ime sadrži jedan ili više razmaka i zagrade, tako da ga morate okružiti jednim navodnikom ako ga referencirate u formuli.
Pored toga, vrednosti dve opcije se takođe mogu ponašati kao logičke vrednosti. Na primer, vrednost sa dve opcije po imenu Status poreza možda ima oznake Oporezivo i Neoporezivo, koje odgovaraju vrednostima tačno i netačno, istim redom. Kao demonstraciju, možete koristiti ovu formulu:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Možete koristiti i ovu ekvivalentnu formulu:
If( ThisItem.Taxable, ...