Datu tipi

Informācija caur Power Fx plūst mazās, diskrētās vērtībās, piemēram, izklājlapas šūnās. Piemēram, dati laukā Dzimšanas diena un Gadadiena tiek ievadīti kā datuma vērtība, kas ietver gadu, mēnesi un dienu. Power Fx formatē šīs vērtības, ierobežo ievadi līdz katrai no tām atbilstošajām vērtībām un koplieto vērtības ar datu bāzi. Dzimšanas dienas un jubilejas var atšķirties atkarībā no cilvēkiem, bet sistēma ar tām rīkojas vienādi. Šajā gadījumā Datums ir datu tipa piemērs.

Šajā rakstā ir izskaidrots katrs Power Fx datu tips, kā tas darbojas un kā tas tiek kartēts uz ārējiem datu avotiem.

Datu tips Apraksts Piemēri
Būla Vērtība true (patiess) vai false (aplams). To var izmantot tieši If, Filter un citās funkcijās bez salīdzinājuma. patiess
Izvēle Izvēle no kādas opciju kopas, norādīta ar skaitli. Šis datu tips apvieno lokalizējamu teksta etiķeti un skaitlisku vērtību. Šī etiķete ir redzama programmā, un skaitliskā vērtība tiek glabāta un izmantota salīdzināšanai. Funkcija Type atbalsta šo datu tipu, ja izmantojat izvēles lauka instanci pēc nosaukuma. ThisItem.OrderStatus
Krāsa Krāsu specifikācija, kas ietver alfa kanālu. Krāsa.Sarkans
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0,5 )
Valūta Valūtas vērtība, kas saglabāta peldošā komata skaitlī. Valūtas vērtības ir tādas pašas kā skaitliskās vērtības, bet ar valūtas formatējuma opcijām. Funkcija Type neatbalsta datu tipu Currency . 123
4.56
Datums Datums bez laika lietotnes lietotāja laika joslā. Datums( 2019, 5, 16 )
DateTime Datums ar laiku lietotnes lietotāja laika joslā. DateTimeValue( "16. maijs, 2019 1:23:09 PM" )
Decimāldaļas Skaits ar augstu precizitāti, bāzes 10 operācijām un ierobežotu diapazonu. 123
Decimāldaļas( "1.2345" )
Dinamisks (agrāk UntypedObject) Vērtības tips ir dinamisks un izpildlaikā var mainīties. Dinamiskā vērtība var būt jebkurš esošs tips, un to var pārvērst saderīgos tipos, izmantojot tādas funkcijas kā Boolean(), Value(), Table() utt. Papildinformāciju skatiet sadaļā Dinamiskās vērtības un Darbs ar JSON. ParseJSON("{ ""Lauks"" : 1234 }"). Lauks
Peldēt Skaitlis ar standarta precizitāti, bāzes 2 operācijām un plašu diapazonu. 123
8.903e121
1.234E-200
GUID Globāli unikāls identifikators. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hipersaite Teksta virkne, kas satur hipersaiti. "https://powerapps.microsoft.com"
Attēlu Universālā resursa identifikatora (URI) teksta virkne attēlam .jpeg, .png, .svg, .gifvai citā parastā tīmekļa attēla formātā. Funkcija Type neatbalsta datu tipu Image . MyImage pievienots kā programmas resurss
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Media URI teksta virkne uz video vai audio rindu. Funkcija Type neatbalsta datu tipu Media . MyVideo pievienots kā programmas resurss
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Skaitlis Decimāldaļas (lielākā daļa resursdatoru) vai Power Fx Float (audekla programmu) aizstājvārds . Ja situācijai varat izmantot jebkuru numuru variantu, maksimālai saderībai izmantojiet Skaitlis . 123
0.0123
1.e4
Rekords Datu vērtību rinda. Šis saliktais datu tips satur citu šajā rakstā uzskaitīto datu tipu gadījumus. Papildinformāciju skatiet sadaļā Darbs ar tabulām. Funkcija Type atbalsta šo datu tipu, ja izmantojat ieraksta instanci. { Uzņēmums: "Northwind Traders",
Personāls: 35,
Bezpeļņas: nepatiess }
Atsauce reģistrā Atsauce uz ierakstu tabulā. Šīs atsauces bieži tiek izmantotas ar polimorfām uzmeklēšanām. Papildinformāciju skatiet sadaļā Darbs ar atsaucēm. Funkcija Type neatbalsta šo datu tipu. Pirmais(konti). Īpašnieks
Galds Rindu tabula. Visiem ierakstiem ir jābūt vienādiem lauku nosaukumiem un datu tipiem, un izlaistie lauki tiek uzskatīti par tukšiem. Šis saliktais datu tips satur citu šajā rakstā uzskaitīto datu tipu gadījumus. Papildinformāciju skatiet sadaļā Darbs ar tabulām. Funkcija Type atbalsta šo datu tipu, ja izmantojat tabulas instanci. Tabula( { Vārds: "Sidnijs",
Uzvārds: "Higa" },
{ Vārds: "Nancy",
Uzvārds: "Anderson" } )
Teksts Unikoda teksta virkne. "Sveika, pasaule"
Laiks Laiks bez datuma lietotnes lietotāja laika joslā. Laiks( 11, 23, 45 )
Anulēt To izmanto tikai uzvedības lietotāja definētās funkcijas, tas norāda, ka funkcijai nav atgriešanas tipa. Funkcija Type neatbalsta šo datu tipu. Pat ja funkcijai nav atgriešanas tipa vai vērtības, tā vienmēr var atgriezt kļūdu. Sveiki(): Void = { Paziņot( "Sveiki!" ) }
Jā/Nē Izvēle no kādas divu opciju kopas, norādīta ar Būla vērtību. Šis datu tips apvieno lokalizējamu teksta etiķeti un Būla vērtību. Šī etiķete ir redzama programmā, un Būla vērtība tiek glabāta un izmantota salīdzināšanai. Funkcija Type atbalsta šo datu tipu, ja pēc nosaukuma izmantojat lauka Jā/Nē instanci. ThisItem.Taxable

