Duomenų tipai
Informacija teka mažomis Power Fx , atskiromis reikšmėmis, labai panašiai kaip skaičiuoklės langeliai. Pavyzdžiui, duomenys Gimtadienio lauke ir Sukakties lauke turėtų būti pateikiami kaip Datos reikšmė, kurioje yra metai, mėnuo ir diena. Power Fx Žino, kaip formatuoti šias reikšmes, apriboti įvestį iki to, kas tinka kiekvienai, ir bendrinti reikšmes su duomenų baze. Gimtadieniai skiriasi nuo žmonių sukakčių, tačiau sistema juos tvarko vienodai. Šiuo atveju Data yra duomenų tipo pavyzdys.
Šiame straipsnyje pateikiama išsami informacija apie palaikomus duomenų tipus Power Fx . Kai Power Fx prisijungiama prie išorinio duomenų šaltinio, kiekvienas to šaltinio duomenų tipas susiejamas su duomenų tipu Power Fx.
Duomenų tipas | Aprašą | Pavyzdžiai |
---|---|---|
Bulio logikos | Teisinga arba klaidinga reikšmė. Galima tiesiogiai naudoti If, Filter ir kitas funkcijas be palyginimo. | Tiesa |
Pasirinkimas | Pasirinkimas iš parinkčių rinkinio, kurį palaiko skaičius. Šis duomenų tipas sujungia lokalizuojamo teksto žymą su skaitine reikšme. Žyma rodoma programoje, o skaitinė reikšmė saugoma ir naudojama palyginimams. Funkcija Type palaiko šį duomenų tipą, jei lauko Pasirinkimas egzempliorius naudojamas pagal pavadinimą. | ThisItem.OrderStatus |
Spalva | Spalvų specifikacija, įskaitant alfa kanalą. |
Spalva.Raudona ColorValue( "#102030" ) RGBA( 255, 128, 0, 0,5 ) |
Valiuta | Valiutos reikšmė – skaičius su slankiuoju kableliu. Valiutos reikšmės yra tokios pat kaip skaičių reikšmės su valiutos formatavimo parinktimis. Funkcija Type nepalaiko valiutos duomenų tipo. |
123 4.56 |
Data | Data be laiko programos vartotojo laiko juostoje. | Data( 2019, 5, 16 ) |
DateTime | Data su laiku programos vartotojo laiko juostoje. | DateTimeValue( "Gegužės 16 d., 2019 1:23:09 PM" ) |
Dešimtainis | Didelio tikslumo skaičius, 10 bazinių operacijų ir ribotas diapazonas. |
123 Dešimtainis( "1.2345" ) |
Plūduriuoti | Skaičius su standartiniu tikslumu, 2 bazinės operacijos ir platus diapazonas. |
123 8.903e121 1.234e-200 |
GUID | Globaliai unikalus identifikatorius. |
GUID() GUID( "123e4567-e89b-12d3-a456-426655440000" ) |
Hipersaitas | Teksto eilutė, kurioje yra hipersaitas. | "https://powerapps.microsoft.com" |
Vaizdas | Visuotinio išteklių identifikatoriaus (URI) teksto eilutė vaizdui .jpeg, .png, .svg, .gif arba kitu įprastu žiniatinklio vaizdo formatu. Vaizdo duomenų tipo nepalaiko funkcija Tipas. |
"MyImage " pridėtas kaip programos išteklius "https://northwindtraders.com/logo.jpg" "appres://blobmanager/7b12ffa2..." |
Laikmena | URI teksto eilutė vaizdo arba garso įrašymui. Medijos duomenų tipo nepalaiko funkcija Type. |
"MyVideo" įtrauktas kaip programos išteklius "https://northwindtraders.com/intro.mp4" "appres://blobmanager/3ba411c..." |
Numeris | Dešimtainis (dauguma pagrindinių kompiuterių) arba Float Power Fx (drobės programos) pseudonimas . Jei konkrečioje situacijoje galima naudoti kurią nors skaičių įvairovę, naudokite Skaičius , kad užtikrintumėte maksimalų suderinamumą. |
123 0.0123 1e4 |
Įrašas | Duomenų reikšmių įrašas. Šiame kombinuotų duomenų tipe yra kitų duomenų tipų, išvardytų šioje temoje, egzempliorių. Daugiau informacijos: Darbas su lentelėmis. Šį duomenų tipą palaiko funkcija Type , jei naudojamas įrašo egzempliorius . |
{ Įmonė: "Northwind Traders", Darbuotojai: 35, NonProfit: klaidinga } |
Įrašo nuoroda | Nuoroda į įrašą lentelėje. Tokios nuorodos dažnai naudojamos su polimorfinėmis peržvalgomis. Daugiau informacijos: Darbas su nuorodomis. Šio duomenų tipo nepalaiko funkcija Type . | Pirma(sąskaitos). Savininkas |
Stalas | Įrašų lentelė. Visuose įrašuose turi būti tokie patys laukų pavadinimai su tais pačiais duomenų tipais, o praleisti laukai yra tvarkomi kaip tušti. Šiame kombinuotų duomenų tipe yra kitų duomenų tipų, išvardytų šioje temoje, egzempliorių. Daugiau informacijos: Darbas su lentelėmis. Šį duomenų tipą palaiko funkcija Type , jei naudojamas lentelės egzempliorius . |
Lentelė( { Vardas: "Sidney", LastName: „Higa” }, { FirstName: „Nancy”, LastName: „Anderson” } ) |
SMS žinutė | Unikodo teksto eilutė. | "Sveikas, pasauli" |
Laikas | Laikas be datos programos vartotojo laiko juostoje. | Laikas( 11, 23, 45 ) |
Neįvestas | Nedeklaruoto tipo objektas. Pagrindinis objektas gali būti bet kokio esamo tipo ir gali būti konvertuojamas į suderinamus tipus naudojant tokias funkcijas kaip Bulio logikos(), Reikšmė(), Lentelė()ir kt. Norėdami gauti daugiau informacijos, žr neapibrėžto tipo objektas ir Darbas su JSON. | ParseJSON("{ "Laukas": 1234 }"). Laukas |
Tuščia | Naudojama tik pagal vartotojo apibrėžtas funkcijas, tai rodo, kad funkcija neturi grąžinimo tipo. Šio duomenų tipo nepalaiko funkcija Type . Nors funkcija neturi grąžinimo tipo ar reikšmės, ji visada gali pateikti klaidą. | Sveiki(): Void = { Pranešti( "Labas!" ) } |
Taip/Ne | Pasirinkimas iš dviejų parinkčių rinkinio, kurį palaiko Bulio logikos reikšmė. Šis duomenų tipas sujungia lokalizuojamo teksto žymą su Bulio logikos reikšme. Žyma rodoma programoje, o Bulio logikos reikšmė saugoma ir naudojama palyginimams. Šį duomenų tipą palaiko funkcija Type , jei lauko Taip/ne egzempliorius naudojamas pagal pavadinimą. | ThisItem.Taxable |
Daugelis šių duomenų tipų yra panašūs ir turi tą patį pateikimą, pvz., Hipersaito lauką, laikomą Tekstu. Papildomi duomenų tipai suteikia geresnę numatytąją patirtį formose ir kituose valdikliuose.
Tuščia
Visų duomenų tipų reikšmė gali būti tuščia (kitaip sakant, jokių reikšmių). Tokiai sąvokai duomenų bazėse dažnai vartojamas terminas „neapibrėžta“.
Naudokite funkciją Blank su funkcija Set arba Patch, kad nustatytumėte kintamąjį arba lauką į tuščia. Pavyzdžiui, Set( x, Blank() ) pašalina bet kokią reikšmę visuotiniame kintamajame x.
Patikrinkite tuščia reikšmę naudodami IsBlank funkciją. Pakeiskite galimas tuščias reikšmes netuščiomis reikšmėmis naudodami funkciją Coalesce.
Visi duomenų tipai palaiko tuščia, todėl Bulio logikos ir Dviejų parinkčių duomenų tipai turi tris galimas reikšmes.
Tekstas, hipersaitas, vaizdas ir medija
Visi keturi šie duomenų tipai pagrįsti Unikodo teksto eilute.
Įdėtasis tekstas
Įdėtosios teksto eilutės formulėje pateikiamos dvigubose kabutėse. Kartu naudokite dvi dvigubas kabutes, kad nurodytumėte vieną viengubą kabutę teksto eilutėje. Pavyzdžiui, naudodami tokią formulę Mygtuko valdiklio OnSelect ypatybėje:
Notify( "Jane said ""Hello, World!""" )
rezultatai reklamos juostoje, nuspaudus mygtuką, kur pirmosios ir paskutinės dvigubos kabutės praleidžiamos (nes jos atriboja teksto eilutę) ir pasikartojančios dvigubos kabutės aplink Sveikas, pasauli! keičiamos viengubomis kabutėmis:
Viengubos kabutės naudojamos identifikatorių pavadinimams, kuriuose yra specialiųjų simbolių ir kurie teksto eilutėje neturi ypatingos reikšmės.
Eilučių tarpusavio sąveika
Norėdami į teksto eilutę įdėti formulės, naudokite eilučių tarpusavio sąveikas. Šis metodas dažnai yra lengviau dirbti su išvestimi ir ją vizualizuoti, nei naudojant funkciją Concatenate or & operator.
Pradėkite teksto eilutę su dolerio ženklu $ ir pridėkite formulę, kuri bus įtraukta riestiniuose skliaustuose { }. Norėdami į teksto eilutę įtraukti riestinius skliaustus, naudokite pasikartojančius riestinius skliaustus {{ arba }}. Eilučių tarpusavio sąveika gali būti naudojama bet kurioje standartinės teksto eilutės vietoje.
Pavyzdžiui, atsižvelkite į šią formulės reikšmę su visuotiniais kintamaisiais Obuoliai, nustatytais kaip 3, Bananai, nustatytais kaip 4:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Ši formulė pateikia teksto eilutę Turime 3 obuolius, 4 bananus, iš viso 7 vaisiai. Kintamieji Obuoliai ir Bananai įterpiami į tekstą, pakeisdami riestinius skliaustus, kartu su matematinės formulės rezultatu Obuoliai+Bananai. Tarpai ir kiti simboliai aplink riestinius skliaustus išsaugomi tokie, kokie yra.
Įdėtosiose formulėse gali būti funkcijų arba operatorių. Tereikia, kad formulės rezultatą būtų galima priverstinai paversti teksto eilute. Pavyzdžiui, ši formulė įterpia NickName , jei jis pateiktas, arba Vardas , jei ne, pasisveikinime:
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"
Jei NickName reikšmė nustatyta į „Joe”, ši formulė pateikia teksto eilutę Sveiki, Joe, malonu jus matyti! Bet jei NickName yra tuščias, o FirstName yra „Joseph”, tada formulė pateiks tokią teksto eilutę: Joseph, malonu jus matyti!
Į įterptąją formulę galima įtraukti standartines teksto eilutes. Pavyzdžiui, jei nei NickName, nei FirstName nebuvo pateikti, vis tiek galėjome pateikti žodį „Draugas” kaip pakaitą:
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Eilučių tarpusavio sąveikas galima net įterpti. Apsvarstykite šį pavyzdį, kai Pirmas ir Vidurinis vardai bei Pavardė sujungiami į pasveikinimą. Net jei viena ar dvi iš šių reikšmių yra tuščios, tarp pavadinimo dalių išlaikomas teisingas tarpų skaičius. Jei nepateikiama nė viena iš dalių, vidinė eilučių tarpusavio sąveika bus suvesta į tuščią eilutę ir pakeista eilute Suliejimo funkcija „Draugas”.
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Pirmas | Viduryje | Paskutinis | Rezultatas |
---|---|---|---|
John | Kvadratūra | Doe | Welcome John Quincy Doe! |
John | Tuščią | Doe | Welcome John Doe! |
Tuščią | Tuščią | Doe | Welcome Doe! |
Tuščią | Tuščią | Tuščią | Welcome Friend! |
Naujos eilutės
Įdėtosiose teksto eilutėse gali būti naujų eilučių. Pavyzdžiui, nustatykite savybę TekstasŽymos valdikliui:
"Line 1
Line 2
Line 3"
Pagal šią formulę etikečių valdiklyje rodomos trys eilutės:
Naujos eilutės taip pat palaikomos naudojant eilučių interpoliaciją:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Dėl to gaunama ta pati išvestis:
Vaizdų ir medijos ištekliai
Meniu Failas galite įtraukti vaizdo, vaizdo įrašų ir garso įrašų failų kaip programos išteklių. Importuoto failo pavadinimas programoje tampa išteklių pavadinimu. Šiame grafike prie programos buvo pridėtas "Northwind Traders" logotipas, pavadintas "nwindlogo":
Norėdami naudoti šį išteklių programoje, nurodykite jį Vaizdo valdiklio Vaizdo ypatybėje:
Vaizdų ir kitos medijos URI
Galite išsamiau panagrinėti paskutinį pavyzdį nustatydami Žymos valdiklio Teksto ypatybę į nwindlogo. Žymoje rodoma teksto eilutė:
Drobės programos nurodo kiekvieną vaizdą ar kitą medijos failą neatsižvelgiant į tai, ar jis yra debesyje, ar įtraukiamas kaip programos išteklius naudojant URI teksto eilutę.
Pavyzdžiui, Vaizdo ypatybė priima ne tik programos išteklius, bet ir žiniatinklio vaizdų saitus, pvz., „https://northwindtraders.com/logo.jpg"“. Ypatybė taip pat priima įdėtuosius vaizdus, kuriuose naudojama duomenų URI schema, kaip šiame pavyzdyje:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
Tame URI rodoma padidinta dviejų violetinių deimantų versija:
Galite parodyti naujausią vaizdą, užfiksuotą Fotoaparato valdiklyje, jei vaizdo valdiklio Vaizdo ypatybę nustatote į fotoaparato valdiklio Nuotraukos ypatybę. Programa laiko vaizdą atmintyje, o fotoaparato valdiklio Nuotraukos ypatybė pateikia vaizdo URI nuorodą. Pavyzdžiui, galite fotografuoti, o fotoaparato Nuotraukos ypatybė gali grąžinti „appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1“.
Galite naudoti URI norėdami nurodyti vaizdą arba kitą medijos failą, saugomą duomenų bazėje. Tokiu būdu programa nenuskaitys faktinių duomenų iki tol, kol jų prireiks. Pavyzdžiui, lentelės priedas gali pateikti „Microsoft Dataverse“ lentelė gali grįžti "appres://datasources/Contacts/table/..." kaip vaizdo kameros pavyzdyje, šį vaizdą galite matyti nustatę vaizdo valdiklio ypatybę Vaizdas su šia nuoroda, kuria nuskaitomi dvejetainiai duomenys.
Įrašius medijos duomenų tipą, pvz., vaizdą, į duomenų bazę, programa siunčia realius vaizdo arba medijos duomenis, o ne URI nuorodą.
Dydžio apribojimai
Kaip teksto eilutės ir URI, šie duomenų tipai neturi nustatyto ilgio apribojimo.
Dvejetainiai duomenys, kuriuos nurodo šie duomenų tipai, taip pat neturi nustatyto dydžio apribojimo. Pavyzdžiui, vaizdas, užfiksuotas per fotoaparato valdiklį, kuris nurodomas kaip "appres://...", gali būti toks pat didelis ir didelės skiriamosios gebos, kaip ir įrenginio kamera. Skiriamoji geba, kadrų dažnis ir kiti medijos failų atributai nėra ribojami pagal duomenų tipą, tačiau savų apribojimų gali turėti specialūs medijos leidimo ir fiksavimo valdikliai.
Tačiau visi duomenų dydžiai priklauso nuo programoje esančios atminties kiekio. Stalinių kompiuterių naršyklės paprastai palaiko daugiau nei 100 megabaitų duomenų. Tačiau įrenginio, pvz., telefono, atminties kiekis gali būti gerokai mažesnis, paprastai 30–70 megabaitų. Jei norite nustatyti, ar programa veikia neperžengdama šių apribojimų, išbandykite įprastus scenarijus visuose įrenginiuose, kuriuose ji turėtų būti rodoma.
Geriausia laikyti duomenis atmintyje tik tol, kol reikia. Kuo greičiau nusiųskite vaizdus į duomenų bazę; atsisiųskite vaizdus tik tada, kai programos vartotojas jų prašo.
Numeriai
Pastaba.
Power Apps šiandien palaiko tik "Float" ir tai yra visų skaičių tipas. Dešimtainis palaikymas netrukus bus pridėtas.
Power Fx palaiko dviejų tipų skaičius:Dešimtainis ir Float(su sinonimais Skaičius ir Valiuta ).
Dešimtainis skaičius geriausiai tinka daugumai verslo skaičiavimų. Jis gali tiksliai pavaizduoti skaičius 10 bazėje, tai reiškia, kad 0.1
juos galima tiksliai pavaizduoti ir išvengti apvalinimas klaidų skaičiavimų metu. Jis turi pakankamai didelį asortimentą bet kokiems verslo poreikiams, iki 1028 su iki 28 skaitmenų tikslumu.
Dešimtainis yra numatytasis daugelio Power Fx kompiuterių skaitinių duomenų tipas, naudojamas, jei tiesiog rašoma 2*2
.
Plūdė geriausiai tinka moksliniams skaičiavimams. Jis gali reikšti skaičius didesniame diapazone, iki 10308. Tikslumas ribojamas iki 15 skaitmenų po kablelio, o matematika pagrįsta 2 pagrindu, todėl ji negali tiksliai atspindėti kai kurių įprastų dešimtainių reikšmių. Plūdė taip pat pasižymi didesniu našumu ir yra palanki, jei tai yra veiksnys, o tikslumas nėra labai svarbus.
Dešimtainiai skaičiai
Dešimtainių duomenų tipas dažniausiai naudoja .NET dešimtainių duomenų tipą. Kai kurie pagrindiniai kompiuteriai, pvz Dataverse ., formulės stulpeliai, vykdomi naudojant SQL Serer, naudoja duomenų tipą SQL Server po kablelio.
Dešimtainis daro matematiką taip, kaip mokėtės mokykloje, naudodamas 10 bazinių skaitmenų, svarbu, kad būtų išvengta apvalinimas klaidų dėl labai mažų skirtumų, kurie gali kauptis naudojant 2 bazės matematiką (kaip naudoja "Float").
Diapazonas yra nuo teigiamo 79,228,162,514,264,337,593,543,950,335 iki neigiamo 79,228,162,514,264,337,593,543,950,335. Dešimtainis skyriklis gali būti dedamas bet kurioje šių skaičių vietoje, užtikrinant iki 28 skaitmenų tikslumą, ir vis tiek gali būti tiksliai pavaizduotas. Pavyzdžiui, 79,228,162,514,264.337593543950335 gali būti tiksliai pavaizduotas, kaip ir 7.9228162514264337593543950335.
Slankiojo kablelio skaičiai
Duomenų tipas Float , taip pat žinomas kaip skaičius arba valiuta, naudoja IEEE 754 dvigubo tikslumo slankiojo kablelio standartą. Šiame standarte pateikiama labai daug skaičių, kuriuos galima naudoti: nuo –1,79769 x 10308 iki 1,79769 x 10308. Mažiausia reikšmė, kuri gali būti pateikiama, yra 5 x 10–324.
Plūdė gali tiksliai pavaizduoti sveikus skaičius (arba sveikus skaičius) tarp –9,007,199,254,740,991 (–(253 – 1)) ir 9,007,199,254,740,991 (253 – 1), imtinai. Šis diapazonas yra didesnis nei 32 bitų (arba 4 baitų) sveikųjų skaičių duomenų tipai, kuriuos paprastai naudoja duomenų bazės. Tačiau drobės programos negali pateikti 64 bitų (arba 8 baitų) sveikųjų skaičių duomenų tipų. Galbūt norėsite išsaugoti numerį teksto lauke arba naudoti apskaičiuojamąjį stulpelį, kad sukurtumėte numerio kopiją teksto lauke, kad jis būtų susietas su teksto duomenimis, įveskite drobės programą. Tokiu būdu galite sulaikyti, rodyti ir įvesti šias reikšmes bei jas palyginti, kad nustatytumėte, ar jos lygios; tačiau šioje formoje negalite atlikti jų skaitinių skaičiavimų.
Slankiojo kablelio aritmetika yra apytikrė, todėl kartais galimi netikėti rezultatai su daugeliu dokumentuotų pavyzdžių. Galite tikėtis, kad formulė 55 / 100 * 100 pateiks 55, o (55 / 100 * 100) - 55 pateiks nulį. Tačiau pastaroji formulė pateikia 7,1054 x 10–15 – tai yra labai mažai, bet ne nulis. Šis nedidelis skirtumas paprastai nesukelia problemų ir programa jį suapvalina rodydama rezultatą. Tačiau nedidelių skirtumų gali susidaryti vėlesniuose skaičiavimuose ir bus pateiktas klaidingas atsakymas.
Duomenų bazių sistemos dažnai saugo valiutas ir atlieka skaičiavimus naudodamos dešimtainę matematinę raišką, kuri siūlo mažesnį diapazoną, tačiau didesnį tikslumą. Pagal numatytuosius nustatymus drobės programos susieja valiutas su slankiojo kablelio reikšmėmis arba nesusieja; todėl rezultatas gali skirtis nuo skaičiavimų, atliktų naudojant paprastą dešimtainių duomenų tipą. Atsižvelgiant į programos tikslumo poreikius, galbūt norėsite dirbti su šiomis reikšmėmis kaip su tekstu, kaip anksčiau aprašyta su dideliais sveikaisiais skaičiais.
Numatytieji nustatymai ir konversijos
Pastaba.
Power Apps šiandien palaiko tik "Float" ir tai yra visų skaičių tipas. Dešimtainis palaikymas netrukus bus pridėtas.
Dauguma Power Fx pagrindinių kompiuterių pagal numatytuosius nustatymus naudoja dešimtainį skaičių. Šis numatytasis nustatymas reiškia:
- Pažodiniai skaičiai formulėse. Skaičius
1.234
interpretuojamas kaip dešimtainė reikšmė. Pavyzdžiui, formulė1.234 * 2
interpretuoja1.234
ir2
kaip dešimtainį ir pateikia dešimtainį rezultatą. - Vertės funkcija.
Value( "1.234" )
grąžina dešimtainę reikšmę. Pavyzdžiui, formulėjeValue( "1.234" ) * 2
funkcija Reikšmė interpretuoja teksto eilutės turinį kaip dešimtainį"1.234"
skaičių .
Norėdami dirbti su "Float" reikšmėmis, naudojama funkcija "Float". Pratęsdami savo pavyzdį, Float( 1.234 )
dešimtainis skaičius konvertuojamas1.234
į plūduriuojantį.
Plūdė taip pat gali būti naudojama kaip reikšmės pakaitalas, norint konvertuoti eilutę, kurioje yra slankiojo kablelio skaičius, pvz., Float( "1.234" )
į plūdės reikšmę, kuri reikalinga, jei skaičiaus negalima pateikti kaip dešimtainio skaičiaus.
Apibendrinant:
Naudojimas | Dešimtainis | Plūduriuoti |
---|---|---|
Pažodiniai skaičiai formulėse | 1.234 |
Float( 1.234 ) Float( "1.234" ) |
Konvertavimas iš teksto eilutės | Value( "1.234" ) Decimal( "1.234" ) |
Float( "1.234" ) |
Konvertavimas tarp skaitinių tipų | Decimal( float ) |
Float( decimal ) |
Konvertavimas į teksto eilutę | Text( decimal ) |
Text( float ) |
Skaitmeninių tipų maišymas
Plūdės ir dešimtainės vertės gali būti laisvai maišomos. Sumaišius, dešimtainės reikšmės konvertuojamos į Float reikšmes dėl didesnio diapazono. Kadangi dėl šios konversijos gali sumažėti tikslumas, svarbu be reikalo jų nemaišyti. Kadangi dešimtainis skaičius yra numatytasis pažodinis duomenų tipas ir dauguma skaitinių funkcijų išsaugo tipą, gana lengva išvengti perėjimo prie "Float " to nenorint.
Pavyzdžiui, apsvarstykite šį skaičiavimą, naudodami pac power-fx repl
įdiegę Power Platform CLI. Kadangi abu skaičiai yra dešimtainiai, skaičiavimas atliekamas dešimtainiu tikslumu, o rezultatas išlaiko visišką tikslumą:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Jei vietoj to antrasis operandas būtų pakeistas į "Float ", tada visas skaičiavimas būtų atliktas "Float ",o maža trupmeninė dalis būtų prarasta:
>> 1.0000000000000000000000000001 * Float(2)
2
Data, laikas ir DateTime
Laiko juostos
Datos / laiko reikšmės priskiriamos šioms kategorijoms:
- Vietinis naudotojas: šios vertės saugomos UTC (suderintuoju universaliuoju laiku), tačiau programos naudotojo laiko juosta turi įtakos tam, kaip programa rodo šias vertes ir kaip programos naudotojas jas nurodo. Pavyzdžiui, tas pats momentas rodomas skirtingai Kanados vartotojui ir Japonijos vartotojui.
- Nepriklausoma nuo laiko juostos: programa šias reikšmes rodo vienodai, o programos naudotojas jas nurodo taip pat, neatsižvelgdamas į laiko juostą. Tas pats momentas Kanados vartotojui ir Japonijos vartotojui rodomas vienodai. Programų autoriai, kurie nesitiki, kad jų programos bus naudojamos skirtingose laiko juostose, naudoja šias reikšmes, nes jos apskritai paprastesnės.
Šioje lentelėje pateikiami keli pavyzdžiai:
Datos / laiko tipas | Duomenų bazėje saugoma reikšmė | Reikšmė, rodoma ir įvesta 7 valandos į vakarus nuo UTC | Reikšmė, rodoma ir įvesta 4 valandos į rytus nuo UTC |
---|---|---|---|
Vartotojas vietinis | Sekmadienis,2019 m.gegužės19 4:00 |
Šeštadienis,2019 m.gegužės18 21:00 |
Sekmadienis,2019 m.gegužės19 8:00 |
Nepriklausoma laiko juosta | Sekmadienis,2019 m.gegužės19 4:00 |
Sekmadienis,2019 m.gegužės19 4:00 |
Sekmadienis,2019 m.gegužės19 4:00 |
Naudojant Konvertuoti pagal laiko juostą datą / laiką, drobės programos naudoja naršyklės arba įrenginio laiko juostą, bet modeliu pagrįstos programos naudoja vartotojo nustatymą, esantį „Dataverse“. Šie parametrai paprastai atitinka, tačiau rezultatai skirsis, jei skirsis šie parametrai.
Naudokite DateAdd ir TimeZoneInformation funkcijas norėdami konvertuoti vietinį laiką į UTC ir atvirkščiai. Šių funkcijų pavyzdžius žr. dokumentų pabaigoje.
Skaitiniai atitikmenys
Drobės programos išlaiko ir apskaičiuoja visas datos / laiko reikšmes – UTC naudojant ir Konvertuoti pagal laiko juostą, ir Nekonvertuoti pagal laiko juostą. Programa pakeis reikšmes, pagrįstas programos vartotojo laiko juosta, kai jos bus rodomos ir kai programos vartotojas jas nurodys.
Kai drobės programa nuskaito Nekonvertuoti pagal laiko juostą reikšmę iš duomenų šaltinio arba parašo tokią reikšmę duomenų šaltinyje, programa automatiškai pakoreguoja reikšmę, kad kompensuotų atsižvelgiant į programos vartotojo laiko juostą. Tada programa traktuoja reikšmę kaip UTC reikšmę, kuri atitinka visas kitas programos datos / laiko reikšmes. Dėl šio kompensavimo originali Nekonvertuoti pagal laiko juostą reikšmė rodoma, kai programa pakoreguoja programos vartotojo laiko juostos UTC reikšmę.
Galite atidžiau stebėti šį veikimą naudodami Value funkciją, kad pasiektumėte esamą skaitinę datos / laiko reikšmę. Ši funkcija pateikia datos / laiko reikšmę kaip milisekundžių skaičių nuo 1970 m. sausio 1 d. 00:00:00.000 UTC.
Kadangi kiekviena datos / laiko reikšmė laikoma UTC, formulė Value( Date( 1970, 1, 1 ) ) nepateiks nulio daugelyje pasaulio dalių, nes Date funkcija pateikia datą UTC. Pavyzdžiui, formulė pateiks 28 800 000 laiko juostoje, kuri kompensuojama UTC atžvilgiu aštuoniomis valandomis. Šis skaičius atitinka aštuonių valandų milisekundžių skaičių.
Grįžtant prie mūsų pavyzdžio:
Datos / laiko tipas | Duomenų bazėje saugoma reikšmė | Reikšmė, rodoma ir įvesta 7 valandos į vakarus nuo UTC | Reikšmės funkcija grąžina |
---|---|---|---|
Vartotojas vietinis | Sekmadienis,2019 m.gegužės19 4:00 |
Šeštadienis,2019 m.gegužės18 21:00 |
1,558,238,400,000 (Sekmadienis,2019 m.gegužės19 4:00 AM UTC) |
Nepriklausoma laiko juosta | Sekmadienis,2019 m.gegužės19 4:00 |
Sekmadienis,2019 m.gegužės19 4:00 |
1,558,263,600,000 (Sekmadienis,2019 m.gegužės19 11:00 AM UTC) |
„Unix“ laiko konvertavimas
„Unix“ laikas parodo sekundžių skaičių nuo 1970 m. sausio 1 d. 00:00:00 UTC. Kadangi drobės programos milisekundes naudoja vietoj sekundžių, galima konvertuoti iš vienų į kitas dauginant arba dalijant iš 1000.
Pavyzdžiui, „Unix“ laikas rodo 2001 m. rugsėjo 9 d. 01:46:40 UTC kaip 1 000 000 000. Jei norite matyti tą datos / laiko reikšmę drobės programoje, padauginkite tą skaičių iš 1000, kad konvertuotumėte į milisekundes, tada naudokite jį Text funkcijoje. Formulė Text( 1000000000 * 1000, DateTimeFormat.UTC ) pateikia eilutę 2001-09-09T01:46:40.000Z.
Tačiau ši funkcija pateikia 2001 m. rugsėjo 8 d., šeštadienis 18:46:40, jei naudojate DateTimeFormat.LongDateTime24 formatą laiko juostoje, kuri -7 valandomis kompensuojama UTC atžvilgiu (7 valandos į vakarus nuo UTC). Šis rezultatas rodo DateTime reikšmę teisingai, atsižvelgiant į vietos laiko juostą.
Norėdami konvertuoti į „Unix“ laiką, padalykite Reikšmės rezultatą iš 1000:
RoundDown( reikšmė( UnixTime ) / 1000, 0 )
Jei reikia „Unix“ laiko Datos reikšmės tolesniems skaičiavimams arba norint parodyti „Power Apps“, naudokite šią formulę:
DateAdd( Date( 1970,1,1 ), UnixTime, Sekundės )
„SQL Server‟
„SQL Server“ yra Datetime, Datetime2 ir kiti datos / laiko duomenų tipai, neapimantys laiko juostos kompensavimo ir nenurodantys buvimo laiko juostos. Drobės programose laikoma, kad šios reikšmės saugomos UTC ir traktuojamos kaip Konvertuoti pagal laiko juostą. Jei reikšmės turi būti nekonvertuojamos pagal laiko juostą, pakoreguokite UTC konvertavimą naudodami TimeZoneOffset funkciją.
Drobės programos naudoja įtrauktą laiko juostos informaciją Datetimeoffset laukuose, kai reikšmė konvertuojama į programos vidinę UTC pateiktį. Kai rašo duomenis, programos visada kaip laiko juostą naudoja UTC (nulinės laiko juostos kompensavimas).
Drobės programos skaito ir rašo Laiko duomenų tipo reikšmes „SQL Server“ kaip teksto eilutes ISO 8601 trukmės formatu. Pavyzdžiui, turite išanalizuoti šį eilutės formatą ir naudoti Time funkciją norėdami konvertuoti teksto eilutę PT2H1M39S į Laiko reikšmę:
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)
Datos ir laiko informacijos sumaišymas
Data, Laikas ir DateTime turi skirtingus pavadinimus, tačiau visi jie turi tą pačią informaciją apie datas ir laikus.
Datos reikšmėje gali būti laiko informacija, kuri paprastai yra vidurnaktis. Laiko reikšmėje gali būti datos informacija, kuri paprastai yra 1970 m. sausio 1 d. „Dataverse“ taip pat saugoma laiko informacija su Tik datos lauku, bet pagal numatytuosius nustatymus rodoma tik datos informacija. Panašiai, drobės programos kartais atskiria šiuos duomenų tipus, kad būtų nustatyti numatytieji formatai ir valdikliai.
Nerekomenduojama datos ir laiko reikšmių pridėti bei atimti tiesiogiai, nes laiko juostos ir kitos konversijos gali pateikti klaidinančių rezultatų. Naudokite Value funkciją norėdami konvertuoti datos / laiko reikšmes į milisekundes ir atsižvelgti į programos vartotojo laiko juostą arba naudokite DateAdd ir DateDiff funkcijas norėdami pridėti arba atimti iš vienos iš šių reikšmių.
Pasirinkimai ir Taip /Ne
Pasirinkimai ir dviejų parinkčių duomenų tipai teikia du ar daugiau pasirinkimų, kuriuos programos vartotojas gali pasirinkti. Pavyzdžiui, pasirinkta užsakymo būsena gali pasiūlyti pasirinkimus Naujas, Išsiųstas, Išrašyta, ir Uždaryta. Dviejų parinkčių duomenų tipas siūlo tik du pasirinkimus.
Abu šie duomenų tipai rodo jų žymas teksto eilutės kontekste. Pavyzdžiui, žymos valdiklis rodo vieną iš užsakymo būsenos parinkčių, jei valdiklio teksto ypatybė nustatyta į tą, kurią pasirinkti nurodo formulė. Parinkčių žymos gali būti lokalizuotos programos vartotojams skirtingose vietose.
Kai programos vartotojas pasirenka parinktį ir įrašo pakeitimą, programa duomenis perduoda į duomenų bazę, kuri saugo šiuos duomenis nepriklausomai nuo kalbos. Pasirinkta parinktis perduodama ir saugoma kaip skaičius, o dviejų parinkčių duomenų tipo parinktis perduodama ir saugoma kaip bulio logikos reikšmė.
Žymos skirtos tik rodymo tikslams. Negalima tiesiogiai lyginti naudojant žymas, nes jos priklauso nuo kalbos. Vietoj to kiekvienas pasirinkimas turi išvardijimas, kuris veikia su pagrindiniu skaičiumi arba bulio logikos reikšme. Pavyzdžiui, negalima naudoti šios formulės:
If( ThisItem.OrderStatus = "Active", ...
Tačiau galite naudoti šią formulę:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Visuotinių pasirinkimų (lentelių bendrinimo) parinkčių rinkinio išvardijimo pavadinimas atitinka visuotinio pasirinkimo pavadinimą. Vietinių pasirinkimų (kurie apima lentelę) pavadinime gali būti lentelės pavadinimas. Taip išvengiama konfliktų, jei kelios lentelės turi tokį patį pavadinimą. Pavyzdžiui, klientai Paskyros lentelė gali turėti OrderStatus pasirinkimą, o jo pavadinimas gali būti OrderStatus (Paskyros). Pavadinime yra vienas ar daugiau tarpų ir skliaustų, todėl turite rašyti jį viengubose kabutėse, jei nurodote jį formulėje.
Be to, dviejų parinkčių reikšmės taip pat gali veikti kaip Bulio logikos reikšmės. Pavyzdžiui, dviejų parinkčių reikšmė, pavadinta TaxStatus, gali turėti žymas Apmokestinama ir Neapmokestinama, kurios atitinka teisinga ir klaidinga. Norėdami parodyti galite naudoti šią formulę:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Be to, galite naudoti šią lygiavertę formulę:
If( ThisItem.Taxable, ...