Jagamisviis:


Andmetüübid

Teave voolab läbi Power Fx-i väikestes eraldi väärtustes (nt arvutustabeli lahtrites). Näiteks välja Sünnipäevad ja Aastapäev andmed voolavad läbi väärtusena Kuupäev , mis sisaldab aastat, kuud ja päeva. Power Fx vormindab need väärtused, piirab sisendi igale sobivale sisule ja jagab väärtusi andmebaasiga. Sünnipäevad ja tähtpäevad võivad inimeste jaoks erineda, kuid süsteem tegeleb nendega samamoodi. Sel juhul on Date (Kuupäev) näide andmetüübist.

Selles artiklis selgitatakse Power Fx-i iga andmetüüpi, nende tööd ja väliste andmeallikatega vastendamist.

Andmetüüp Kirjeldus Näited
loogiline Väärtus on kas tõene või väär. Saate seda ilma võrdluseta kasutada otse funktsioonis If, Filter ja muudes funktsioonides. Tõsi
Valik Valik suvandite seast (mida toetab number). See andmetüüp ühendab lokaliseeritud tekstilise sildi numbrilise väärtusega. Silt kuvatakse rakenduses ja numbrilist väärtust talletatakse ning võrreldakse. Funktsioon Type toetab seda andmetüüpi, kui kasutate valikuvälja eksemplari nime järgi. ThisItem.OrderStatus
Värv Värvimääratlemine, mis sisaldab alfakanalit. Värv.Punane
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0,5 )
Valuuta Ujukomaarvuna talletatud valuutaväärtus. Valuutaväärtused on samad, mis valuutade vormindamise suvandite numbriliste väärtuste suvanditega. Funktsioon Type ei toeta andmetüüpi Valuuta . 123
4.56
Kuupäev Kuupäev ilma kellaajata rakenduse kasutaja ajavööndis. Kuupäev( 2019, 5, 16 )
Kuupäev Kellaaeg Kuupäev koos kellaajaga rakenduse kasutaja ajavööndis. DateTimeValue( "16. mai 2019 1:23:09 PM" )
Kümnendarv Suure täpsusega arv, kümme toimingut ja piiratud vahemik. 123
Kümnendkoht( "1,2345" )
Dünaamiline (varem UntypedObject) Väärtuse tüüp on dünaamiline ja võib käitusajal erineda. Dünaamiline väärtus võib olla mis tahes olemasolev tüüp ja selle saab teisendada ühilduvateks tüüpideks, kasutades funktsioone nagu Kahendväärtus(), Value(), Table()jne. Lisateavet leiate teemadest Dünaamilised väärtused ja Töötamine JSON-iga. ParseJSON("{ ""Väli"" : 1234 }"). Põld
Float Standardtäpsusega number, 2. baasi operatsioonid ja lai valik. 123
8.903e121
1.234e-200
GUID Globaalne ainuidentifikaator. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hüperlink Hüperlinki sisaldav tekstistring. "https://powerapps.microsoft.com"
Piltide Universaalse ressursiidentifikaatori (URI) tekstistring pildile .jpeg, .png, .svg, .gifvõi mõnes muus levinud veebipildivormingus. Funktsioon Type ei toeta andmetüüpi Pilt . MyImage lisati rakenduse ressursina
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Meedia URI tekstisõne video või heli salvestamiseks. Funktsioon Type ei toeta andmetüüpi Meediumid . MyVideo lisati rakenduse ressursina
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Arv Pseudonüüm valikule Decimal (enamik Power Fx masinaid) või Float (lõuendirakendused). Kui saate olukorra jaoks kasutada mõlemat arvuvalikut, kasutage suurima ühilduvuse tagamiseks suvandit Arv . 123
0.0123
1e4
Rekord Andmeväärtuste kirje. See liitandmetüüp sisaldab muude selles artiklis loetletud andmetüüpide eksemplare. Lisateavet leiate teemast Tabelitega töötamine. Funktsioon Type toetab seda andmetüüpi, kui kasutate kirjeeksemplari. { Ettevõte: "Northwind Traders",
Töötajad: 35,
NonProfit: väär }
Kirje viide Viide tabeli kirjele. Neid viiteid kasutatakse sageli polümorfiliste otsingutega. Lisateavet leiate teemast Viidetega töötamine. Funktsioon Type ei toeta seda andmetüüpi. Esimene(Kontod). Omanik
Laud Kirjete tabel. Kõigil kirjetel peavad olema samad väljanimed ja andmetüübid ning väljad jäetakse tühjaks. See liitandmetüüp sisaldab muude selles artiklis loetletud andmetüüpide eksemplare. Lisateavet leiate teemast Tabelitega töötamine. Funktsioon Type toetab seda andmetüüpi, kui kasutate tabeli eksemplari. Tabel( { Eesnimi: "Sidney",
Perekonnanimi: "Higa" },
{ Eesnimi: "Nancy",
Perekonnanimi: "Anderson" } )
Tekst Unicode'i tekstisõne. "Tere, maailm"
Aeg Kuupäevata aeg rakenduse kasutaja ajavööndis. Aeg( 11, 23, 45 )
Tühine Kasutatakse ainult kasutaja määratletud funktsioonide käitumise korral, mis näitab, et funktsioonil pole tagastustüüpi. Funktsioon Type ei toeta seda andmetüüpi. Kuigi funktsioonil pole tagastustüüpi või -väärtust, võib see alati tagastada tõrke. tere(): void = { teata( "tere!" ) }
Jah/Ei Valik kahe võimaluse hulgast, mille taga on tõeväärtus. See andmetüüp ühendab lokaliseeritud tekstilise sildi tõeväärtusega. Silt kuvatakse rakenduses ja tõeväärtust talletatakse ning võrreldakse. Funktsioon Type toetab seda andmetüüpi, kui kasutate jah /ei-välja eksemplari nime järgi. ThisItem.Taxable