Daudzi no šiem datu tipiem ir līdzīgi, un tiem ir tāds pats pamatā esošais attēlojums, piemēram, hipersaites lauks, kas tiek uzskatīts par tekstu. Papildu datu tipi nodrošina labāku noklusējuma pieredzi veidlapās un citās vadīklās.

Tukšs

Visu datu tipu vērtība var būt tukša (bez vērtības). Šī jēdziena apzīmēšanai datu bāzēs bieži tiek izmantots termins “null”.

Lai kādu mainīgo vai kolonnu iestatītu uz tukšu vērtību, izmantojiet funkciju Blank (Tukšs) ar Set (Kopa) vai Patch (Ielāps). Piemēram, Set( x, Blank() ) noņem vērtību globālajā mainīgajā x.

Pārbaudiet, vai nav tukšas vērtības, izmantojot funkciju IsBlank . Iespējamās tukšās vērtības nomainiet pret vērtībām, kas navtukšas, izmantojot funkciju Coalesce.

Tā kā visi datu tipi atbalsta tukšu, opcijuBūla un Divi datu tipiem ir trīs iespējamās vērtības.

Visi četri šie datu tipi ir balstīti uz Unikoda teksta virkni.

Iegults teksts

Formulā iegultas teksta virknes ietver dubultās pēdiņas. Lai teksta virknē attēlotu vienu dubulto pēdiņu, izmantojiet divas dubultās pēdiņas kopā. Piemēram, vadīklas Button rekvizītā OnSelect izmantojot šādu formulu:

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

Nospiežot pogu, tiek parādīts reklāmkarogs, kurā tiek izlaistas pirmās un pēdējās dubultpēdiņas (jo tās norobežo teksta virkni) un atkārtotās dubultpēdiņas ap Sveika, pasaule! tiek aizstātas ar vienu dubultpēdiņu:

uznirstošais paziņojums ar ziņojumu Līga teica:

Vienkāršās pēdiņas zímes netiek izmantotas identifikatoru nosaukumiem, kuri satur īpašās rakstzīmes un tekstá nav nozīmes.

Virknes interpolācija

Izmantojiet virknes interpolāciju, lai teksta virknē ieslégtu formulas. Ar šo pieeju bieži vien ir vieglāk strādāt un vizualizēt izvadi, nekā izmantojot funkciju Concatenate vai & operator.

Lietojiet prefiksu teksta virknei ar dolāra zīmi $ un ievietojiet formulu, ieslégto loka iekavās { }. Lai teksta virknē iekļautu lokveida iekavas, izmantojiet atkārtotus lokveida iekavās: {{ vai }}. Virknes interpolāciju var izmantot jebkurā vietā, kur var izmantot standarta teksta virkni.

