Datu tipi
Informācija plūst cauri Power Fx mazām, diskrētām vērtībām, ļoti līdzīgi izklājlapas šūnām. Piemēram, kolonnā Dzimšanas diena un laukā Gadadiena esošie dati plūstu kā vērtība Datums, kas norāda gadu, mēnesi un dienu. Power Fx zina, kā formatēt šīs vērtības, ierobežot ievadi atbilstoši katrai un koplietot vērtības ar datu bāzi. Cilvēkiem dzimšanas dienas no gadadienām atšķiras, bet sistēma tās apstrādā pilnīgi vienādā veidā. Šajā gadījumā Datums ir datu tipa piemērs.
Šajā rakstā ir sniegta detalizēta informācija par datu tipiem, kas Power Fx tiek atbalstīti. Kad Power Fx tiek izveidots savienojums ar ārēju datu avotu, katrs datu tips šajā avotā tiek kartēts uz datu tipu Power Fx.
Datu tips | Apraksts | Piemēri |
---|---|---|
Būla | Vērtība true (patiess) vai false (aplams). Šī tipa datus var tieši izmantot funkcijās If (Ja), Filter (Filtrēt) 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. Šo datu tipu atbalsta funkcija Tips , ja pēc nosaukuma tiek izmantota lauka Choice instance . | ThisItem.OrderStatus |
Krāsa | Krāsu specifikācija, tostarp alfa kanāls. |
Krāsa.Sarkans ColorValue( "#102030" ) RGBA( 255, 128, 0, 0,5 ) |
Valūta | Valūtas vērtība, kas tiek glabāta kā skaitlis ar peldošo komatu. 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 Tips neatbalstadatu tipu Valūta . |
123 4.56 |
Datums | Datums bez laika, programmas lietotāja laika joslā. | Datums( 2019, 5, 16 ) |
DateTime | Datums ar laiku, programmas lietotāja laika joslā. | DateTimeValue( "16. maijs, 2019 1:23:09 PM" ) |
Decimāldaļas | Skaitlis ar augstu precizitāti, bāzes 10 operācijām un ierobežotu diapazonu. |
123 Decimāldaļas( "1.2345" ) |
Peldēt | Skaitlis ar standarta precizitāti, bāzes 2 operācijām un plašu diapazonu. |
123 8.903e121 1.234E-200 |
GUID | Vispārēji unikāls identifikators. |
GUID() GUID( "123e4567-e89b-12d3-a456-426655440000" ) |
Hipersaite | Teksta virkne, kurā ir hipersaite. | "https://powerapps.microsoft.com" |
Attēlu | Universālais resursu identifikators jeb Universal Resource Identifier (URI), teksta virkne uz attēlu .jpeg, .png, .svg, .gif vai citā parastajā tīmekļa attēla formātā. Funkcija Tips neatbalstadatu tipu Attēls . |
MyImage pievienots kā programmas resurss "https://northwindtraders.com/logo.jpg" "appres://blobmanager/7b12ffa2..." |
Media | URI teksta virkne uz video vai audio rindu. Funkcija Tips neatbalstadatu tipu Multivide . |
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 konkrētajā situācijā var izmantot kādu no numuru šķirnēm, izmantojiet numuru , lai nodrošinātu maksimālu saderību. |
123 0.0123 1.e4 |
Rekords | Datu vērtību rinda. Šis saliktais datu tips ietver citu šajā tēmā uzskaitīto datu tipu instances. Papildinformācija: Darbs ar tabulām. Šo datu tipu atbalsta funkcija Tips , ja tiek izmantota ieraksta instance . |
{ Uzņēmums: "Northwind Traders", Personāls: 35, Bezpeļņas: nepatiess } |
Atsauce reģistrā | Atsauce uz ierakstu tabulā. Šādas atsauces bieži tiek izmantotas ar polimorfu uzmeklēšanu. Papildinformācija: Darbs ar atsaucēm. Funkcija Type neatbalsta šo datu tipu. | Pirmais(konti). Īpašnieks |
Galds | Rindu tabula. Visās rindās kolonnām ar vienādiem datu tipiem ir nepieciešami vienādi nosaukumi, un izlaistās kolonnas tiek apstrādātas kā tukšas kolonnas. Šis saliktais datu tips ietver citu šajā tēmā uzskaitīto datu tipu instances. Papildinformācija: Darbs ar tabulām. Šo datu tipu atbalsta funkcija Tips , ja tiek izmantota tabulas instance . |
Tabula( { Vārds: "Sidnijs", Uzvārds: "Higa" }, { Vārds: "Nancy", Uzvārds: "Anderson" } ) |
Teksts | Unikoda teksta virkne. | "Sveika, pasaule" |
Laiks | Laiks bez datuma, programmas lietotāja laika joslā. | Laiks( 11, 23, 45 ) |
Nerakstīts | Nedeklarēta tipa objekts. Pamatā esošais objekts var būt jebkurš esošs tips, un to var pārveidot par saderīgiem tipiem, izmantojot tādas funkcijas kā Būla (), Vērtība(), Tabula() utt. Papildinformāciju skatiet sadaļā Neierakstīts objekts un Darbs ar JSON. | ParseJSON("{ ""Lauks"" : 1234 }"). Lauks |
Anulēt | Izmanto tikai uzvedības lietotāja definētas funkcijas, tas norāda, ka funkcijai nav atgriešanas tipa. Funkcija Type neatbalsta šo datu tipu. Pat ja funkcijai nav atgrieztās vērtības 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 Tips atbalsta šo datu tipu, ja pēc nosaukuma tiek izmantota lauka Yes/No instance . | ThisItem.Taxable |
Daudzi no šiem datu tipiem ir līdzīgi un tiem ir vienāds pamata attēlojums, piemēram, kolonna Hipersaite tiek apstrādāta kā Teksts. Papildu datu tipi nodrošina labākas noklusējuma lietošanas iespējas veidlapās un citās vadīklās.
Tukšs
Visiem datu tipiem var būt tukša vērtība (citiem vārdiem sakot, 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, funkcija Set( x, Blank() ) noņem visas vērtības, kas ir globālajā mainīgajā x.
Testējiet, vai kāda vērtība ir tukša, 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šas vērtības, datu tipiem Būla vērtība un Divu opciju faktiski ir trīs iespējamās vērtības.
Teksts, hipersaite, attēls un multivide
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!""" )
pēc pogas nospiešanas tiek iegūts reklāmkarogs, kur ir izlaistas pirmās un pēdējās dubultās pēdiņas (jo tās norobežo teksta virkni) un atkārtotās dubultās pēdiņas ap Sveiki, Pasaule! tiek aizstātas ar vienu dubulto pēdiņas zīmi:
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, lai formulas rezultātu varētu pievienot 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:
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:
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:
Lai šo resursu izmantotu programmā, norādiet to vadīklas Attēls rekvizītā 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:
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:
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 atbalsta tikai Float šodien, un tas ir visu skaitļu veids. 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 novērsīs noapaļošanas kļūdas 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ātikas pamatā ir 2. bāze, tāpēc tā nevar precīzi attēlot dažas kopīgas decimāldaļas vērtības. Pludiņam ir arī augstāka veiktspēja, un tas ir labvēlīgs, 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 , formulu kolonnas, kas tiek palaistas SQL Serer, izmanto SQL Server decimālo datu tipu.
Decimāldaļa veic matemātiku tā, kā jūs mācījāties skolā, izmantojot bāzes 10 ciparus, kas ir svarīgi, lai izvairītos no noapaļošanas 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ā ar tekstu, tāpat kā iepriekš aprakstīts lieliem veseliem skaitļiem.
Noklusējumi un reklāmguvumi
Piezīmes
Power Apps atbalsta tikai Float šodien, un tas ir visu skaitļu veids. 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, formula1.234 * 2
interpretē1.234
un2
kā Decimā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ā šīs pārveidošanas rezultātā var tikt zaudēta precizitāte, ir svarīgi tos nejaukt nevajadzīgi. Tā kā decimāls ir noklusējuma burtiskais datu tips un lielākā daļa skaitlisko funkciju saglabā tipu, ir salīdzinoši viegli izvairīties no pārejas 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 saskan, bet rezultāti atšķirsies, ja šie iestatījumi ir atšķirīgi.
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ēļu un divu opciju datu tipi programmas lietotājam nodrošina divas vai vairākas atlases 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 piedāvā tikai divas izvēles iespējas.
Abos šajos datu tipos to etiķetes tiek rādītas teksta virknes kontekstā. 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. Programmas lietotājiem dažādās atrašanās vietās opciju etiķetes varētu būt lokalizētas.
Kad programmas lietotājs atlasa kādu opciju un saglabā veiktās izmaiņas, programma šos datus nosūta uz datu bāzi, kur dati tiek saglabāti no valodas neatkarīgā attēlojumā. Opcija Izvēlé tiek pārsūtīta un saglabāta kā skaitlis, un opcija divu opciju datu tipam tiek pārsūtīta un saglabāta kā Būla vērtība.
Etiķetes ir paredzētas tikai rādīšanai. Ar etiķetēm nevar veikt tiešu salīdzināšanu, jo tās ir atkarīgas no valodas. 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 ietvertas tabulā) nosaukumā var būt iekļauts tabulas nosaukums. Šādā veidā var izvairīties no konfliktiem, ja vairākām tabulām ir izvēles iespējas ar vienādu nosaukumu. Piemēram, Uzņēmumu tabulai var būt izvēle OrderStatus, un tā nosaukums var būt OrderStatus (Uzņēmumi). Šajā nosaukumā ir viena vai vairākas atstarpes un iekavas, tādēļ, ja formulā uz to atsaucaties, šis nosaukums ir jāliek vienpēdiņās.
Turklāt divu opciju vērtības var uzvesties arī kā Būla vērtības. Piemēram, divu opciju vērtībai ar nosaukumu TaxStatus varētu būt etiķetes Apliekams ar nodokli un Neapliekams ar nodokli, kas attiecīgi atbilst vērtībām true (patiess) un false (aplams). Demonstrācijai varat izmantot šādu formulu:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Varat izmantot arī šo ekvivalento formulu:
If( ThisItem.Taxable, ...