Jagamisviis:


Andmetüübid

Märkus.

Microsoft Power Fx on lõuendirakenduste valemikeele uus nimi. Need artiklid on pooleli, kuna ekstraktime keele lõuendirakendustest, integreerime selle teiste Microsoft Power Platform toodetega ja teeme selle kättesaadavaks avatud allikana. Alustage Microsoft Power Fx ülevaatega sissejuhatuseks keelde.

Teave voolab läbi rakenduse väikeste, diskreetsete väärtustena, väga sarnaselt arvutustabeli lahtritega. Näiteks toimiksid andmed väljades Birthday (Sünnipäev) ja Anniversary (Aastapäev) sarnaselt Date (Kuupäev) väärtusele, kus on aasta, kuu ja päeva toodud. Rakendus teab, kuidas neid väärtusi vormindada, piirata sisendit igale sobivale ja jagada väärtusi andmebaasiga. Inimeste jaoks erinevad sünnipäevad tähtpäevadest, kuid süsteem tegeleb nendega täpselt samal viisil. Sel juhul on Date (Kuupäev) näide andmetüübist.

Selles artiklis kirjeldatakse, milliseid andmetüüpe lõuendirakendused toetavad. Kui rakendus loob ühenduse mõne välise andmeallikaga, kaardistatakse iga selle allika andmetüüp lõuendirakenduste andmetüübiga.

Andmetüüp Kirjeldus Näited
Loogika Väärtus on kas tõene või väär. Saab kasutada otse funktsioonides If, Filter ja muud ilma võrdlemiseta. tõene
Värv Värvi spetsifikatsioon, sh alfakanal. Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
Valuuta Valuuta väärtus, mis hoiustatakse ujuvkomaga arvuga. Valuutaväärtused on samad, mis valuutade vormindamise suvandite numbriliste väärtuste suvanditega. 123
4.56
Kuupäev Kuupäev ilma kellaajata rakenduse kasutaja ajavööndis. Date( 2019, 5, 16 )
Kuupäev ja kellaaeg Kuupäev kellaajaga rakenduse kasutaja ajavööndis. DateTimeValue( "May 16, 2019 1:23:09 PM" )
Kümnendarv Suure täpsusega number, baas 10 operatsiooni ja piiratud ulatus. 123
Kümnendkoht( "1,2345" )
GUID Globaalselt kordumatu identifikaator. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hüperlink Tekstisõne, mis sisaldab hüperlinki. "https://powerapps.microsoft.com"
Image Universaalse ressursi identifikaatori (URI) tekstisõne pildile formaatides .jpeg, .png, .SVG, .gif või muus levinud veebipildi vormingus. MyImage (Minu pilt) lisatakse rakenduse ressursina
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Meedia URI tekstisõne video või heli salvestamiseks. MyVideo (Minu video) lisatakse rakenduse ressursina
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Arv või ujuk Standardtäpsusega number, 2. baasi operatsioonid ja lai valik. 123
8.903e121
1.234e200
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. ThisItem.OrderStatus
Kirje Andmeväärtuste kirje. See ühendi andmetüüp sisaldab kõigi selles teemas loetletud andmetüüpide eksemplare. Lisateave: Tabelitega töötamine. { Ettevõte: "Northwind Traders",
Töötajad: 35,
NonProfit: väär }
Kirje viide Viide tabeli kirjele. Selliseid viiteid kasutatakse sageli koos polümorfsete otsingutega. Lisateave: Viidetega töötamine. First(Accounts).Owner
Table Kirjete tabel. Kõik kirjed peavad ühtima samade andmetüüpidega väljade nimedega. Vahele jäetud väljad arvestatakse tühjade väljadena. See ühendi andmetüüp sisaldab kõigi selles teemas loetletud andmetüüpide eksemplare. Lisateave: Tabelitega töötamine. Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Tekst Unicode'i tekstisõne. "Tere, maailm"
Kellaaeg Kellaaeg ilma kuupäevata rakenduse kasutaja ajavööndis. Time( 11, 23, 45 )
Teine võimalus 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. ThisItem.Taxable
Mitte tipitud objekt Deklareerimata tüüpi objekt. Aluseks olev objekt võib olla mis tahes olemasolev tüüp ja seda saab teisendada ühilduvaks tüübiks, kasutades funktsioone, nagu Boolean(), Value(), Table() jne. Lisateavet vaadake teemadest Mitte-tipitud objekt ja JSON-iga töötamine. ParseJSON("{ ""Väli"" : 1234 }").Field