Piemēram, ņemiet vērā šís formulas vērtību, iestatot globālos mainīgos ÁbolI iestatīti uz 3, un Banáni iestatīti uz 4:

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

Šī formula atgriež teksta virkni Mums ir 3 āboli, 4 banáni, kas kopā dod 7 augĺus. Mainīgie Aboli un Banáni tiek ievietoti tekstā, kas aizstāj liektās iekavas, kā arī matemātiskās formulas rezultātu Aboli + Banáni Atstarpes un citas rakstzīmes ap lokveida iekavám tiek saglabātas tā, kādas tās ir.

Ieslégtajás formulās var būt iekļautas jebkuras funkcijas vai operatori. Viss, kas nepieciešams, ir tas, ka formulas rezultātu var piespiest teksta virknei. Piemēram, šī formula sveicienā ievieto Nika vārdu , ja tas ir piegādāts, vai Vārdu , ja tā nav:

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

Ja Iesauka ir iestatīta uz "Dźo", tad šī formula rada teksta virkni Laipni lūdzam, Džo, prieks iepazīties!. Bet, ja Iesauka ir neaizpildíta un Várds ir "Džozefs", tad šī formula rada Cien. Džozefs, prieks iepazīties! śajá vietā.

Virkņu interaktivizācija iegultajā formulā var iekļaut standarta teksta virknes. Piemēram, ja ne Iesauka, ne Várds netiek nodrošināts, mēs joprojām varētu nodrošināt "Draugs" , kas varētu būt aizstājējs:

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

Virknes interpolācijas var pat ievietot ligzdās. Izskatiet šo piemēru, kur Vārds, Otrais várds un Uzvārds tiek apvienoti sveicienā. Pat ja viena vai divas no šīm vērtībām ir tukšas, starp nosaukuma daļām tiek saglabāts pareizais atstarpju skaits. Ja neviena no daļām nav nodrošināta, iekšējā virknes interpolācija sabruks līdz tukšai virknei un tiks aizstāta ar Fúzijas funkciju "Draugs".

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Vārds Vidū Pēdējais Rezultāts
Džons Kvinīcija Doe Welcome John Quincy Doe!
Džons Tukša Doe Welcome John Doe!
Tukša Tukša Doe Welcome Doe!
Tukša Tukša Tukša Welcome Friend!

Jaunās rindiņas

Ieslégtajás teksta virknēs var būt jaunas rindas. Piemēram, izskatiet iestatíjumus Etiḱetes kontroles Teksta ípaśumam, izmantojot šādu formulu:

"Line 1
Line 2
Line 3"

Šīs formulas rezultātā etiķetes vadīklā tiek parādītas trīs rindiņas:

Iegulta teksta virkne un etiķešu vadīkla, kurā redzamas trīs rindiņas ar 1. līniju, 2. līniju un 3. līniju.

Jaunas līnijas tiek atbalstītas arī ar virknes interpolāciju:

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

Kas rada tādu pašu rezultātu:

Virknes interpolācijas formula un etiķetes vadīkla, kurā redzamas trīs līnijas ar 1. līniju, 2. līniju un 3. līniju.

Attēlu un multivides resursi

Izmantojot izvēlni Fails, kā programmas resursus varat pievienot attēlu, video un audio failus. Importētā faila nosaukums programmā kļūst par resursa nosaukumu. Šajā grafikā lietotnei ir pievienots Northwind Traders logotips, kura nosaukums ir nwindlogo:

Ziemeļu vēja resurss.

Lai šo resursu izmantotu programmā, norādiet to vadīklas Attēls rekvizītā Attēls:

Northwind attēls.

URI attēliem un citai multividei

Pēdējo piemēru varat papētīt pamatīgāk, vadīklas Etiķete rekvizītu Teksts iestatot uz nwindlogo. Etiķetē tiek rādīta teksta virkne:

Northwind teksts.

Uz katru attēla vai citas multivides failu (neatkarīgi no tā, vai tas atrodas mākonī, vai tiek pievienots kā programmas resurss) pamatnes programmas atsaucas, izmantojot URI teksta virkni.

Piemēram, Attēla rekvizīts attēla kontrolei pieņem ne tikai programmas resursus, bet arī saites uz attēliem tīmeklī, pieméram "https://northwindtraders.com/logo.jpg"". Šis rekvizīts pieņem arī iekļautos attēlus, kas izmanto datu URI shēmu, kā šajā piemērā:

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

Šāds URI rāda divu violetu rombu palielinātu versiju:

