Vrste podatkov
opomba,
Microsoft Power Fx je novo ime za jezik formule za aplikacije s platnom. Ti članki so delo v teku, saj izvlečemo jezik iz aplikacij s platnom, ga integriramo z drugimi izdelki Microsoft Power Platform in damo na voljo odprtokodno. Začnite s člankom Pregled storitve Microsoft Power Fx za uvod v jezik.
Informacije tečejo skozi aplikacijo v majhnih, diskretnih vrednostih, zelo podobnim celicam razpredelnice. Na primer, podatki v polju Rojstni dan in polju Obletnica bi tekli skozi kot vrednost Datum, ki vključuje leto, mesec in dan. Aplikacija ve, kako oblikovati te vrednosti, omejiti vnos na, kar je primerno za vsako, in dati vrednosti v skupno rabo z zbirko podatkov. Rojstni dnevi se razlikujejo od obletnic po mnenju ljudi, sistem pa jih obravnava na popolnoma isti način. V tem primeru je Datum primer vrste podatkov.
Ta članek podaja podrobnosti za vrste podatkov, ki jih podpirajo aplikacije s platnom. Ko je aplikacija povezana z zunanjim virom podatkov, je vsaka vrsta podatkov v tem viru preslikana v vir podatkov za aplikacije s platnom.
Vrsta podatkov | Opis | Primeri |
---|---|---|
Boolean | Vrednost true ali false. Se lahko uporabi neposredno v funkcijah If, Filter in drugih brez primerjave. | res |
barva | Specifikacija barve, vključno kanala alfa. | Barva. Rdeča ColorValue ("#102030") RGBA (255, 128, 0, 0,5) |
Valuta | Vrednost valute, ki je shranjena v številki s plavajočo vejico. Vrednosti valut so iste kot vrednosti številk z možnostmi oblikovanja valute. | 123 4.56 |
Datum | Datum brez časa v časovnem pasu uporabnika aplikacije. | Datum (2019, 5, 16) |
Datum in čas | Datum s časom v časovnem pasu uporabnika aplikacije. | DateTimeValue( "16. maj, 2019 1:23:09 popoldan" ) |
decimalno | Število z visoko natančnostjo, osnovnimi operacijami 10 in omejenim obsegom. | 123 Decimalno ("1,2345") |
GUID | A Globalno edinstven identifikator. | GUID() GUID( "123e4567-e89b-12d3-a456-426655440000 ") |
Hiperpovezava | Besedilni niz, ki vsebuje hiperpovezavo. | "https://powerapps.microsoft.com" ; |
Slika | Besedilni niz enotnega identifikatorja vira (URI) v sliko v obliki zapisa .jpeg, .png, .svg, .gif, ali drugi splošni obliki zapisa za spletne slike. | MyImage dodan kot vir aplikacije "https://northwindtraders.com/logo.jpg" ; "appres://blobmanager/7b12ffa2..." |
Mediji | Besedilni niz URI-ja za video ali zvočni posnetek. | MyVideo dodan kot vir aplikacije "https://northwindtraders.com/intro.mp4" ; "appres://blobmanager/3ba411c..." |
številka oz Lebdi | Število s standardno natančnostjo, operacijami z osnovo 2 in širokim razponom. | 123 8.903e121 1.234e200 |
Izbira | Izbira iz nabora možnosti, podprta s številko. Ta vrsta podatkov združuje besedilno oznako, ki jo je mogoče lokalizirati, s številčno vrednostjo. Oznaka je prikazana v aplikaciji, številčna vrednost pa se shrani in uporabi za primerjave. | ThisItem.OrderStatus |
Zapis | Zapis vrednosti podatkov. Ta sestavljena vrsta podatkov vsebuje primerke drugih vrst podatkov, ki so navedeni v tej temi. Več informacij: Delo s tabelami. | { Podjetje: "Northwind Traders", Staff: 35, NonProfit: false } |
Referenčni zapis | Sklic na zapis v tabeli. Takšni sklici se pogosto uporabljajo pri polimorfnih iskanjih. Več informacij: Delo s sklici. | Prvi (Računi). Lastnik |
Tabela | Tabela zapisov. Vsi zapisi morajo imeti ista imena za polja z istimi vrstami podatkov, opuščena polja pa se obravnavajo kot prazna. Ta sestavljena vrsta podatkov vsebuje primerke drugih vrst podatkov, ki so navedeni v tej temi. Več informacij: Delo s tabelami. | Tabela ( { Ime: "Sidney", LastName: "Higa" }, { FirstName: "Nancy", LastName: "Anderson" } ) |
Besedilo | Besedilni niz Unicode. | "Pozdravljen, svet" |
Čas | Čas brez datuma v časovnem pasu uporabnika aplikacije. | Čas (11, 23, 45) |
Dve možnosti | Izbira iz nabora dveh možnosti, podprta z logično vrednostjo. Ta vrsta podatkov združuje besedilno oznako, ki jo je mogoče lokalizirati, z logično vrednostjo. Oznaka je prikazana v aplikaciji, logična vrednost pa se shrani in uporabi za primerjave. | Ta predmet. Obdavčljivo |
predmet brez vrste | Predmet, ki nima navedene vrste. Temeljni predmet je lahko katere koli obstoječe vrste in ga je mogoče pretvoriti v združljive vrste s funkcijami, kot so Boolean(), Value(), Table() itd. Za več informacij glejte Netipiziran predmet in Delo z obliko JSON. | ParseJSON("{ ""Polje"" : 1234 }").Polje |
Veliko teh vrst podatkov je podobnih in ima isto temeljno ponazoritev, na primer polje Hiperpovezava je obravnavano kot Besedilo. Dodatne vrste podatkov zagotavljajo boljše privzete izkušnje v obrazcih in drugih kontrolnikih.
Prazno
Vse vrste podatkov lahko imajo vrednost prazno (z drugimi besedami, so brez vrednosti). Za ta koncept se v zbirkah podatkov pogosto uporablja izraz »null«.
Uporabite funkcijo Blank s funkcijoSet ali Patch, da nastavite spremenljivko ali polje na prazno. Na primer, Set( x, Blank() ) odstrani katero koli vrednost v globalni spremenljivki x.
Preskusite za prazno vrednost z uporabo funkcije IsBlank. Zamenjajte morebitne prazne vrednosti z nepraznimi vrednostmi z uporabo funkcije Coalesce.
Ker vse vrste podatkov podpirajo prazno, imata vrsti podatkov Logični in Dve možnosti dejansko tri mogoče vrednosti.
Besedilo, hiperpovezava, slika in predstavnost
Vse te štiri vrste podatkov temeljijo na besedilnem nizu Unicode.
Vdelano besedilo
Nizi vdelanega besedila v formuli so obdani z dvojnimi narekovaji. Uporabite dva dvojna narekovaja skupaj, da bosta predstavljala eno dvojni narekovaj v besedilnem nizu. Na primer, z uporabo naslednje formule v lastnosti OnSelect kontrolnika Button:
Notify( "Jane said ""Hello, World!""" )
ob pritisku gumba nastane pasica, kjer sta prvi in zadnji dvojni narekovaj izpuščena (saj ločujeta besedilni niz), okoli fraze Hello, World! pa sta ponovljena dvojna narekovaja:
Enojni narekovaji se uporabljajo za imena identifikatorjev, ki vsebujejo posebne znake in v besedilnem nizu nimajo posebnega pomena.
Interpolacija nizov
Za vdelavo formul v besedilni niz lahko uporabite interpolacijo nizov. S tem je pogosto lažje delati in vizualizirati izhod kot z uporabo funkcije Concatenate ali & operatorja.
Pred besedilni niz dodajte znak za dolar $ in formulo, ki jo želite vdelati, obdajte z zavitimi oklepaji { }. Če želite v besedilni niz vključiti zaviti oklepaj, uporabite dvojni zaviti oklepaj: {{ ali }}. Interpolacijo nizov lahko uporabite povsod, kjer je mogoče uporabiti standardni besedilni niz.
Recimo, da je v tej formuli globalna spremenljivka Apples nastavljena na vrednost 3, globalna spremenljivka Bananas pa na vrednost 4:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Ta formula vrne besedilni niz We have 3 apples, 4 bananas, yielding 7 fruit total (Imamo 3 jabolka, 4 banane, skupaj 7 sadežev). Spremenljivki Apples (Jabolka) in Bananas (Banane) se vstavita v besedilo in s tem zamenjata zavite oklepaje, prav tako se vstavi rezultat matematične formule Apples+Bananas (Jabolka+Banane). Presledki in drugi znaki okoli zavitih oklepajev se ohranijo.
Vdelane formule lahko vključujejo poljubne funkcije ali operatorje. Edina zahteva je, da je mogoče rezultat formule vsiliti v besedilni niz. Na primer, ta formula bo v pozdrav vstavila spremenljivko NickName (Vzdevek), če je ta navedena, v nasprotnem primeru pa bo vstavila spremenljivko FirstName (Ime):
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )
Če je spremenljivka NickName nastavljena na »Joe«, bo formula vrnila naslednji besedilni niz: Welcome Joe, it's great to meet you! (Pozdravljen, Joe, lepo, da sva se spoznala!). Če pa je spremenljivka NickName (Vzdevek) prazna in spremenljivka FirstName (Ime) vsebuje vrednost »Joseph«, bo ta formula ustvarila besedilni niz Dear Joseph, great to meet you! (Dragi Joseph, lepo da sva se spoznala!).
Pri interpolaciji nizov je mogoče v vdelano formulo vključiti standardne besedilne nize. Če na primer ni navedena niti spremenljivka NickName niti spremenljivka FirstName, ju lahko nadomestimo s spremenljivko "Friend":
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Interpolacije nizov je mogoče tudi ugnezditi. Oglejmo si ta primer, pri katerem se v pozdravu kombinirajo spremenljivke First (Ime), Middle (Srednje ime) in Last (Priimek). Tudi če je katera od teh vrednosti prazna, bo med deli imena pravilno število presledkov. Če ni na voljo nobenega od teh delov imena, se bo interpolacija notranjega niza strnila v prazen niz in funkcija Coalesce jo bo zamenjala s spremenljivko "Friend".
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Ime | Na sredino | Zadnja | Rezultat |
---|---|---|---|
John | Qunicy | Doe | Welcome John Quincy Doe! |
John | prazno | Doe | Welcome John Doe! |
prazno | prazno | Doe | Welcome Doe! |
prazno | prazno | prazno | Welcome Friend! |
Prelomi vrstic
Vdelani besedilni nizi lahko vsebujejo prelome vrstic. Denimo, da je lastnost Text (Besedilo) kontrolnika Label (Oznaka) nastavljena takole:
"Line 1
Line 2
Line 3"
Zgornja formula bo v kontrolniku oznake prikazala tri vrstice:
Prelomi vrstic so podprti tudi pri interpolaciji nizov, kot je prikazano spodaj:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Zgornja formula prinese enak rezultat:
Slikovni in predstavnostni viri
Prek menija Datoteka lahko dodate slikovne, video in avdio datoteke kot vire aplikacije. Ime uvožene datoteke postane ime vira v aplikaciji. V tej grafiki je bil v aplikacijo dodan logotip Northwind Traders, ki je poimenovan nwindlogo:
Za uporabo tega vira v aplikaciji določite vir v lastnosti Image kontrolnika Image:
URI-ji za slike in druge predstavnosti
Zadnji primer lahko pogledamo podrobneje, tako da nastavimo lastnost Text kontrolnika Label na nwindlogo. Oznaka prikazuje besedilni niz:
Aplikacije s platnom se sklicujejo na vsako sliko ali drugo predstavnostno datoteko, najsi je v oblaki ali dodana kot vir aplikacije, z besedilnim nizom URI.
Na primer, lastnost Image (Slika) kontrolnika slike poleg virov aplikacije sprejme tudi povezave do slik v spletu, kot na primer "https://northwindtraders.com/logo.jpg". Lastnost sprejema tudi slike v vrstici, ki uporabljajo shemo URI podatkov, kot v tem primeru:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
Ta URI prikazuje povečano različico dveh vijoličnih diamantov:
Prikažete lahko najnovejšo sliko, zajeto s kontrolnikom Camera, če nastavite lastnost Image slikovnega kontrolnika na lastnost Photo kontrolnika kamere. Aplikacija ohrani sliko v pomnilniku in lastnost Photo kontrolnika kamere vrne sklic URI na sliko. Na primer, lahko posnamete fotografijo in lastnost Photo kamere bi lahko vrnila "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
URI uporabite za sklicevanje na sliko ali drugo predstavnostno datoteko, shranjeno v zbirki podatkov. Tako aplikacija ne pridobi dejanskih podatkov, dokler jih dejansko ne potrebuje. Na primer priloga v tabeli Microsoft Dataverse lahko vrne »appres://datasources/Contacts/table/...« Kot v primeru kamere lahko tudi sliko prikažete tako, da nastavite lastnost Slika kontrolnika slike na ta sklic, ki pridobi binarne podatke.
KO shranite vrsto predstavnostnih podatkov, kot je slika, v zbirko podatkov, aplikacija pošlje dejansko sliko ali predstavnostne podatke, ne pa sklica URI.
Omejitve velikosti
Kot besedilni nizi in URI-ji te vrste podatkov nimajo prednastavljene omejitve dolžine.
Binarni podatki, na katere se nanašajo te vrste podatkov, tudi nimajo prednastavljenih omejitev glede velikosti. Na primer, slika, posneta prek kontrolnika kamere, na katero je zdaj podan sklic "appres://...", je lahko tako velika in ima tako visoko ločljivost, kot omogoča kamera. Ločljivost, hitrost sličic in drugi atributi predstavnostnih datotek niso omejeni na vrsto podatkov, specifični kontrolniki za predvajanje in zajemanje predstavnosti pa lahko imajo svoje omejitve.
Vse velikosti podatkov pa so odvisne od količine razpoložljivega pomnilnika v aplikaciji. Brskalniki, ki se izvajajo v namiznem računalniku, običajno podpirajo več kot 100 MB podatkov. A v napravi, kot je telefon, je lahko količina razpoložljivega pomnilnika precej nižja, običajno v razponu 30–70 MB. Da bi ugotovili, ali se bo vaša aplikacija izvajala v okviru teh omejitev, preskusite splošne scenarije na vseh napravah, na katerih naj bi se izvajala.
Priporočamo, da podatke zadržite v pomnilniku, tako dolgo, kot je potrebno. Takoj ko je mogoče, naložite slike v zbirko podatkov; slike prenesite samo, ko jih uporabnik aplikacije zahteva.
številke
opomba,
Power Apps danes podpira le Float in je vrsta vseh števil. Podpora za decimal bo kmalu dodana.
Power Fx podpira dve vrsti števil: Decimal in Float (s sinonimi Number in Valuta).
Decimalno je najboljše za večino poslovnih izračunov. Lahko natančno predstavlja števila z osnovo 10, kar pomeni, da 0.1
je mogoče natančno predstaviti in med izračuni ne bo nagnjen k napakam pri zaokroževanju. Ima dovolj velik razpon za vse poslovne potrebe, do 1028 z do 28 ciframi natančnosti. Decimal je privzeti številski tip podatkov za večino Power Fx gostiteljev, ki se uporablja, če preprosto pišete 2*2
.
Float je najboljši za znanstvene izračune. Predstavlja lahko števila v veliko večjem obsegu, do 10308. Natančnost je omejena na 15 decimalnih mest, matematika pa temelji na osnovi 2, tako da ne more natančno predstavljati nekaterih običajnih decimalnih vrednosti. Float ima tudi višjo zmogljivost in ima prednost, če je to dejavnik in natančnost ni kritična.
Decimalna števila
Podatkovni tip Decimal najpogosteje uporablja .NET decimalni podatkovni tip. Nekateri gostitelji, kot so Dataverse stolpci formul, ki se izvajajo v SQL Sererju, uporabljajo decimalni podatkovni tip SQL Server.
Decimal izračunava tako, kot ste se učili v šoli, z uporabo 10 števk. To je zelo pomembno, da se izognete napakam pri zaokroževanju zaradi zelo majhnih razlik, ki se lahko kopičijo pri uporabi matematike z osnovo 2 (kot jo uporablja Float).
Razpon je od pozitivnega 79,228,162,514,264,337,593,543,950,335 do negativnega 79,228,162,514,264,337,593,543,950,335. Decimalno ločilo lahko postavite kamor koli znotraj teh števil, kar zagotavlja do 28 števk natančnosti in je še vedno natančno predstavljeno. Na primer, 79,228,162,514,264.337593543950335 je lahko natančno predstavljen, kot tudi 7.9228162514264337593543950335.
Številke s plavajočo vejico
Podatkovni tip Float , znan tudi kot Number ali Currency, uporablja standard IEEE 754 s plavajočo vejico z dvojno natančnostjo. Ta standard zagotavlja velik razpon številk za delo, od –1,79769 x 10308 do 1,79769 x 10308. Najmanjša vrednost, ki je lahko zastopana, je 5 x 10–324.
Float lahko natančno predstavlja cela števila (ali cela števila) med –9,007,199,254,740,991 (–(253 – 1)) in 9,007,199,254,740,991 (253 – 1), vključno. Ta obseg je večji od 32-bitnih (ali 4-bajtnih) vrst podatkov celih števil, ki jih zbirke podatkov splošno uporabljajo. Toda aplikacije delovnega območje ne morejo prikazovati 64-bitnih (ali 8-bajtnih) vrst podatkov celih števil. Morda si boste želeli shraniti številko v besedilnem polju ali uporabiti izračunani stolpec za izdelavo kopije številke v besedilnem polju, da je preslikano v vrsto podatkov Besedilo v aplikaciji s platnom. Na ta način lahko držite, prikažete in vnašate te vrednosti ter jih primerjate, da ugotovite, ali so enakovredne; ne morete pa izvajati številčnih izračunov na njih v tej obliki.
Aritmetika s plavajočo vejico je približek, zato lahko občasno poda nepričakovane rezultate z veliko dokumentiranimi primeri. Lahko bi pričakovali, da formula 55 / 100 * 100 vrne točno 55 in (55 / 100 * 100) - 55 vrne točno nič. Toda slednja formula vrne 7,1054 x 10–15, kar je zelo malo, ni pa nič. Ta majhna razlika običajno ne povzroča težave in aplikacijo jo odstrani z zaokroževanjem, ko je prikazan rezultat. Toda majhne razlike se lahko v nadaljnjih izračunih povečujejo in na videz dajejo napačen odgovor.
Sistemi zbirk podatkov pogosto shranjujejo valute in izvajajo izračune z uporabo desetiške matematike, ki ponuja manjši razpon, a večji nadzor nad natančnostjo. Privzeto aplikacije s platnom preslikajo valute v in iz vrednosti s plavajočo vejico; zato se lahko rezultat razlikuje od izračunov, ki so izvedeni v izvorni vrsti decimalnih podatkov. Če bo ta vrsta odstopanja povzročala težave, bi morda želeli delati s temi vrednostmi kot Besedilo, tako kot bi lahko z velikimi celimi števili, opisanimi prej v tem razdelku.
Privzete vrednosti in konverzije
opomba,
Power Apps danes podpira le Float in je vrsta vseh števil. Podpora za decimal bo kmalu dodana.
Večina Power Fx gostiteljev privzeto uporablja Decimal . To vpliva na:
- Dobesedna števila v formulah. Število
1.234
bo interpretirano kot Decimalno vrednost. Na primer, formula1.234 * 2
bo interpretirala1.234
in2
kot Decimal in vrnila Decimalni rezultat. - Funkcija vrednosti.
Value( "1.234" )
vrne Decimalno vrednost. Na primer, formulaValue( "1.234" ) * 2
the Vrednost funkcija bo interpretirala vsebino besedilnega niza"1.234"
kot Decimalno.
Za delo z vrednostmi Float se uporablja funkcija Float . Z razširitvijo zgornjega primera Float( 1.234 )
bo Decimal1.234
pretvorjen v Float. Plavajočo lahko uporabite tudi kot zamenjavo za Vrednost za pretvorbo niza, ki vsebuje število s plavajočo vejico, kot je Float( "1.234" )
v a Float vrednost, ki je zahtevana, če števila ni mogoče predstaviti kot Decimal.
Če povzamemo:
Uporaba | decimalno | Lebdi |
---|---|---|
Dobesedna števila v formulah | 1.234 |
Float( 1.234 ) Float( "1.234" ) |
Pretvorba iz besedilnega niza | Value( "1.234" ) Decimal( "1.234" ) |
Float( "1.234" ) |
Pretvorba med številskimi vrstami | Decimal( float ) |
Float( decimal ) |
Pretvorba v besedilni niz | Text( decimal ) |
Text( float ) |
Mešanje številskih tipov
Plavajoče in Decimalne vrednosti je mogoče poljubno mešati. Pri mešanju se decimalne vrednosti pretvorijo v plavajoče vrednosti zaradi večjega obsega. Ker lahko to povzroči izgubo natančnosti, je pomembno, da obojega ne mešate po nepotrebnem. Ker je Decimal privzeti dobesedni podatkovni tip in bo večina numeričnih funkcij ohranila tip, se je relativno enostavno izogniti prehodu na Float ne da bi si tega želeli.
Na primer, upoštevajte naslednji izračun z uporabo pac power-fx repl
po namestitvi Power Platform CLI. Ker sta obe števili decimalni, se izračun izvede v decimalnem rezultatu pa ostane popolna natančnost:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Če bi namesto tega drugi operand spremenili v Float , bi bil celoten izračun opravljen v Float in drobni ulomek bi bil izgubljen:
>> 1.0000000000000000000000000001 * Float(2)
2
Datum, čas in DateTime
Časovni pasovi
Vrednosti datuma/časa spadajo v te kategorije:
- Lokalni uporabnik: Te vrednosti so shranjene v UTC (Univerzalni koordinirani čas), vendar časovni pas uporabnika aplikacije vpliva na to, kako aplikacija prikazuje te vrednosti in kako jih določi uporabnik aplikacije. Primer je, da je isti trenutek prikazan drugače uporabniku v Kanadi, kot uporabniku na Japonskem.
- Neodvisno od časovnega pasu: Aplikacija prikazuje te vrednosti na enak način in uporabnik aplikacije jih določi na enak način, ne glede na časovni pas. Isti trenutek je prikazan na isti način uporabniku v Kanadi in uporabniku na Japonskem. Ustvarjalci aplikacij, ki ne pričakujejo, da se bodo njihove aplikacije izvajale v različnih časovnih pasovih, uporabljajo te vrednosti, ker so na splošno preprostejše.
Ta tabela prikazuje nekaj primerov:
Vrsta datuma/časa | Vrednost, shranjena v zbirki podatkov | Vrednost, prikazana in vnesena 7 ur zahodno od UTC | Vrednost, prikazana in vnesena 4 ure vzhodno od UTC |
---|---|---|---|
Lokalni uporabnik | Nedelja,19.maj2019 4:00 |
Sobota,18.maj2019 21:00 |
Nedelja,19.maj2019 8:00 |
Neodvisno od časovnega pasu | Nedelja,19.maj2019 4:00 |
Nedelja,19.maj2019 4:00 |
Nedelja,19.maj2019 4:00 |
Za datume/čase Lokalno pri uporabniku aplikacije s platnom uporabljajo časovni pas brskalnika ali naprave, aplikacije, ki temeljijo na modelu, pa uporabljajo nastavitve uporabnika v storitvi Dataverse. Te nastavitve se običajno ujemajo, toda rezultati se razlikujejo, če se te nastavitve razlikujejo.
Uporabite funkciji DateAdd in TimeZoneInformation za pretvorbo lokalnega časa v UTC in spet nazaj. Glejte primere na koncu dokumentacije za ti funkciji.
Številski ekvivalenti
Aplikacije s platnom držijo in izračunajo vse vrednosti datuma/časa, bodisi Lokalno pri uporabniku ali Neodvisno od časovnega pasu v UTC. Aplikacija prevede vrednosti na podlagi časovnega pasu uporabnika aplikacije, ko jih prikaže in ko jih uporabnik aplikacije določi.
Ko aplikacija s platnom odčita vrednost Neodvisno od časovnega pasu iz vira podatkov ali zapiše tako vrednost v vir podatkov, aplikacija samodejno prilagodi vrednost, da izravna časovni pas uporabnika aplikacije. Aplikacija nato obravnava vrednost kot vrednost UTC, skladno z vsemi drugimi vrednostmi datuma/časa v aplikaciji. Zaradi te izravnave je prikazana izvorna vrednost Neodvisno od časovnega pasu, ko uporabnik prilagodi vrednost UTC za časovni pas uporabnika aplikacije.
To vedenje lahko podrobneje opazujete, tako da uporabite funkcijo Value za dostop do temeljne številčne vrednosti za vrednost datuma/časa. Ta funkcija vrne vrednost datuma/časa kot število milisekund od 1. januarja 1970, 00:00:00.000 UTC.
Ker je vsaka vrednost datuma/časa zadržana v UTC, formula Value( Date( 1970, 1, 1 ) ) ne bo vrnila nič v večini predelov sveta, ker funkcija Date vrne datum v UTC. Na primer, formula bi vrnila 28.800.000 v časovnem pasu, ki je odmaknjen od UTC za osem ur. To število odraža število milisekund v osmih urah.
Če se vrnemo na naš zgornji primer:
Vrsta datuma/časa | Vrednost, shranjena v zbirki podatkov | Vrednost, prikazana in vnesena 7 ur zahodno od UTC | Vrednost funkcija vrne |
---|---|---|---|
Lokalni uporabnik | Nedelja,19.maj2019 4:00 |
Sobota,18.maj2019 21:00 |
1,558,238,400,000 (Nedelja,19.maj2019, 4:00 UTC) |
Neodvisno od časovnega pasu | Nedelja,19.maj2019 4:00 |
Nedelja,19.maj2019 4:00 |
1,558,263,600,000 (Nedelja,19.maj2019, 11:00 UTC) |
Pretvorba časov Unix
Časi Unix odražajo število sekund od 1. januarja 1970, 00:00:00 UTC. Ker aplikacije s platnom uporabljajo milisekunde namesto sekund, lahko med njima pretvarjate tako, da vrednost pomnožite ali delite s 1000.
Na primer, čas Unix prikazuje 9. september 2001, ob 01:46:40 UTC kot 1.000.000.000. Za prikaz te vrednosti datuma/časa v aplikaciji s platnom, pomnožite tisto številko s 1000, da jo pretvorite v milisekunde, nato pa jo uporabite v funkciji Text. Formula Text( 1000000000 * 1000, DateTimeFormat.UTC ) vrne niz 2001-09-09T01:46:40.000Z.
Toda funkcija vrne Sobota, 8. september, 2001 18:46:40, če uporabite obliko zapisa DateTimeFormat.LongDateTime24 v časovnem pasu, ki je -7 ur odmaknjen od UTC (7 zahodno od UTC). Ta rezultat prikaže vrednost DateTime pravilno na podlagi lokalnega časovnega pasu.
Za pretvorbo v čas Unix, delite rezultat iz možnosti Vrednost s 1000:
RoundDown(Vrednost(UnixTime) / 1000, 0)
Če potrebujete čas Unix v vrednosti Date za nadaljnje izračune ali prikaz v storitvi Power Apps, uporabite to formulo:
DateAdd(Datum(1970,1,1), UnixTime, Sekunde)
SQL Server
SQL Server ima Datetime, Datetime2 in druge podatke datuma/časa, ki ne vključujejo odmika časovnega pasu in ne navajajo, v katerem časovnem pasu so. Aplikacije s platnom domnevajo, da so te vrednosti shranjene v UTC, in jih obravnavajo kot Lokalno pri uporabniku. Če naj bi bile vrednosti neodvisne od časovnega pasu, popravite prevode UTC z uporabo funkcije TimeZoneOffset.
Aplikacije s platnom uporabljajo vključene informacije časovnega pasu v poljih Datetimeoffset, ko pretvarjajo ponazoritev UTC znotraj aplikacije. Aplikacije vedno uporabljajo UTC kot časovni pas (ničelni odmik časovnega pasu), ko zapisujejo podatke.
Aplikacije s platnom berejo in zapisujejo vrednosti vrste podatkov Čas v strežniku SQL Server kot besedilne nize v obliki zapisa trajanja ISO 8601. Na primer, morate razčleniti to obliko zapisa niza in uporabiti funkcijo Time za pretvorbo besedilnega niza "PT2H1M39S" v vrednost Čas:
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 informacij datuma in časa
Datum, Čas in DatumUra imajo različna imena, vendar imajo vsi iste informacije o datumih in urah.
Vrednost Datum lahko vključuje informacije o času, ki je običajno polnoč. Vrednost Čas lahko vsebuje informacije o datumu, ki je običajno 1. januar 1970. Dataverse prav tako shranjuje informacije o času s poljem Samo datum, toda privzeto prikazuje samo informacije o datumu. Podobno aplikacije s platnom včasih razlikujejo med tema vrstama podatkov, da bi določile privzete oblike zapisa in kontrolnike.
Neposredno seštevanje in odštevanje vrednosti datuma in časa ni priporočeno, ker bi lahko časovni pas in druge pretvorbe povzročili nejasne rezultate. Uporabite bodisi funkcijo Value, da najprej pretvorite vrednosti datuma/časa v milisekunde in upoštevate časovni pas uporabnika aplikacije, ali uporabite funkciji DateAdd in DateDiff, da prištejete ali odštejete od ene od teh vrednosti.
Izbire in Da/ne
Podatkovni tipi za izbiro in dve možnosti ponujajo dve ali več možnosti, ki jih lahko izbere uporabnik aplikacije. Na primer izbira možnosti Stanje naročila lahko vodi v možnost izbire Novo, Poslano, Fakturirano in Zaprto. Vrsta podatkov dveh možnosti ponuja samo dve izbiri.
Obe vrsti podatkov prikazujeta svoje oznake v kontekstu besedilnega niza. Na primer, kontrolnik oznake prikazuje eno od možnosti stanja naročila, če je lastnost kontrolnika Besedilo nastavljena na formulo, ki se sklicuje na to izbiro. Oznake možnosti so lahko lokalizirane za uporabnike aplikacije na različnih lokacijah.
Ko uporabnik izbere možnost in shrani spremembe, aplikacija prenese podatke v zbirko podatkov, ki shrani te podatke v ponazoritvi, ki je neodvisna od jezika. Možnost pri izbiri se prenese in shrani kot število, možnost v podatkovnem tipu z dvema možnostma pa se prenese in shrani kot logična vrednost.
Oznake so samo za namene prikaza. Ni mogoče izvesti neposrednih primerjav z oznakami, ker so specifične za jezik. Namesto tega ima vsaka izbira oštevilčenje, ki deluje z osnovno številko ali logično vrednostjo. Te formule na primer ne morete uporabiti:
If( ThisItem.OrderStatus = "Active", ...
Lahko pa uporabite to formulo:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Za globalne izbire (katere tabele si delijo) se ime oštevilčenja nabora možnosti ujema z imenom globalne izbire. Za lokalne izbire (v obsegu tabele) lahko ime vsebuje ime tabele. S takim vedenjem se izognete konfliktom, če ima več tabel izbire z istim imenom. Na primer tabela Računi ima lahko možnost izbire OrderStatus, njeno ime pa je morda OrderStatus (računi). Ime vsebuje enega ali več presledkov in oklepajev, zato ga morate obdati z enojnimi narekovaji, če se sklicujete nanj v formuli.
Poleg tega se vrednosti dveh možnosti lahko vedejo tudi kot logične vrednosti. Na primer, vrednost dveh možnosti, imenovana TaxStatus lahko ima oznaki Obdavčljivo in Neobdavčljivo, ki ustrezata vrednostma true in false. Če ponazorimo, to pomeni, da lahko uporabite to formulo:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Lahko pa uporabite tudi to enakovredno formulo:
If( ThisItem.Taxable, ...