Paljud neist andmetüüpidest on sarnased ja neil on sama aluskuju , näiteks hüperlingivälja käsitletakse tekstina. Lisaandmetüübid pakuvad vormides ja muudes juhtelementides paremaid vaikefunktsioone.

Tühi

Kõigi andmetüüpide väärtus võib olla tühi (väärtus puudub). Terminit "null" kasutatakse sageli andmebaasides selle kontseptsiooni kirjeldamiseks.

Kasutage funktsiooni Blank (Tühi) koos funktsioonidega Set (Määra) ja Patch (Plaaster), et määrata tühjale suvandile väärtus või väli. Näiteks Set( x, Blank() ) eemaldab globaalse muutuja x väärtuse.

Tühja väärtuse testimine funktsiooniga IsBlank . Asendage võimalikud tühjad väärtused, täidetud väärtustega, kasutades funktsiooni Coalesce (Koaleeru).

Kuna kõik andmetüübid toetavad tühje andmetüüpe, on andmetüüpidel Loogika ja Kaks kolm võimalikku väärtust.

Kõik neli nendest andmetüüpidest põhinevad Unicode'i tekstisõnel.

Manustatud tekst

Valemis sisalduvad manustatud tekstisõned on kahekordsetes jutumärkides. Kasutage kahekahekordseid jutumärke koos, et tähistada ühte kahekordsete jutumärkide vahel olevat tekstisõnet. Näiteks kasutades juhtelemendi Button (Nupp) atribuudi OnSelect järgmist valemit.

Notify( "Jane said ""Hello, World!""" )

Nupu vajutamisel kuvatakse ribaplakat, kus esimesed ja viimased jutumärgid jäetakse välja (tekstistringi piiritlemisel) ja korduvad jutumärgid ümber funktsiooni Hello World! asendatakse ühe jutumärgiga:

Jane sõnumiga hüpikteatis ütleb

Ühekordseid jutumärke kasutatakse identifikaatorite nimede puhul, mis sisaldavad erimärke ja millel pole tekstisõne puhul spetsiaalset tähtsust.

Stringi interpoleerimine

Kasutage stringi interpoleerimist, et manustada valemeid tekstistringi. Seda lähenemist on sageli lihtsam väljundiga töötada ja visualiseerida kui funktsiooni Concatenate või tehtemärki kasutades .

Lisage tekstistringile dollarimärgiga $ eesliide ja lisage manustatud valem loogeliste sulgudega { } Kui soovite tekstistringi lisada tekstistringi loogelised sulud, kasutage korduvaid kumeraid sulgusid: {{ või }}. Stringi interpolatsiooni saab kasutada kõikjal, kus standardset tekstistringi saab kasutada.