Paljud neist andmetüüpidest on sarnased ja neil on sama aluseks olev esitus, näiteks välja Hyperlink (Hüperlink) käsitletakse, kui väli Text (Tekst). Täiendavad andmetüübid pakuvad vormidel ja muudes juhtelementides paremaid vaikekogemusi.

Tühi

Kõigi andmetüüpide väärtuseks võib olla tühi (teisisõnu väärtuseta). 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 valem Set( x, Blank() ) eemaldab igast väärtusest globaalmuutuja x.

Tühja väärtuse testimiseks kasutage funktsiooni isBlank (On tühi). Asendage võimalikud tühjad väärtused, täidetud väärtustega, kasutades funktsiooni Coalesce (Koaleeru).

Kuna kõik andmetüübid toetavad tühje väärtusi, on andmetüüpidel Boolean (Tõeväärtus) ja Two option (Kaks võimalust) efektiivselt 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!""" )

tulemuseks on banner (kui nuppu on vajutatud), kus esimesed ja viimased kahekordsed jutumärgid jäetakse välja (kuna need piiritlevad tekstisõnet) ja korduvad kahekordsed jutumärgid ümber lauseTere, maailm!, mis asendatakse ühe topeltjutumä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. Väljundiga on sageli lihtsam töötada ja seda 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, et valemi tulemust saaks rakendada tekstistringile. Näiteks sisestab see valem tervitusse väärtuse NickName, kui see on esitatud, FirstName, kui see pole esitatud.

$"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 nendest väärtustest on tühjad, jääb nimeosade vahele õige tühikute arv. 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"

Ülaltoodud valemi tulemuseks on kolm sildi juhtelemendis kuvatavat rida.

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

Nagu allpool näha, toetatakse uusi tekstijooni ka stringi interpolatsiooniga, nagu allpool on näidatud.

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

Ülaltoodud valemil 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 rakendusele lisatud Northwind Traders logo nimega 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 juhul ei tagasta tegelikke andmeid enne, kui neid tegelikult vaja on. 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 juhtelemendiga pildistatud pilt, mis on nüüd viidatud kui "appres://..." võib olla nii kõrge resolutsiooniga, kui seadme kaamera seda võimaldab. 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, katsetage ühiseid stsenaariume kõigis seadmetes, kus see peaks töötama.

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 täna ainult Floati 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 javaluuta).

Kümnendkoht on enamiku äriarvutuste jaoks parim. See suudab täpselt esitada numbreid aluses 10, mis tähendab, et seda saab täpselt esitada ja see 0.1 ei ole arvutuste ajal ümardamisvigade suhtes altid. 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 palju suuremas vahemikus, kuni 10308. Täpsus on piiratud 15 kümnendkohaga ja matemaatika põhineb alusel 2, nii et see ei saa täpselt esindada mõnda ühist kümnendväärtust. Floatil on ka suurem jõudlus ja seda eelistatakse, kui see on tegur ja täpsus pole kriitiline.

Kümnendarvud

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

Kümnendkoht teeb matemaatikat nii, nagu koolis õppisite, kasutades 10-kohalisi baasnumbreid. See on väga oluline, et vältida ümardamisvigu väga väikestest erinevustest, mis võivad koguneda aluse 2 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 (2 53 – 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õib juhtuda, et soovite numbrit hoiustada tekstiväljal või kasutada kalkuleeritud veergu, et teha tekstiväljal olevast numbrist koopia, et see oleks lõuendirakenduses kaardistatud andmetüüpi Text (Tekst). Sel viisil saate talletada, kuvada ja sisestada väärtused ning võrrelda nende võrdsust. Te ei saa teha numbrilisi arvutusi väärtustega sellel vormil.

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. Kui sellist tüüpi lahknevused põhjustavad probleeme, võite töötada nendega Text (Tekst) tüübina, nagu ka suurte täisarvudega, nagu on kirjeldatud varasemalt käesolevas jaotises.

Vaikeväärtused ja konversioonid

Märkus.

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

Enamik Power Fx hoste kasutab vaikimisi kümnendkohta . See mõjutab:

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

Ujukiväärtustega töötamiseks kasutatakse funktsiooni Float . Ülaltoodud Float( 1.234 ) näite laiendamisel teisendatakse kümnendkoht1.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 see võib põhjustada täpsuse kadu, on oluline neid kahte tarbetult mitte segada. Kuna kümnendkoht on vaikimisi sõnasõnaline andmetüüp ja enamik numbrilisi funktsioone säilitab tüübi, on suhteliselt lihtne vältida ujukile liikumist ilma seda soovimata.

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 ajavöönd : väärtused hoiustatakse ajatsooniga UTC (koordineeritud maailmaaeg), kuid rakenduse kasutaja ajavöönd mõjutab kuidas rakendus väärtusi kuvab ja kuidas rakenduse kasutaja neid määrab. Näiteks Kanadas kuvatakse sama ajahetk Kanadas asuvale kasutajale teisiti kui Jaapanis.
  • Ajavööndist sõltumatu : rakendus kuvab väärtused ühtemoodi 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 ajavöönd 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 kattuvad tavaliselt, kuid tulemused sõltuvad sellest, kas need sätted on 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 ülal toodud 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 Funktsioon Value (Väärtus) tagastab
Kasutaja ajavöönd 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( Value( 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( Date( 1970,1,1 ), UnixTime, Seconds )

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

Suvanditel Date (Kuupäev), Time (Aeg) ja DateTime (Kuupäev kellaajaga) on erinevad nimed, kuid neil kõigil on sama teave kuupäevade ja kellaaegade kohta.

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 pakuvad rakenduse kasutajale vähemalt kaks valikut, mida valida. Näiteks valiku Tellimuse olek valik võib pakkuda valikuid Uus, Tarnitud, Arveldatud ja Suletud. Kahe võimalusega andmetüüp pakub ainult kahte valikut.

Mõlemad andmetüübid näitavad oma silte tekstisõne kontekstis. Näiteks kuvatakse sildi juhtelemendis üks tellimuse oleku suvanditest, kui juhtelemendi atribuut Tekst on seatud sellele valikule viitavale valemile. Suvandite sildid võidakse lokaliseerida rakenduste kasutajatele erinevates kohtades.

Kui rakenduse kasutaja valib suvandi ja salvestab selle muudatuse, edastab rakendus andmed andmebaasi, mis talletab andmeid kujul, mis ei sõltu keelest. Valik edastatakse ja salvestatakse numbrina ning kahe suvandiga andmetüübi suvand edastatakse ja salvestatakse loogikaväärtusena.

Sildid on mõeldud ainult kuvamiseks. Silte ei saa otse omavahel võrelda, sest nad on keelespetsiifilised. 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 on tabelile ulatus) puhul võib nimi sisaldada tabeli nime. Selline käitumine väldib vastuolusid, kui mitmel tabelil on sama nimega valikuid. Näiteks võib kontod tabel olla Tellitud staatus valikuks, ja selle nimi Tellitus staatus (Kontod). See nimi sisaldab ühte või mitut tühikut ja sulgu, nii et peate valemis viidates ümbritsema seda ühekordsete jutumärkidega.

Lisaks võivad kahe võimalusega väärtused käituda tõeväärtustena. Näiteks kahe võimalusega väärtus nimega TaxStatus (Maksu olek) võib sisaldada silte Taxable (Maksustatav) ja Non-Taxable (Mittemaksustatav), mis vastavad tõeväärtustele tõene ja väär. Näitamiseks võite kasutada järgmist valemit.

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

Võite kasutada ka seda samaväärset valemit:

If( ThisItem.Taxable, ...