Dubultie dimanti.

Varat rādīt pēdējo vadīklā Kamera uzņemto attēlu, ja attēla vadīklas rekvizītu Attēls iestatāt uz kameras vadīklas rekvizītu Fotoattēls. Šī programma glabā atmiņā attēlu, un kameras vadīklas rekvizīts Fotoattēls atgriež URI atsauci uz attēlu. Piemēram, jūs varētu uzņemt fotogrāfiju, un kameras rekvizīts Fotoattēls varētu atgriezt "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Lai atsauktos uz attēlu vai citu datu bāzē glabātu multivides failu, ir jāizmanto URI. Tādējādi lietojumprogramma neatgūst faktiskos datus, kamēr tas nav nepieciešams. Piemēram, Microsoft Dataverse tabulas pielikums var atgriezt "appres://datasources/Contacts/table/..." Kā kameras piemērā šo attēlu var parādīt, iestatot šai atsaucei attēla vadīklas rekvizītu Attēls, kas izgūst bināros datus.

Kad kādu multivides datu tipu, piemēram, attēlu, saglabājat datu bāzē, programma sūta faktiskos attēla vai multivides datus, nevis URI atsauci.

Lieluma ierobežojumi

Kā teksta virknēm un URI identifikatoriem šo datu tipu garumam nav sākotnēji iestatītu ierobežojumu.

Binārajiem datiem, uz kuriem šie datu tipi atsaucas, arī nav sākotnēju lieluma ierobežojumu. Piemēram, attēls, kas uzņemts, izmantojot kameras vadības ierīci, uz kuru ir atsauce kā "appres://..." , var būt tik liels un augstas izšķirtspējas, cik ierīces kamera var sasmīdināt. Datu tips neierobežo multivides failu izšķirtspēju, kadru nomaiņas ātrumu un citus atribūtus, taču speciālajām vadīklām multivides atskaņošanai un uztveršanai varētu būt pašām savi ierobežojumi.

Taču uz visiem datu lielumiem attiecas programmā pieejamās atmiņas daudzums. Pārlūkprogrammas, kas darbojas galddatoros, parasti atbalsta vairāk par 100 megabaitiem datu. Taču tādās ierīcēs kā tālruņi pieejamās atmiņas daudzums varētu būt daudz mazāks, parasti 30–70 megabaitu diapazonā. Lai noteiktu, vai jūsu lietotne darbojas, ievērojot šos ierobežojumus, izmēģiniet izplatītākos scenārijus visās ierīcēs, kurās tai vajadzētu darboties.

Paraugprakse ir turēt datus atmiņā tikai tik ilgi, cik nepieciešams. Augšupielādējiet attēlus datu bāzē, cik drīz vien iespējams; lejupielādējiet attēlus tikai tad, kad programmas lietotājs tos pieprasa.

Numuri

Piezīmes

Power Apps šodien atbalsta tikai Float , un tas ir visu skaitļu tips. Drīzumā tiks pievienots decimālais atbalsts.

Power Fx atbalsta divu veidu skaitļus: Decimāldaļu un Float (ar sinonīmiem Skaitlis un Valūta).

Decimāls ir labākais lielākajai daļai biznesa aprēķinu. Tas var precīzi attēlot skaitļus 10. bāzē, kas nozīmē, ka 0.1 to var precīzi attēlot, un tas ļaus izvairīties no noapaļošana kļūdām aprēķinu laikā. Tam ir pietiekami liels diapazons jebkurai biznesa vajadzībai, līdz 1028 ar precizitāti līdz 28 cipariem. Decimāls ir noklusējuma ciparu datu tips lielākajai daļai Power Fx resursdatoru, ko izmanto, ja vienkārši raksta 2*2.

Pludiņš ir labākais zinātniskiem aprēķiniem. Tas var attēlot skaitļus lielākā diapazonā līdz pat 10308. Precizitāte ir ierobežota līdz 15 zīmēm aiz komata, un matemātika ir balstīta uz bāzi 2, tāpēc tā nevar precīzi attēlot dažas parastās decimāldaļas. Float ir arī augstāka veiktspēja, un tas ir priekšroka, ja tas ir faktors un precizitāte nav kritiska.

Decimālskaitļi

Decimāldatu tips visbiežāk izmanto .NET decimālo datu tipu. Daži resursdatori, piemēram, Dataverse formulas kolonnas, kas tiek palaistas SQL Server, izmanto SQL Server decimālo datu tipu.