Näiteks võite seda valemit kaaluda, kui globaalsete muutujatega, kus väärtus Õunad on määratud väärtusele 3 ja Banaanid väärtusele 4.

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

See valem tagastab tekstistringi Meil on 3 õuna, 4 banaani, mis moodustab kokku 7 puuvilja. Muutujad Õunad ja Banaanid lisatakse teksti, mis on asendab loogelised sulud koos matemaatlise valemiga Õunad + banaanid. Tühikud ja muud loogeliste sulgude ümber olevad tärgid jäetakse alles.

Manustatud valemid võivad sisaldada mis tahes funktsioone või tehtemärke. Kõik, mis on vajalik, on see, et valemi tulemit saab sundida tekstistringi. Näiteks lisab see valem tervitusena NickName’i, kui see on esitatud, või FirstName’i , kui seda pole.

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"

Kui atribuudi NickName väärtuseks on „Joe“, siis see valem tekitab stringi Tere, Joe, rõõm tutvuda!. Kuid kui atribuut NickName on tühi ja atribuudi FirstName väärtus on „Joseph“, siis valem annab tulemuseks selle asemel Lugupeetud Joseph, rõõm teiega tutvuda!.

Stringi kogum võib sisaldada manustatud valemis standardseid tekstistringe. Näiteks kui atribuudid NickName ega FirstName pole esitatud, võime asenduseks lisada "sõbrad":

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

sitringi iterpolatsioone saab isegi pesastada. Kasutage seda näidet, kus väljad ee-, keskmine ja perekonnanimi on kombineeritud tervituseks. Isegi kui üks või kaks neist väärtustest on tühjad , säilitatakse nimeosade vahel õige arv tühikuid. Kui ühtegi osa ei ole esitatud, ahendab sisemise stringi interpolatsioon tühja stringi ja funktsioonCoalesce asendab selle sõnaga „sõber“.

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Esimene Keskele Viimane Tulemus
John Mati Kask Welcome John Quincy Doe!
John tühi Kask Welcome John Doe!
tühi tühi Kask Welcome Doe!
tühi tühi tühi Welcome Friend!

Newlines

Manustage tekstistringid, et lisada uued read. Näiteks kaaluge atribuudi Tekst seadmist juhtelemendil Silt järgmisele väärtusele

"Line 1
Line 2
Line 3"

Selle valemi tulemiks on sildi juhtelemendis näidatud kolm rida.

Manustatud tekstistringi ja sildi juhtelement, kus on kuvatud kolm rida reaga 1, rida 2 ja rida 3.

Uusi liine toetatakse ka stringide interpolatsiooniga:

$"Line {1}
Line {1+1}
Line {1+1+1}"

Mille tulemuseks on sama väljund:

Stringi interpolatsioonivalem ja sildi juhtelement, mis näitab kolme joont joonega 1, reaga 2 ja reaga 3.

Pildi ja meedia ressursid

Menüü File (Fail) kaudu saate lisada pildi-, video -ja helifaile rakenduse ressurssidena. Imporditud faili nimi saab rakenduse ressursi nimeks. Sellel pildil on rakendusse lisatud Northwind Tradersi logo, mille nimi on nwindlogo:

Põhjatuule ressurss.

Selle ressursi kasutamiseks rakenduses määrake juhtelemendi Image (Pilt) atribuut Image (Pild).

Põhjatuule pilt.

Piltide ja muu meedia URId

Viimasesse näitesse saab veidi sügavamale minna, kui seate juhtelemendi Label (Silt) atribuudi Text (Tekst) väärtuseks nwindlogo. Sildil kuvatakse tekstisõne:

Põhjatuule tekst.

Lõuendirakendused viitavad igale pildile või muule meediumifailile, olgu see siis pilves või lisatud rakenduse ressursina (URI tekstisõne alusel).

Näiteks pildi juhtelemendi juhtelemendi atribuut Image (Pilt) ei aktsepteeri mitte ainult rakenduse ressursse, vaid ka veebipiltide linke, näiteks "https://northwindtraders.com/logo.jpg"". Atribuut aktsepteerib ka tekstisiseseid pilte, mis kasutavad andmete URI-skeemi, nagu käesolevas näites.

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

See URI kuvab kahe lilla teemanti skaleeritud versiooni.

Kahekordsed teemandid.