Decimālā matemātika notiek tā, kā jūs mācījāties skolā, izmantojot bāzes 10 ciparus, kas ir svarīgi, lai izvairītos no noapaļošana kļūdām no ļoti mazām atšķirībām, kas var uzkrāties, izmantojot 2. bāzes matemātiku (kā to izmanto Float).

Diapazons ir no pozitīva 79,228,162,514,264,337,593,543,950,335 līdz negatīvam 79,228,162,514,264,337,593,543,950,335. Decimāldaļu atdalītāju var novietot jebkurā vietā šajos skaitļos, nodrošinot līdz pat 28 ciparu precizitāti, un tas joprojām ir precīzi attēlots. Piemēram, 79,228,162,514,264.337593543950335 var precīzi attēlot, tāpat kā 7.9228162514264337593543950335.

Peldošā komata numuri

Datu tips Float , kas pazīstams arī kā skaitlis vai valūta, izmanto IEEE 754 dubultās precizitātes peldošā komata standartu. Šāds standarts darbam sniedz ļoti lielu skaitļu diapazonu, no –1,79769 x 10308 līdz 1,79769 x 10308. Vismazākā parādāmā vērtība ir 5 x 10–324.

Pludiņš var precīzi attēlot veselus skaitļus (vai veselus skaitļus) starp –9,007,199,254,740,991 (–(253 – 1)) un 9,007,199,254,740,991 (253 – 1), ieskaitot. Šis diapazons pārsniedz 32 bitu (jeb 4 baitu) veselu skaitļu datu tipus, kurus datu bāzes izmanto parasti. Taču pamatnes programmas nespēj parādīt 64 bitu (jeb 8 baitu) veselu skaitļu datu tipus. Iespējams, vēlēsities saglabāt skaitli teksta laukā vai izmantot aprēķināto kolonnu, lai teksta laukā izveidotu skaitļa kopiju tā, lai tas tiktu kartēts teksta datu tipa audekla programmā. Šādā veidā varat noturēt, parādīt un ievadīt šīs vērtības un salīdzināt tās, lai noteiktu, vai tās ir vienlīdzīgas; taču šajā formā nevar veikt skaitliskus aprēķinus.

Peldošā komata aritmētika ir aptuvena, tādēļ reizēm tā var sniegt negaidītus rezultātus ar daudziem dokumentētiem piemēriem. Jūs varētu gaidīt, ka formula 55 / 100 * 100 kā rezultātu atgriež precīzi 55, un ka formula (55 / 100 * 100) - 55 atgriež precīzi nulli. Taču pēdējā formula kā rezultātu atgriež 7,1054 x 10–15,kas ir ļoti maz, bet nav nulle. Šī niecīgā starpība parasti neizraisa problēmas, un programma to noapaļo, kad tiek rādīts rezultāts. Taču mazas atšķirības secīgos aprēķinos var uzkrāties un izskatīties kā nepareizi sniegta atbilde.

Datu bāzu sistēmās valūtas bieži vien tiek glabātas un aprēķini tiek veikti, izmantojot decimālo matemātiku, kas nodrošina mazāku diapazonu, bet lielāku kontroli pār precizitāti. Pēc noklusējuma pamatnes programmas valūtas kartē uz un no vērtībām ar peldošo komatu; tādēļ rezultāts varētu atšķirties no aprēķiniem, kas tiek veikti, izmantojot natīvo decimālo datu tipu. Atkarībā no programmas precizitātes vajadzībām, iespējams, vēlēsities strādāt ar šīm vērtībām kā tekstu, kā iepriekš aprakstīts lieliem veseliem skaitļiem.

Noklusējumi un reklāmguvumi

Piezīmes

Power Apps šodien atbalsta tikai Float , un tas ir visu skaitļu tips. Drīzumā tiks pievienots decimālais atbalsts.

Lielākā daļa Power Fx saimnieku pēc noklusējuma izmanto decimālo skaitli. Šis noklusējums nozīmē:

  • Burtu skaitļi formulās. Skaitlis 1.234 tiek interpretēts kā decimālā vērtība. Piemēram, formula 1.234 * 2 interpretē 1.234 un 2Decimāldaļu un atgriež decimālo rezultātu.
  • Vērtības funkcija. Value( "1.234" ) atgriež decimālo vērtību. Piemēram, formulā Value( "1.234" ) * 2 funkcija Value interpretē teksta virknes "1.234" saturu kā decimāldaļu.

Lai strādātu ar Float vērtībām, tiek izmantota funkcija Float . Paplašinot mūsu piemēru, Float( 1.234 ) decimāldaļa tiek pārvērsta1.234 par pludiņu. Float var izmantot arī kā vērtības aizstājēju , lai pārvērstu virkni, kurā ir peldošā komata skaitlis, piemēram Float( "1.234" ) , par float vērtību, kas ir nepieciešama, ja skaitli nevar attēlot kā decimāldaļu.

Kopsavilkumā:

Lietojums Decimāldaļas Peldēt
Burtu skaitļi formulās 1.234 Float( 1.234 )
Float( "1.234" )
Pārvēršana no teksta virknes Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Konvertēšana starp ciparu tipiem Decimal( float ) Float( decimal )
Pārvēršana par teksta virkni Text( decimal ) Text( float )

Ciparu veidu sajaukšana

Float un Decimāldaļas vērtības var brīvi sajaukt. Sajaucot,Decimāldaļas vērtības tiek pārvērstas par Float vērtībām, pateicoties lielākam diapazonam. Tā kā šī konvertēšana var izraisīt precizitātes zudumu, ir svarīgi nejaukt abus lieki. Tā kā decimālais ir noklusējuma burtu datu tips un lielākā daļa skaitlisko funkciju saglabā šo tipu, ir salīdzinoši viegli izvairīties no pārvietošanās uz Float , to nevēloties.

Piemēram, apsveriet šādu aprēķinu, izmantojot pac power-fx repl pēc CLI Power Platform instalēšanas. Tā kā abi skaitļi ir decimāldaļas, aprēķins tiek veikts decimāldaļās , un rezultāts saglabā pilnīgu precizitāti:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Ja tā vietā otrais operands tiktu nomainīts uz Float , tad viss aprēķins tiktu veikts Float, un mazā frakcionētā daļa tiktu zaudēta:

>> 1.0000000000000000000000000001 * Float(2)
2

Datums, Laiks un DateTime

Laika joslas

Datuma/laika vērtības ietilpst tālāk norādītajās kategorijās.

  • Lokālais lietotājs: šīs vērtības tiek glabātas pēc universālā koordinētā laika (UTC), taču lietotnes lietotāja laika josla ietekmē to, kā lietotne parāda šīs vērtības un kā lietotnes lietotājs tās norāda. Piemēram, tas pats brīdis lietotājam Kanādā tiek rādīts citādi nekā lietotājam Japānā.
  • Neatkarīgs no laika joslas: lietotne parāda šīs vērtības vienādi, un lietotnes lietotājs tās norāda vienādi, neatkarīgi no laika joslas. Tas pats brīdis lietotājam Kanādā tiek rādīts tāpat kā lietotājam Japānā. Programmu autori, kuri neplāno, ka viņu programmas tiks darbinātas dažādās laika joslās, šīs vērtības izmanto, jo vispār tas ir vienkāršāk.

Nākamajā tabulā ir parādīti daži piemēri.

Datuma/laika tips Datu bāzē glabātā vērtība Rādītā un ievadītā vērtība 7 stundas uz rietumiem no UTC Rādītā un ievadītā vērtība 4 stundas uz austrumiem no UTC
Lietotājs vietējais Svētdiena,19.maijs,2019
4:00
Sestdiena,18.maijs,2019
21:00
Svētdiena,19.maijs,2019
8:00
Neatkarīgs no laika joslas Svētdiena,19.maijs,2019
4:00
Svētdiena,19.maijs,2019
4:00
Svētdiena,19.maijs,2019
4:00

Datumiem/laikiem Lietotāja vietējais pamatnes programmas izmanto pārlūkprogrammas vai ierīces laika joslu, bet modeļa vadītas programmas izmanto lietotāja iestatījumu pakalpojumā Dataverse. Šie iestatījumi parasti sakrīt, bet rezultāti atšķiras, ja šie iestatījumi atšķiras.

Izmantojiet funkcijas DateAdd un TimeZoneInformation, lai vietējo laiku pārveidotu par UTC un atpakaļ. Šo funkciju piemērus skatiet dokumentācijas beigās.

Skaitliskie ekvivalenti

Neatkarīgi no tā, vai tiek izmantots iestatījums Lietotāja vietējais, vai Neatkarīgs no laika joslas, visas dienas/laika vērtības pamatnes programmas patur un aprēķina kā UTC. Šo vērtību rādīšanas laikā un laikā, kad programmas lietotājs tās norāda, programma šīs vērtības tulko, pamatojoties uz programmas lietotāja laika joslu.