Juhtelemendiga Camera (Kaamera) viimati pildistatud foto kuvamiseks määrake pildi juhtelemendi atribuut Image (Pilt) kaamera juhtelemendi atribuudile Photo (Foto). Rakendus hoiab pilti mälus ja kaamera juhtelemendi atribuut Photo tagastab pildi URI-viite. Näiteks võite pildistada ja kaamera atribuut Photo (Foto) tagastab "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Kasutage URI-i, et viidata mõnda andmebaasi salvestatud pildile või mõnele muule meediumifailile. Sel viisil ei too rakendus tegelikke andmeid enne, kui on vaja. Näiteks manus Microsoft Dataverse tabelis võib tagastada väärtuse "appres://datasources/Contacts/table/..." Nagu näete kaamera näites, saate seda pilti kuvada, seadistades juhtelemendi atribuudi Pilt sellele viitele, mis toob binaarandmed.

Kui salvestate meediumi andmetüübi (nt pildi), andmebaasi, saadab rakendus tegeliku pildi või meediumi andmed, mitte URI-viite.

Suuruse piirid

Tekstisõne ja URI puhul pole neil andmetüüpidel eelseatud pikkuse piiri.

Binaarsed andmed, mis viitavad nendele andmetüüpidele, ei sisalda samuti eelseatud pikkuse piiri. Näiteks kaamera juhtnupu kaudu jäädvustatud pilt, millele viidatakse kui "appres://..." , võib olla nii suur ja kõrge eraldusvõimega, kui seadme kaamera suudab. Meediumifailide eraldusvõime, kaadrisagedus ja muud atribuudid ei ole andmetüübiga piiratud, kuid meediumide esitamiseks ja hõivamiseks mõeldud spetsiifilistel juhtelementidel võivad olla oma piirangud.

Kõik andmete suurused sõltuvad siiski rakenduse vabast mälust. Lauaarvutites töötavad brauserid toetavad tavaliselt üle 100 megabaidi andmeid. Siiski võib seadmes, näiteks telefonis, saadaolev mälumaht olla tunduvalt väiksem, tavaliselt vahemikus 30-70 megabaiti. Selleks et teha kindlaks, kas teie rakendus töötab nendes piirides, testige levinud stsenaariume kõigis seadmetes, kus seda tuleks käitada.

Parima tavana hoidke andmeid mälus ainult nii kaua kui vaja. Laadi pildid andmebaasi nii kiiresti kui võimalik. Laadige pildid alla ainult siis, kui rakenduse kasutaja neid pärib.

Numbrid

Märkus.

Power Apps toetab ujukit ainult täna ja see on kõigi numbrite tüüp. Kümnendtugi lisatakse varsti.

Power Fx toetab kahte tüüpi arve:kümnendarv ja ujuk (sünonüümidega arv ja valuuta ).

Kümnendkoht on enamiku äriarvutuste jaoks parim. See suudab täpselt esitada numbreid aluses 10, mis tähendab, et 0.1 seda saab täpselt esitada ja see väldib arvutuste ajal ümardamine vigu. Sellel on piisavalt suur valik mis tahes ärivajaduste jaoks, kuni 1028 kuni 28-kohalise täpsusega. Kümnendkoht on enamiku Power Fx hostide jaoks vaikimisi numbriline andmetüüp, mida kasutatakse lihtsalt kirjutamisel 2*2.

Float on teaduslike arvutuste jaoks parim. See võib esindada numbreid suuremas vahemikus, kuni 10308. Täpsus on piiratud 15 kümnendkohaga ja matemaatika põhineb 2. alusel, nii et see ei saa mõnda sagedast kümnendväärtust täpselt tähistada. Ujuki jõudlus on samuti suurem ja seda soositakse, kui see tegur ja täpsus pole kriitilise tähtsusega.

Kümnendarvud