Kad pamatnes programma no datu avota nolasa vai datu avotā ieraksta kādu vērtību Neatkarīgs no laika joslas, programma šo vērtību automātiski noregulē, lai kompensētu atbilstoši programmas lietotāja laika joslai. Pēc tam programma šo vērtību apstrādā kā UTC vērtību, atbilstoši visām pārējām programmā esošajām datuma/laika vērtībām. Šīs kompensācijas dēļ sākotnējā vērtība Neatkarīgs no laika joslas kļūst redzama, kad programma šo UTC vērtību regulē programmas lietotāja laika joslai.

Šo uzvedību labāk varat novērot, izmantojot funkciju Value, lai piekļūtu datuma/laika vērtības pamatā izmantotajai skaitliskajai vērtībai. Šī funkcija datuma/laika vērtību atgriež kā skaitu, cik milisekunžu ir pagājis kopš 1970. gada 1. janvāra, plkst. 00:00:00.000 UTC.

Tā kā ikviena datuma/laika vērtība tiek glabāta kā UTC, vairumā pasaules vietu formula Value( Date( 1970, 1, 1 ) ) neagriež nulli, jo funkcija Date datumu atgriež kā UTC. Piemēram, formula atgrieztu 28 800 000 tādā laika joslā, kurai no UTC ir nobīde par astoņām stundām. Šis skaitlis atspoguļo milisekunžu skaitu astoņās stundās.

Atgriežoties pie mūsu piemēra:

Datuma/laika tips Datu bāzē glabātā vērtība Rādītā un ievadītā vērtība 7 stundas uz rietumiem no UTC Vērtības funkcija atgriež
Lietotājs vietējais Svētdiena,19.maijs,2019
4:00
Sestdiena,18.maijs,2019
21:00
1,558,238,400,000
(Svētdiena,19.maijs,2019
4:00 UTC)
Neatkarīgs no laika joslas Svētdiena,19.maijs,2019
4:00
Svētdiena,19.maijs,2019
4:00
1,558,263,600,000
(Svētdiena,19.maijs,2019
11:00 UTC)

Unix laiku konvertēšana

Unix laiki rāda, cik sekunžu ir pagājis kopš 1970. gada 1. janvāra, plkst. 00:00:00 UTC. Tā kā pamatnes programmas izmanto milisekundes, nevis sekundes, varat konvertēt starp abām vērtībām, reizinot vai dalot ar 1000.

Piemēram, 2001. gada 9. septembri, plkst. 01:46:40 UTC Unix laiks rāda kā 1 000 000 000. Lai šo datuma/laika vertību parādītu pamatnes programmā, reiziniet šo skaitli ar 1000, lai konvertētu uz milisekundēm, un pēc tam izmantojiet to funkcijā Text. Formula Text( 1000000000 * 1000, DateTimeFormat.UTC ) atgriež virkni 2001-09-09T01:46:40.000Z.

Taču šī funkcija atgriež Sestdiena, 2001. gada 8. septembris, plkst. 18:46:40, ja izmantojat formātu DateTimeFormat.LongDateTime24 laika joslā, kam ir -7 stundu nobīde no UTC (7 stundas uz rietumiem no UTC). Šis rezultāts vērtību DateTime rāda pareizi, ņemot vērā vietējo laika joslu.

Lai konvertētu uz Unix laiku, rezultāts no funkcijas Value ir jādala ar 1000:
RoundDown( Vērtība(UnixTime ) / 1000, 0 )

Ja Unix laiks vērtībā Date jums ir vajadzīgs turpmākiem aprēķiniem vai parādīšanai pakalpojumā Power Apps, izmantojiet šādu formulu:
DateAdd( Datums( 1970,1,1 ), UnixTime, Sekundes )

SQL Server

SQL Server izmanto Datetime, Datetime2 un citus datuma/laika datu tipus, kas neietver laika joslas nobīdi un nenorāda, kurā laika joslā jūs atrodaties. Pamatnes programmas pieņem, ka šīs vērtības tiek glabātas kā UTC, un apstrādā tās kā Lietotāja vietējais. Ja vērtībām ir paredzēts būt neatkarīgām no laika joslas, koriģējiet UTC tulkojumus, izmantojot funkciju TimeZoneOffset.

Konvertējot vērtību uz programmas iekšējo UTC attēlojumu, pamatnes programmas izmanto kolonnās Datetimeoffset iekļauto laika joslas informāciju. Rakstot datus, kā laika joslu programmas vienmēr izmanto UTC (laika joslas nobīde ir nulle).

Vērtības ar datu tipu Laiks pamatnes programmas nolasa no SQL Server un raksta SQL Server kā teksta virknes ISO 8601 ilguma formātā. Piemēram, jums ir nepieciešams parsēt šo virknes formātu un izmantot funkciju Time, lai teksta virkni "PT2H1M39S" konvertētu uz vērtību Laiks:

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)

Datuma un laika informācijas sajaukšana

Date, Time un DateTime ir dažādi nosaukumi, taču tajos visos ir viena un tā pati informācija par datumiem un laikiem.

Vērtībā Datums var būt laika informācija, kas parasti ir pusnakts. Vērtībā Laiks var būt datuma informācija, kas parasti ir 1970. gada 1. janvāris. Pakalpojumā Dataverse laika informācija tiek glabāta ar kolonnu Tikai datums, bet pēc noklusējuma tiek rādīta tikai datuma informācija. Līdzīgi arī pamatnes programmas šos datu tipus reizēm nošķir, lai noteiktu noklusējuma formātus un vadīklas.

Nav ieteicams datuma un laika vērtības pievienot un atņemt tiešā veidā, jo laika joslas un cita konvertēšana var dot maldinošus rezultātus. Vai nu izmantojiet funkciju Value, lai vispirms konvertētu datuma/laika vērtības uz milisekundēm un ņemtu vērā programmas lietotāja laika joslu, vai izmantojiet funkcijas DateAdd un DateDiff, lai vienu no šīm vērtībām pievienotu vai atņemtu.

Izvēles iespējas un Jā/Nē

Izvēles un divu opciju datu tipi sniedz programmas lietotājam divas vai vairākas izvēles iespējas. Piemēram, izvēle Pasūtījuma statuss var piedāvāt izvēli Jauns, Nosūtīts, Izrakstīts rēķins un Slēgts. Divu opciju datu tips sniedz tikai divas izvēles iespējas.

Abu šo datu tipu etiķetes tiek rādītas kā teksts. Piemēram, etiķetes vadīkla parāda vienu no pasūtījuma statusa opcijām, ja vadīklas rekvizīts Teksts ir iestatīts kā formula, kurā ir atsauce uz šo izvēli. Opciju etiķetes var lokalizēt lietotnes lietotājiem dažādās atrašanās vietās.

Kad programmas lietotājs atlasa opciju un saglabā izmaiņas, programma nosūta datus uz datu bāzi, kas tos glabā neatkarīgi no valodas. Izvēles opcija tiek nosūtīta un saglabāta kā skaitlis, un opcija divu opciju datu tipā tiek nosūtīta un saglabāta kā Būla vērtība.

Etiķetes ir paredzētas tikai attēlošanai. Iezīmes nevar salīdzināt tieši, jo tās ir specifiskas valodai. Tā vietā katrai izvēlei ir uzskaitījums, kas darbojas ar pamatā esošo skaitli vai būla vērtību. Piemēram, nevar izmantot šādu formulu:

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

Taču var izmantot šādu formulu:

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

Globālajām izvēlēm (kurām tabulām tiek koplietots) opciju kopas nosaukums atbilst globālās izvēles nosaukumam. Lokālajām izvēlēm (kas ir tvērums līdz tabulai) nosaukumā var būt iekļauts tabulas nosaukums. Šāda darbība ļauj izvairīties no konfliktiem, ja vairākām tabulām ir izvēles iespējas ar vienu un to pašu nosaukumu. Piemēram, Uzņēmumu tabulai var būt izvēle OrderStatus, un tā nosaukums var būt OrderStatus (Uzņēmumi). Šim nosaukumam ir atstarpes un iekavas, tāpēc, ja atsaucaties uz to formulā, tas ir jāieskauj ar vienpēdiņām.

Divu opciju vērtības darbojas arī kā Būla vērtības. Piemēram, divu opciju vērtībai ar nosaukumu TaxStatus var būt etiķetes Apliekams ar nodokli un Neapliekams, kas atbilst patiesam un nepatiesam. Lai to parādītu, izmantojiet šo formulu:

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

Varat arī izmantot šo formulu:

If( ThisItem.Taxable, ...