Andmetüüp Kümnendkoht kasutab kõige sagedamini kümnendandmetüüpi.NET. Mõned hostid (nt Sql Serveris käitatavad Dataverse'i valemiveerud) kasutavad SQL Serveri kümnendandmetüüpi.

Kümnendkoht teeb matemaatikat nii, nagu koolis õppisite, kasutades 10-kohalisi baasnumbreid, mis on oluline, et vältida ümardamine vigu väga väikestest erinevustest, mis võivad koguneda 2. aluse matemaatika kasutamisel (nagu seda kasutab Float).

Vahemik on positiivsest 79,228,162,514,264,337,593,543,950,335 kuni negatiivse 79,228,162,514,264,337,593,543,950,335. Kümnendkoha eraldaja saab paigutada nende arvude mis tahes kohta, pakkudes kuni 28-kohalist täpsust, ja see on siiski täpselt esitatud. Näiteks võib 79,228,162,514,264.337593543950335 olla täpselt esindatud, nagu ka 7.9228162514264337593543950335.

Ujukomaarvud

Andmetüüp Float, tuntud ka kui arv või valuuta , kasutab IEEE 754 topelttäpset ujukomastandardit . ... See Standard pakub väga suurt hulka numbreid, milles töötada, alates – 1,79769 x 10308 kuni 1,79769 x 10308. Väikseim esindatav väärtus on 5 x 10– 324.

Ujuk võib täpselt tähistada täisarve (või täisarve) vahemikus –9,007,199,254,740,991 (–(253 – 1)) ja 9,007,199,254,740,991 (253 – 1 (kaasa arvatud). See vahemik on suurem kui 32-bitine (või 4-baidine) täisarv, mida andmebaasid tavaliselt kasutavad. Lõuendrakendused ei saa aga kasutada 64-bitiseid (või 8-baidist) täisarvulisi andmetüüpe. Võimalik, et soovite numbri talletada tekstiväljal või kasutada arvutatud veergu arvust tekstiväljal koopia tegemiseks, nii et see vastendataks lõuendirakenduse andmetüübiga Tekst . Sel viisil saate neid väärtusi talletada, kuvada ja sisestada ning neid võrrelda, et määratleda, kas need on võrdsed, kuid sellel vormil ei saa nendega arvutusi teha.

Ujuvkomakohaga aritmeetilised tehted on ligikaudsed, mistõttu võib esineda ootamatuid tulemusi mitmete dokumenteeritud näidetega. Võib eeldada, et valem 55/100*100 tagastab täpselt 55 ja (55/100*100)-55 tagastab täpselt nulli. Kuid viimane valem tagastab 7,1054 x 10–15, mis on väga väike, aga mitte null. See väike erinevus ei tekita tavaliselt probleeme ja rakendus ümardab selle tulemi kuvamisel. Samas väikesed erinevused võivad kuhjuda järgnevates arvutustes ja tuua lõpptulemuseks vale vastuse.

Andmebaasi süsteemid hoiustavad sageli valuutasid ja teostavad arvutusi, kasutades kümnendkoha matemaatikat, mis pakub väiksemat vahemikku, kuid suuremat kontrolli täpsuse üle. Vaikimisi on lõuendirakenduste kaardil valuutad kas ujuvkomakohtadega või mitte. Seetõttu võib tulemus erineda arvutustest, mis on tehtud algse kümnendkoha andmetüübiga. Olenevalt rakenduse täpsusvajadustest võiksite nende väärtustega töötada tekstina, nagu on kirjeldatud suurte täisarvude korral varem.

Vaikeväärtused ja konversioonid

Märkus.

Power Apps toetab ujukit ainult täna ja see on kõigi numbrite tüüp. Kümnendtugi lisatakse varsti.

Enamik Power Fx hoste kasutab vaikimisi kümnendkohta . Selle vaikeväärtuse olemasolu tähendab:

  • Sõnasõnalised arvud valemites. Arvu 1.234 tõlgendatakse kümnendväärtusena . Näiteks tõlgendab valem 1.234 * 2 ja 1.2342 kümnendkohana ning tagastab kümnendtulemi.
  • Väärtuse funktsioon. Value( "1.234" ) tagastab kümnendväärtuse . Näiteks tõlgendab funktsioon Value valemis Value( "1.234" ) * 2 tekstistringi sisu kümnendkohana "1.234".

Ujukiväärtustega töötamiseks kasutatakse funktsiooni Float . Meie näite Float( 1.234 ) laiendamine teisendab kümnendkoha1.234 ujukiks . Ujukitsaab kasutada ka väärtuse asendajana ujukomaarvu Float( "1.234" ) sisaldava stringi teisendamiseks näiteks ujukomaväärtuseks , mis on nõutav, kui arvu ei saa esitada kümnendkohana .

Kokkuvõttes:

Kasutus Kümnendarv Float
Sõnasõnalised arvud valemites 1.234 Float( 1.234 )
Float( "1.234" )
Teisendamine tekstistringist Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Teisendamine numbriliste tüüpide vahel Decimal( float ) Float( decimal )
Teisendamine tekstistringiks Text( decimal ) Text( float )

Numbriliste tüüpide segamine

Ujuki - ja kümnendväärtusi saab vabalt segada. Kui see on segatud, teisendatakse kümnendväärtused suurema vahemiku tõttu ujukiväärtusteks . Kuna teisendamine võib põhjustada täpsuse kao, on oluline neid kahte asjatult mitte segada. Kuna kümnendarv on vaikimisi literaalandmetüüp ja enamik arvulisi funktsioone säilitab tüübi, on suhteliselt lihtne ilma seda soovimata hõljuma vältida.

Näiteks kaaluge järgmist arvutust, kasutades pac power-fx repl pärast CLI Power Platform installimist. Kuna mõlemad arvud on kümnendarvud, tehakse arvutus kümnendkohtades ja tulemus säilitab täieliku täpsuse:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Kui selle asemel muudetaks teine operand Floatiks , siis tehtaks kogu arvutus Floatis ja pisike murdosa läheks kaduma:

>> 1.0000000000000000000000000001 * Float(2)
2

Kuupäev, kellaaeg ja kuupäevaga kellaaeg

Ajavööndid

Kuupäeva/kellaaja väärtused kuuluvad järgmistesse kategooriatesse.

  • Kasutaja kohalik: need väärtused salvestatakse UTC-sse (koordineeritud maailmaaeg), kuid rakenduse kasutaja ajavöönd mõjutab seda, kuidas rakendus neid väärtusi näitab ja kuidas rakenduse kasutaja need määrab. Näiteks Kanadas kuvatakse sama ajahetk Kanadas asuvale kasutajale teisiti kui Jaapanis.
  • Ajavööndist sõltumatu: rakendus kuvab neid väärtusi samamoodi ja rakenduse kasutaja määrab need samamoodi, olenemata ajavööndist. Sama ajahetk kuvatakse kasutajale Kanadas samamoodi nagu kasutajale Jaapanis. Rakenduse autorid, kes ei eelda, et rakendused töötavad erinevates ajavööndites, kasutavad neid väärtusi, kuna need on üldiselt lihtsamad.

Järgmises tabelis on toodud mõned näited.

Kuupäeva/kellaaja tüüp Andmebaasis talletatud väärtus Väärtus kuvatakse ja sisestatakse 7 tundi UTC lääne suuna järgi Väärtus kuvatakse ja sisestatakse 4 tundi UTC ida suuna järgi
Kasutaja kohalik Pühapäev,19.mai,2019
04.00
Laupäev,18.mai2019
21.00
Pühapäev,19.mai,2019
08.00
Ajavööndist sõltumatu Pühapäev,19.mai,2019
04.00
Pühapäev,19.mai,2019
04.00
Pühapäev,19.mai,2019
04.00

Kasutaja ajavööndi kuupäeva/kellaaja puhul kasutavad lõuendirakendused brauseri või seadme ajavööndit, kuid mudelipõhised rakendused kasutavad rakenduse Dataverse kasutaja sätet. Need sätted on tavaliselt vastavuses, kuid tulemused erinevad, kui need sätted erinevad.

Kasutage funktsioone DateAdd (Lisatud kuupäev) ja TimeZoneInformation (Ajatsooni teave), et teisendada kohalik ajatsoon UTC-tsooni ja vastupidi. Näited leiate nende funktsioonide dokumentide lõpus.

Arvulised ekvivalendid

Lõuendirakendused hoiavad ja arvutavad kõik kuupäeva/kellaaja väärtused, olenemata sellest, kas User local (Kasutaja ajavöönd) või Time zone independent (Ajatsoonist sõltumatu) on UTC-ajatsoonis. Rakendus tõlgib väärtused, mis põhinevad rakenduse kasutaja ajavööndil, kui väärtused on kuvatud ja kui rakenduse kasutaja need määrab.

Kui lõuendirakendus loeb andmeallikast Time zone independent (Ajatsoonist sõltumatu) väärtust või kirjutab sellise väärtuse andmeallikasse, kohandab rakendus automaatselt väärtust, et kompenseerida rakenduse kasutaja ajavööndit. Rakenduses käsitletakse väärtust UTC-väärtusena, mis on kooskõlas kõigi muude rakenduse kuupäeva/kellaaja väärtustega. Selle hüvitise tõttu kuvatakse algse Time zone independent (Ajatsoonist sõltumatu) väärtus juhul, kui rakendus kohandab rakenduse kasutaja ajavööndi UTC väärtust.

Saate seda käitumist põhjalikumalt jälgida, kasutades funktsiooni Value (Väärtus), et pääseda ligi kuupäeva/kellaaja väärtuse aluseks olevale numbrilisele väärtusele. See funktsioon tagastab kuupäeva/kellaaja väärtuse, mis on millisekundites alates 1. jaanuarist 1970 00:00:00.000 UTC.

Kuna iga kuupäeva/kellaaja väärtust hoitakse UTC ajatsoonist, ei tagasta valem Value( Date( 1970, 1, 1 ) ) nulli enamuses maailma osades, kuna funktsioon Date (Kuupäev) tagastab kuupäeva UTC-kujul. Näiteks tagastaks valem 28 800 000 ajavööndis, mis erineb UTC-st kaheksa tunni võrra. See arv näitab kaheksat tundi millisekundites.

Tulles tagasi meie näite juurde:

Kuupäeva/kellaaja tüüp Andmebaasis talletatud väärtus Väärtus kuvatakse ja sisestatakse 7 tundi UTC lääne suuna järgi Väärtusfunktsiooni tagastamine
Kasutaja kohalik Pühapäev,19.mai,2019
04.00
Laupäev,18.mai2019
21.00
1,558,238,400,000
(Pühapäev,19.mai,2019
4.00 UTC)
Ajavööndist sõltumatu Pühapäev,19.mai,2019
04.00
Pühapäev,19.mai,2019
04.00
1,558,263,600,000
(Pühapäev,19.mai,2019
11.00 UTC)

UNIX-i kellaaegade teisendamine

UNIX-i kellaajad kajastavad sekundite arvu alates 1. jaanuarist 1970 00:00:00 UTC. Kuna lõuendirakendused kasutavad sekundite asemel millisekundeid, saate teisendada kahe vahel korrutades või jagades arvu 1000-ga.

Näiteks UNIX aeg 1 000 000 000 näitab 9. septembrit 2001, kella 01:46:40. Et kuvada kuupäeva/kellaaja väärtust lõuendirakenduses, korrutage vastav arv 1000-ga, et teisendada see millisekunditeks, ja seejärel kasutage seda funktsioonis Text (Tekst). Valem Text( 1000000000 * 1000, DateTimeFormat.UTC ) tagastab sõne 2001-09-09T01:46:40.000Z.

Kuid funktsioon tagastab laupäev, 8. september, 2001 18:46:40, kui kasutate ajavööndi formaati DateTimeFormat.LongDateTime24, mis on – 7 tundi nihkega UTC (7 tundi UTC-st läänes) järgi. Tulemus näitab DateTime (Kellaajaga kuupäev) väärtust õigesti kohaliku ajavööndi järgi.

UNIX kellaajaks teisendamiseks jagage Value (Väärtus) tulemust 1000-ga.
RoundDown( Väärtus( UnixTime ) / 1000, 0 )

Kui teil on vaja Date (Kuupäev) väärtuse puhul vaja kuvada UNIX kellaaeg edasisteks arvutusteks või rakenduses Power Apps kuvamiseks, kasutage seda valemit.
DateAdd( Kuupäev( 1970,1,1 ), UnixTime, sekundid )

SQL Server

SQL Server toetab Datetime, Datetime2 ja muid kuupäeva/kellaaja andmetüüpe, mis ei sisalda ajavööndi nihet ja ei viita sellele, millises ajavööndis nad on. Lõuendirakendused eeldavad, et väärtused hoiustatakse UTC-s ja neid käsitletakse kui kasutaja ajavöönd. Kui väärtused on mõeldud olema ajatsoonist sõltumatud, parandatakse UTC-tõlgeteks kasutades funktsiooni TimeZoneOffset (Ajatsooninihe).

Lõuendirakendused kasutavad Datetimeoffset (Ajatsooninihe) väljadel olevat ajavööndi teave, teisandades väärtust rakenduse sisemiseks UTC-teisenduseks. Rakendused kasutavad andmete kirjutamisel ajavööndina alati UTC-d (null ajavööndi nihe).

Lõuendirakendused loevad ja kirjutavad SQL Serveri andmetüübi Time (Aeg) väärtuseid tekstisõnena ISO 8601 kestuse vormingus. Näiteks peate sõne vormingut kohandama ja kasutama funktsiooni Time (Aeg), et teisendada tekstisõnet "PT2H1M39S" väärtuseks Time (Aeg).

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)

Kuupäeva ja kellaaja teabe segamine

Kuupäevadel, kellaaegadel ja kuupäevakellaaegadel on erinevad nimed, kuid neil kõigil on kuupäevade ja kellaaegade kohta sama teave.

Date (Kuupäev) väärtus võib sisaldada sellega seotud aja teavet, mis on tavaliselt kesköö. Time (Aeg) väärtus võib sisaldada ajakohast teavet, mis on tavaliselt 1. jaanuar 1970. Dataverse hoiustab ka ajateabe väljal Date Only (Ainult kuupäev), kuid kuvab vaikimisi ainult kuupäeva teavet. Samamoodi eristavad lõuendirakendused neid andmetüüpe mõnikord, et määratleda vaikevormingud ja -juhtelemendid.

Kuupäeva ja kellaaja väärtuste lisamine ja lahutamine ei ole soovitatav, kuna ajavöönd ja muud teisendused võivad põhjustada segadust. Kasutage funktsiooni Value (Väärtus), et teisendada kuupäeva/kellaaja väärtused millisekunditeks ja arvestada rakenduse kasutaja ajavööndit või kasutage funktsioone DateAdd (Lisa kuupäev) ja DateDiff (Kuupäeva erinevus), et lisada või lahutada ühest neist väärtustest.

Valikud ja Jah/Ei

Valikud ja kahe suvandiga andmetüübid võimaldavad rakenduse kasutajal valida kaks või enam valikut. Näiteks valiku Tellimuse olek valik võib pakkuda valikuid Uus, Tarnitud, Arveldatud ja Suletud. Kahe suvandiga andmetüüp pakub ainult kahte valikut.

Mõlemad andmetüübid kuvavad oma sildid tekstina. Näiteks kuvatakse sildi juhtelemendis üks tellimuse oleku suvanditest, kui juhtelemendi atribuut Tekst on seatud sellele valikule viitavale valemile. Suvandisilte saab lokaliseerida erinevates asukohtades olevate rakendusekasutajate jaoks.

Kui rakenduse kasutaja valib suvandi ja salvestab muudatuse, saadab rakendus andmed andmebaasi, kus talletatakse andmed keelest sõltumatul viisil. Valikuvalik saadetakse ja salvestatakse arvuna ning kahe suvandiga andmetüübi suvand saadetakse ja salvestatakse loogikaväärtusena.

Sildid on ainult kuvamiseks. Silte ei saa otse võrrelda, kuna need on keelekohased. Selle asemel on igal valikul väärtus, mis sobib aluseks oleva arvu või loogikaväärtusega. Selle valemi abil ei saa teha näiteks järgmist.

If( ThisItem.OrderStatus = "Active", ...

Aga võite kasutada järgmist valemit.

If( ThisItem.OrderStatus = OrderStatus.Active, ...

Globaalsete valikute korral (millised tabelid jagavad) suvandikomplekti loendi nimi vastab globaalse valiku nimele. Kohalike valikute (mis hõlmavad tabelit) puhul võib nimi sisaldada tabeli nime. Selline käitumine väldib konflikte, kui mitmel tabelil on sama nimega valikud. Näiteks võib kontod tabel olla Tellitud staatus valikuks, ja selle nimi Tellitus staatus (Kontod). Nimes on tühikud ja sulud, nii et kui viitate sellele valemis, peate selle ümbritsema ülakomadega.

Kahe suvandiga väärtused käituvad ka loogikaväärtustena. Näiteks kahe suvandiga väärtusel nimega TaxStatus võivad olla sildid Maksustatavad ja Mittemaksustatavad, mis vastavad tõesele ja väärale. Selle kuvamiseks kasutage järgmist valemit.

If( ThisItem.Taxable = TaxStatus.Taxable, ...

Võite kasutada ka järgmist valemit.

If( ThisItem.Taxable, ...