Tietotyypit
Muistiinpano
Microsoft Power Fx on pohjaan perustuvien sovellusten kaavakieli. Nämä artikkelit ovat keskeneräisiä, koska pohjaan perustuvista sovelluksista poimitaan kieli, integroidaan se muiden Microsoft Power Platform -tuotteiden kanssa ja määritetään käytettäväksi avoimen lähdekoodin tuotteena. Aloita kielen esittelyn Microsoft Power Fx:n yleiskatsaus.
Tiedot kulkevat sovelluksen kautta pieninä, erillisinä arvoissa, kuten laskentataulukon soluissa. Esimerkiksi Syntymäpäivä-kentän ja Vuosipäivä-kentän tiedot kulkevat läpi Päivämäärä-arvona, joka sisältää vuoden, kuukauden ja päivän. Sovellus osaa muotoilla näitä arvoja, rajoittaa syötteen kullekin sopivaksi ja jakaa arvot tietokantaan. Syntymäpäivät eroavat vuosipäivistä ihmisille, mutta järjestelmä käsittelee niitä täsmälleen samalla tavalla. Tässä tapauksessa Päivämäärä on esimerkki tietotyypistä.
Tässä artikkelissa on tietoja siitä, millaisia tietotyyppejä kaaviosovellukset tukevat. Kun sovellus muodostaa yhteyden ulkoiseen tietolähteeseen, kukin kyseisen lähteen tietotyyppi yhdistetään tieto tyyppiin kaaviosovelluksessa.
Tietotyyppi | Kuvaus | Esimerkit |
---|---|---|
totuusarvo | Tosi- tai Epätosi-arvo. Voidaan käyttää suoraan If-, Filter- ja muissa toiminnoissa, joissa ei ole vertailua. | tosi |
Väri | Värimääritys, mukaan lukien alfakanava. | Väri.Punainen ColorValue( "#102030" ) RGBA( 255, 128, 0, 0,5 ) |
Valuutta | Valuutta-arvo, joka on tallennettu liukulukunumeroon. Valuutta-arvot ovat samat kuin lukuarvot, joissa on valuutan muotoiluasetukset. | 123 4.56 |
Päivämäärä | Päivämäärä ilman kellonaikaa sovelluksen käyttäjän aikavyöhykkeessä. | Päivämäärä( 2019, 5, 16 ) |
DateTime | Päivämäärä ja kellonaika sovelluksen käyttäjän aikavyöhykkeessä. | DateTimeValue( "16. toukokuuta 2019 1:23:09 PM" ) |
Desimaali | Erittäin tarkka luku, kymmenkantaiset toiminnot ja rajoitettu alue. | 123 Desimaali( "1,2345" ) |
GUID | GUID-tunnus | GUID() GUID( "123e4567-e89b-12d3-a456-426655440000" ) |
Hyperlinkki | Tekstimerkkijono, joka sisältää hyperlinkin. | "https://powerapps.microsoft.com" |
Kuva | Universal Resource Identifier (URI) tekstimerkkijono kuvaan, joka on .jpeg, .png, .svg, .gif tai muussa yleisessä www-kuvamuodossa. | MyImage lisätty sovellusresurssiksi "https://northwindtraders.com/logo.jpg" "appres://blobmanager/7b12ffa2..." |
Media | URI-tekstimerkkijono video- tai äänitallenteeseen. | MyVideo lisätty sovellusresurssiksi "https://northwindtraders.com/intro.mp4" "appres://blobmanager/3ba411c..." |
Numero tai float | Vakiotarkkuuden luku, kaksikantaiset toiminnot ja laaja alue. | 123 8.903e121 1.234E200 |
Valinta | Vaihtoehto joukosta vaihtoehtoja, joita tukee numero. Tämä tietotyyppi yhdistää lokalisoitavan tekstiotsikon ja numeerisen arvon. Selite näkyy sovelluksessa, ja numeerinen arvo tallennetaan ja sitä käytetään vertailuissa. | ThisItem.OrderStatus |
Ennätys | Tietoarvojen tietue. Tämä yhdistelmätietotyyppi sisältää esiintymiä muista tietotyypeistä, jotka on lueteltu tässä aiheessa. Lisätietoja: Taulukkojen käyttäminen. | { Yritys: "Northwind Traders", Staff: 35, NonProfit: false } |
Tietueen viite | Viittaus tietueeseen taulukossa. Tällaisia viittauksia käytetään usein polymorfisten hakujen yhteydessä. Lisätietoja: Viitteiden käyttäminen. | Ensimmäinen(tilit). Omistaja |
Pöytä | Tietuetaulukko. Kaikilla tietueilla on oltava samat nimet kentille samoissa tietotyypeissä, ja pois jätettävistä kentistä tulee tyhjiä. Tämä yhdistelmätietotyyppi sisältää esiintymiä muista tietotyypeistä, jotka on lueteltu tässä aiheessa. Lisätietoja: Taulukkojen käyttäminen. | Taulukko( { Etunimi: "Sidney", LastName: "Higa" }, { FirstName: "Nancy", LastName: "Anderson" } ) |
Tekstiviesti | Unicode-tekstimerkkijono. | "Hei, maailma" |
Aika | Kellonaika ilman päivämäärää sovelluksen käyttäjän aikavyöhykkeessä. | Aika( 11, 23, 45 ) |
Kaksi vaihtoehtoa | Vaihtoehto kahdesta vaihtoehdosta, joita tukee totuusarvo. Tämä tietotyyppi yhdistää lokalisoitavan tekstiotsikon ja totuusarvon. Selite näkyy sovelluksessa, ja totuusarvo tallennetaan ja sitä käytetään vertailuissa. | TämäKohde.Verollinen |
tyypittämätön objekti | Objekti, jonka tyyppiä ei ole ilmoitettu. Taustalla oleva objekti voi olla mikä tahansa olemassa oleva tyyppi ja se voidaan muuntaa yhteensopiviksi tyypeiksi funktioilla, kuten Boolean(), Value(), Table() jne. Lisätietoja on kohdissa Tyypittämätön objekti ja JSON:n käyttäminen. | ParseJSON("{ "Kenttä"": 1234 }"). Pelto |
Monet näistä tieto tyypeistä ovat samanlaisia, ja niiden taustalla on sama esitysmuoto, kuten Hyperlink-kenttä jota käsitellään Teksti-kenttänä. Lisätietotyypit parantavat lomakkeiden ja muiden ohjausobjektien oletustoimintoja.
Blank
Kaikkien tietotyyppien arvo voi olla tyhjä (toisin sanoen ei arvoa). Termiä "null" käytetään usein tämän käsitteen tietokannoissa.
Voit määrittää muuttujan tai kentän tyhjäksi käyttämällä Blank-funktiota Set- tai Patch-funktion kanssa. Esimerkiksi Set( x, Blank() ) poistaa kaikki arvot yleisestä muuttujasta x.
IsBlank-funktio testaa, onko arvo tyhjä. Korvaa mahdolliset tyhjät arvot ei-tyhjillä arvoilla käyttämällä Coalesce-funktiota.
Koska kaikki tietolajit tukevat tyhjää, Totuusarvo ja Kaksi vaihtoehtoa -tietotyypeillä on tosiasiassa kolme mahdollista arvoa.
Teksti, Hyperlink, Image ja Media
Kaikki nämä neljä tietotyyppiä perustuvat Unicode-tekstimerkkijonoon.
Upotettu teksti
Kaavan upotetut tekstimerkkijonot on kirjoitettava lainausmerkkeihin. Käytä kahta lainausmerkkiä yhdessä, kun haluat esittää yhden lainausmerkin tekstimerkkijonossa. Voit esimerkiksi käyttää seuraavaa kaavaa OnSelect-ominaiuudessa Button-ohjausobjektissa:
Notify( "Jane said ""Hello, World!""" )
tuloksena on banneri, kun painat painiketta, jossa ensimmäiset ja viimeiset lainausmerkit jätetään pois (koska ne rajaavat tekstimerkkijonoa) ja toistuvat lainausmerkit tekstin Hello, World! ympärillä korvataan yhdellä lainausmerkillä:
Heittomerkkejä käytetään tunnusnimissä, jotka sisältävät erikoismerkkejä ja joilla ei ole erityistä merkitystä tekstimerkkijonossa.
Merkkijonojen interpolointi
Merkkijonojen interpoloinnin avulla voit upottaa kaavoja tekstimerkkijonoon. Tämä helpottaa usein käsittelyä sekä tuloksen visualisointia Concatenate-funktion tai &-operaattorin käyttöön verrattuna.
Syötä tekstimerkkijonon eteen dollarimerkki $ ja ympäröi upotettava kaava aaltosulkeilla { }. Jos haluat käyttää aaltosulkeita tekstimerkkijonossa käytä niitä kaksinkertaisina: {{ tai }}. Merkkijonojen interpolointia voi käyttää kaikkialla, missä vakiotekstimerkkijonoa voi käyttää.
Otetaan esimerkiksi tämä kaava, jossa yleisen muuttujan Omenaa arvoksi on määritetty 3 ja yleisen muuttujan Banaania arvoksi 4:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Tämä kaava palauttaa tekstimerkkijonon Meillä on 3 omenaa ja 4 banaania eli yhteensä 7 hedelmää. Muuttujat Omenaa ja Banaania lisätään tekstiin aaltosulkeiden tilalle yhdessä matemaattisen kaavan Omenat+Banaanit tuloksen kanssa. Välilyönnit ja muut merkit aaltosulkeiden ympärillä pysyvät muuttumattomina.
Upotetut kaavat voivat sisältää mitä tahansa funktioita tai operaattoreita. Tämä edellyttää vain, että kaavan tulos voidaan muuntaa tekstimerkkijonoksi. Tämä kaava esimerkiksi lisää tervehdykseen NickName-arvon, jos se on annettu, tai FirstName-arvon, jos sitä ei ole annettu:
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )
Jos NickName-arvoksi on määritetty Jaska, tämä kaava tuottaa tekstimerkkijonon Welcome Jaska, it's great to meet you!. Jos NickName kuitenkin on tyhjä ja FirstName-arvo on Jaakko, tämän kaavan tuloksena on sen sijaan Dear Jaakko, great to meet you!
Merkkijonojen interpoloinnin upotettu kaava voi sisältää vakiotekstimerkkijonoja. Jos esimerkiksi sekä NickName että FirstName on jätetty antamatta, voisimme syöttää korvaavaksi arvoksi "Friend":
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Merkkijonojen interpolointeja voi jopa asettaa sisäkkäin. Otetaan esimerkki, jossa nimet First, Middle ja Last yhdistetään tervehdyksessä. Vaikka yksi tai kaksi näistä arvoista olisi tyhjiä, nimen osien välillä on oikea määrä välilyöntejä. Jos mitään nimeä ei anneta, merkkijonon sisäinen interpolointi kutistuu tyhjäksi merkkijonoksi ja korvataan Coalesce-funktiolla arvolla "Friend".
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
First | Middle | Last | Tulos |
---|---|---|---|
Jaakko | Kalervo | Meikäläinen | Welcome John Quincy Doe! |
Jaakko | aihio | Meikäläinen | Welcome John Doe! |
aihio | aihio | Meikäläinen | Welcome Doe! |
aihio | aihio | aihio | Welcome Friend! |
Rivinvaihdot
Upotetut tekstimerkkijonot voivat sisältää rivinvaihtoja. Otetaan esimerkiksi Label-ohjausobjektin Text-ominaisuuden määrittäminen seuraavasti:
"Line 1
Line 2
Line 3"
Yllä olevan kaavan tulos on, että selite-ohjausobjektissa näkyy kolme riviä:
Myös merkkijonojen interpolointi tukee rivinvaihtoja, kuten alla näkyy:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Yllä oleva kaava johtaa samaan tulokseen:
Kuva- ja Media-resurssit
Tiedosto-valikon kautta voit lisätä kuva-, video- ja äänitiedostoja sovellusresursseiksi. Tuodun tiedoston nimeksi tulee resurssin nimi sovelluksessa. Tässä grafiikassa sovellukseen on lisätty Northwind Traders -logo, jonka nimi on nwindlogo:
Jos haluat käyttää tätä resurssia sovelluksessa, määritä se Image-ominaisuutena Image-ohjausobjektissa:
Kuvien ja muiden mediatiedostojen URI-osoitteet
Voit syventyä tuohon viimeiseen esimerkkiin määrittämällä Text-ominaisuuden arvoksi Label-ohjausobjektissa nwindlogo. Otsikossa näkyy tekstimerkkijono:
Kaaviosovellukset viittaavat kuhunkin kuvaan tai muuhun mediatiedostoon – olipa se pilvipalvelussa tai lisättynä sovellusresurssiksi – URI-tekstimerkkijonona.
Esimerkiksi ohjausobjektin Image-ominaisuus hyväksyy sovellusresurssien lisäksi myös linkit verkossa oleviin kuviin, kuten "https://northwindtraders.com/logo.jpg". Ominaisuus hyväksyy myös tekstiin sidotut kuvat, jotka käyttävät tietojen URI-määritystä, kuten tässä esimerkissä:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
URI näyttää kahden purppuran timantin skaalatun version:
Voit näyttää Camera-ohjausobjektissa siepatun viimeisimmän kuvan, jos määrität kuvaohjausobjektin Image-ominaisuudeksi kameraohjausobjektin Photo-ominaisuuden. Sovellus säilyttää kuvan muistissa, ja kameraohjausobjektin Photo-ominaisuus palauttaa URI-viittauksen kuvaan. Voit esimerkiksi ottaa kuvan, ja kameran Photo-ominaisuus voi palauttaa arvon "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
URI-osoitteen avulla voit määrittää viitteen kuvaan tai toiseen mediatiedostoon, joka tallennettu tietokantaan. Näin sovellus ei nouda varsinaisia tietoja, ennen kuin se on todella tarpeen. Esimerkiksi liite Microsoft Dataverse -taulukossa saattaa palauttaa arvon "appres://datasources/Contacts/table/..." Aivan niin kuin kameraesimerkissä, voit näyttää tämän kuvan määrittämällä kuvan ohjausobjektin Image-ominaisuuden tähän viitteeseen, joka hakee binaaritiedot.
Kun tallennat mediatietotyypin, kuten kuvan, tietokantaan, sovellus lähettää todellisen kuva- tai mediadatan, ei URI-viittausta.
Kokorajoitukset
Tekstimerkkijonoina ja URI-tietoina näillä tietotyypeillä ei ole esimääritettyä rajoitusta niiden pituudelle.
Näiden tietotyyppien viittaamilla binaaritiedoilla ei myöskään ole ennalta määritettyjä kokorajoitusta. Esimerkiksi kameraohjausobjektin kautta siepatussa kuvassa, joka on nyt viitattu nimellä "appres://...", voi olla yhtä suuri ja korkea resoluutio kuin laitteen kameralla voidaan saada. Tietotyyppi ei rajoita mediatiedostojen tarkkuutta, kehysnopeutta tai muita määritteitä, mutta tietyissä median toisto- ja sieppaustoiminnoissa saattaa olla joitain rajoituksia.
Kaikissa tietokoissa on kuitenkin noudatettava käytettävissä olevaa muistin määrää sovelluksessa. Pöytätietokoneessa olevat selaimet tukevat yleensä yli 100 megatavua tietoja. Laitteen, kuten puhelimen, käytettävissä olevan muistin määrä voi kuitenkin olla paljon pienempi, yleensä 30-70 megatavun välillä. Voit selvittää, toimiiko sovelluksesi näissä rajoissa, testaamalla yleisiä skenaarioita kaikissa laitteissa, joissa se suoritetaan.
Paras käytäntö on pitää tiedot muistissa vain niin kauan kuin on tarpeen. Lataa kuvat tietokantaan niin pian kuin pystyt. Lataa kuvat käyttäjälle vain silloin, kun sovelluksen käyttäjä pyytää niitä.
Numerot
Muistiinpano
Power Apps tukee tällä hetkellä vain liukulukua, ja se on kaikki lukujen tyyppi. Desimaalituki lisätään pian.
Power Fx tukee kahdenlaisia lukuja: desimaalilukua ja liukulukua (joita kutsutaan myös luvuksi ja valuutaksi).
Desimaali on paras useimmissa liiketoimintalaskelmissa. Se voi ilmaista tarkasti kymmenkantaiset luvut eli 0.1
voidaan ilmaista tarkasti eikä siinä esiinny herkästi pyöristyseroja laskutoimitusten aikana. Sen alue on riittävän suuri kaikenlaisiin liiketoimintarpeisiin; suurin arvo on 1028 ja tarkkuutena on 28 merkkiä. Desimaali on useimpien Power Fx isäntien oletusarvoinen numeerinen tietotyyppi, jota käytetään, jos vain kirjoitetaan 2*2
.
Kelluva on paras tieteellisiin laskelmiin. Sillä voidaan ilmaista paljon suurempi alue, jopa 10308. Tarkkuus on rajoitettu 15 desimaaliin ja matematiikka perustuu kaksikantaisuuteen, joten sillä ei voi ilmaista joitakin yleisiä desimaaliarvoja tarkasti. Floatilla on myös parempi suorituskyky ja sitä suositaan, jos se on tekijä ja tarkkuus ei ole kriittinen.
Desimaaliluvut
Desimaali-tietotyyppi käyttää useimmiten .NET-desimaalitietotyyppiä. Jotkin isännät, kuten SQL Serverissä suoritettavat Dataverse-kaavasarakkeet, käyttävät SQL Serverin desimaalitietotyyppiä.
Desimaali tekee matematiikan samalla tavalla kuin opit koulussa, käyttämällä 10 perusnumeroa. Tällä on suuri merkitys, kun halutaan välttää erittäin pienien erojen pyöristysvirheet, joita voi kertyä käytettäessä kaksikantaista matematiikka (tavalla, jolla liukuluku niitä käyttää).
Alueen alku on positiivinen 79 228 162 514 264 337 593 543 950 335 ja loppu negatiivinen 79 228 162 514 264 337 593 543 950 335. Desimaalierotin voidaan sijoittaa mihin tahansa näissä luvuissa, mikä mahdollistaa 28 desimaalin tarkkuuden ja siltä tarkan esittämisen. Esimerkiksi 79 228 162 514 264,337593543950335 voidaan ilmaista tarkasti samoin kuin 7,9228162514264337593543950335.
Liukuluvut
Liukuluku-tietotyyppi, jota kutsutaan luvuksi tai valuutaksi käyttää kaksitarkkuuksista IEEE 754 -liukulukustandardia. Tämä standardi tarjoaa erittäin suuren määrän erilaisia numeroita välillä –1.79769 x 10308 – 1.79769 x 10308. Pienin arvo, joka voi olla edustettuna, on 5 x 10– 324.
Float voi esittää tarkalleen kokonaislukuja (tai kokonaislukuja) välillä –9,007,199,254,740,991 (–(253 – 1)) ja 9,007,199,254,740,991 (253 – 1), mukaan lukien. Tämä alue on suurempi kuin 32-bittinen (tai 4-tavuinen) kokonaislukutietotyyppi, jota tietokannat käyttävät yleisesti. Kaaviosovellukset eivät kuitenkaan voi esittää 64-bittisiä (tai 8-tavuisia) kokonaislukutietotyyppejä. Voit tallentaa numeron tekstikenttään tai käyttää laskettua saraketta, jos haluat kopioida numeron tekstikenttään, jotta se voidaan yhdistää Teksti-tietotyyppiin kaaviosovelluksessa. Tällä tavoin voit pitää, näyttää ja kirjoittaa nämä arvot sekä verrata niitä sen määrittämiseksi, ovatko ne samanarvoisia. Tässä lomakkeessa ei kuitenkaan voi suorittaa numeerisia laskelmia.
Liukulukujen aritmeettinen arvo on likimääräinen, joten se voi joskus tuottaa odottamattomia tuloksia monissa dokumentoiduissa esimerkeissä. Saatat odottaa, että kaava 55 / 100 * 100 palauttaa täsmälleen 55 ja (55 / 100 * 100) - 55 palauttaa täsmälleen nollan. Jälkimmäinen kaava palauttaa kuitenkin 7,1054 x 10 – 15, joka on hyvin pieni mutta ei nolla. Tämä pieni ero ei yleensä aiheuta ongelmia, ja sovellus pyöristää sen, kun tulos näytetään. Pienet erot voivat kuitenkin yhdistyä seuraavissa laskelmissa, ja ne näyttävät antavan väärän vastauksen.
Tietokantajärjestelmät tallentavat usein valuuttoja ja suorittavat laskutoimituksia käyttämällä desimaalierotinta, joka tarjoaa pienemmän alueen mutta lisää tarkkuutta. Oletusarvon mukaan kaaviosovellukset yhdistävät valuuttoja liukulukujen arvojen kanssa. Tämän vuoksi lopputulos voi poiketa alkuperäisessä desimaalitietotyypissä tehdystä laskennoista. Jos tämä ristiriita aiheuttaa ongelmia, haluat ehkä käsitellä näitä arvoja Teksti-tietotyyppinä, samoin kuin tässä osassa aiemmin kuvattuja suuria kokonaislukuja.
Oletukset ja muunnokset
Muistiinpano
Power Apps tukee tällä hetkellä vain liukulukua, ja se on kaikki lukujen tyyppi. Desimaalituki lisätään pian.
Useimmat Power Fx -isännät käyttävät oletusarvoisesti desimaalia. Tämä vaikuttaa
- kaavojen literaalilukuihin. Luku
1.234
tulkitaan Desimaali-arvoksi. Esimerkiksi kaava1.234 * 2
tulkitsee, että1.234
ja2
ovat desimaaleja ja tulokseksi palautetaan desimaali. - Value-funktio.
Value( "1.234" )
palauttaa desimaaliarvon . Esimerkiksi kaavassaValue( "1.234" ) * 2
Value-funktio tulkitsee tekstimerkkijonon"1.234"
sisällön desimaalina.
Liukuluku-arvoja käsiteltäessä käytetään Float-funktiota. Edellistä esimerkkiä laajennettaessa Float( 1.234 )
muuntaa desimaalin1.234
liukuluvuksi. Liukulukua voidaan käyttää myös korvaamaan arvo , kun liukuluvun Float( "1.234" )
sisältävä merkkijono, kuten liukuluku, muunnetaan liukuluvuksi , joka vaaditaan, jos lukua ei voida esittää desimaalina.
Yhteenveto:
Käyttö | Desimaali | Kellua |
---|---|---|
Literaaliluvut kaavoissa | 1.234 |
Float( 1.234 ) Float( "1.234" ) |
Muunto tekstimerkkijonosta | Value( "1.234" ) Decimal( "1.234" ) |
Float( "1.234" ) |
Muunto numerotyyppien välillä | Decimal( float ) |
Float( decimal ) |
Muunto tekstimerkkijonoksi | Text( decimal ) |
Text( float ) |
Numerotyyppien yhdistelmä
Liukuluku - ja desimaaliarvoja voidaan sekoittaa vapaasti. Yhdistelmää käytettäessä Desimaali-arvot muunnetaan Liukuluku-arvoiksi suuremman alueen vuoksi. Koska se voi aiheuttaa tarkkuuden menetyksen, on tärkeää, ettei lukuja yhdistetä turhaan. Koska Desimaali on oletusarvoinen literaalitietotyyppi ja useimmat numeeriset funktiot säilyttävät tämän tyypin, on suhteellisen helppoa välttää liukulukuun siirtyminen ellei se ole toivottavaa.
Oletetaan esimerkiksi seuraava laskutoimitus, jossa on käytössä pac power-fx repl
sen jälkeen, kun Power Platform CLI on asennettu. Koska molemmat luvut ovat Desimaali-lukuja, laskutoimitus tehdään Desimaali-lukuna ja tulos säilyttää täyden tarkkuuden:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Jos sen sijaan toinen operandi vaihdetaan liukuluvuksi, koko laskutoimitus tehtäisiin liukulukuna ja vähäinen murto-osa menettäisiin:
>> 1.0000000000000000000000000001 * Float(2)
2
Date, Time ja DateTime
Aikavyöhykkeet
Päivämäärä- ja kellonaika-arvot kuuluvat näihin luokkiin:
- Paikallinen käyttäjä: Nämä arvot tallennetaan UTC-ajassa (koordinoitu yleisaika), mutta sovelluksen käyttäjän aikavyöhyke vaikuttaa siihen, miten sovellus näyttää nämä arvot ja miten sovelluksen käyttäjä määrittää ne. Esimerkki: Sama hetki näkyy eri tavalla käyttäjälle Kanadassa kuin käyttäjälle Japanissa.
- Aikavyöhykkeestä riippumaton: Sovellus näyttää nämä arvot samalla tavalla ja sovelluksen käyttäjä määrittää ne samalla tavalla aikavyöhykkeestä riippumatta. Sama hetki näkyy samalla tavalla käyttäjälle Kanadassa kuin käyttäjälle Japanissa. Sovellusten tekijät, jotka eivät odota, että heidän sovelluksiaan suoritetaan eri aikavyöhykkeillä, käyttävät näitä arvoja, koska ne ovat yleisesti yksinkertaisempia.
Tässä taulukossa on esimerkkejä:
Päivämäärä- ja kellonaika-tyyppi | Tietokantaan tallennettu arvo | Arvo näytetty ja syötetty 7 tuntia UTC-ajasta länteen | Arvo näytetty ja syötetty 4 tuntia UTC-ajasta itään |
---|---|---|---|
Käyttäjä paikallinen | Sunday,May19,2019 4.00 |
Saturday,May18,2019 21.00 |
Sunday,May19,2019 8.00 |
Aikavyöhykkeestä riippumaton | Sunday,May19,2019 4.00 |
Sunday,May19,2019 4.00 |
Sunday,May19,2019 4.00 |
Käyttäjän paikallista päivämäärää ja kellonaikaa varten kaaviosovellukset käyttävät selaimen tai laitteen aikavyöhykettä, mutta mallipohjaiset sovellukset käyttävät käyttäjän Dataverse-asetusta. Nämä asetukset ovat yleensä samat, mutta tulokset eroavat toisistaan, jos nämä asetukset eroavat toisistaan.
DateAdd- ja TimeZoneInformation-funktioiden avulla voit muuntaa paikallisen ajan UTC-ajaksi ja takaisin. Katso näiden funktioiden esimerkkejä dokumentaation lopussa.
Numeeriset vastineet
Kaaviosovellukset säilyttävät ja laskevat kaikki päivämäärä- ja aika-arvot UTC-aikana riippumatta siitä, ovatko ne Käyttäjän paikallinen tai Aikavyöhykeriippumaton. Sovellus muuntaa arvot sovelluksen käyttäjän aikavyöhykkeen perusteella, kun ne näytetään ja kun sovelluksen käyttäjä määrittää ne.
Kun kaaviosovellus lukee Aikavyöhykkeestä riippumaton -arvon tietolähteestä tai kirjoittaa tällaisen arvon tietolähteeseen, sovellus määrittää automaattisesti arvon, joka kompensoi sovelluksen käyttäjän aikavyöhykkeen kanssa. Tämän jälkeen sovellus käsittelee arvoa UTC-arvona, joka on yhdenmukainen kaikkien muiden sovelluksen päivämäärä- ja aika-arvojen kanssa. Tämän korvauksen vuoksi alkuperäinen Aikavyöhykeriippumaton-arvo tulee näkyviin, kun sovellus muuttaa UTC-arvoa sovelluksen käyttäjän aikavyöhykkeeseen.
Voit tarkkailla tätä toimintaa tarkemmin käyttämällä Value-funktiota, kun haluat käyttää päivämäärä- ja aika-arvon pohjana olevaa numeerista arvoa. Tämä funktio palauttaa päivämäärä- ja aika-arvon, joka on 1. tammikuuta 1970 00:00:00.000 UTC.
Koska jokainen päivämäärä- ja aika-arvo pidetään UTC-aikana, kaava Value( Date( 1970, 1, 1 ) )ei palauta nollaa suurimmassa osassa maailmaa, koska Date-funktio palauttaa päivämäärän UTC-aikana. Kaava palauttaa esimerkiksi 28 800 000 aikavyöhykkeessä, joka on siirretty UTC-ajasta kahdeksan tuntia. Tämä luku kertoo kahdeksan tunnin millisekuntien määrän.
Palataan edellä olevaan esimerkkiin:
Päivämäärä- ja kellonaika-tyyppi | Tietokantaan tallennettu arvo | Arvo näytetty ja syötetty 7 tuntia UTC-ajasta länteen | Value-funktio palauttaa |
---|---|---|---|
Käyttäjä paikallinen | Sunday,May19,2019 4.00 |
Saturday,May18,2019 21.00 |
1,558,238,400,000 (Sunday,May19,2019 4:00 AM UTC) |
Aikavyöhykkeestä riippumaton | Sunday,May19,2019 4.00 |
Sunday,May19,2019 4.00 |
1,558,263,600,000 (Sunday,May19,2019 11:00 AM UTC) |
Unix-aikojen muuntaminen
Unix-ajat kuvastavat sekuntien määrää ajanhetkestä 1.1.1970 00:00:00 UTC. Koska kaaviosovellukset käyttävät millisekunteja sekuntien sijasta, voit muuntaa niiden välillä kertomalla tai jakamalla luvulla 1 000.
Esimerkiksi Unix-aika 9.9.2001 kello 01:46:40 UTC arvona 1 000 000 000. Jos haluat, että päivämäärä- ja aika-arvo näytetään kaaviosovelluksessa, kerro kyseinen luku luvulla 1 000, jotta voit muuntaa sen millisekunneiksi ja käyttää sitä sitten Text-toiminnossa. Kaava Text( 1000000000 * 1000, DateTimeFormat.UTC ) palauttaa merkkijonon 2001-09-09T01:46:40.000Z.
Kuitenkin tämä funktio palauttaa Saturday, September 8, 2001 18:46:40, jos käytät DateTimeFormat.LongDateTime24-muotoa aikavyöhykkeessä, joka eroaa -7 tuntia UTC-ajasta (7 lähteen UTC-pisteestä). Tämä tulos näyttää DateTime-arvon oikein paikallisen aikavyöhykkeen perusteella.
Jos haluat muuntaa Unixs-ajaksi, jaa Value-tulos luvulla 1 000:
Pyöristä alaspäin (arvo(UnixTime) / 1000, 0 )
Jos tarvitset Unix-aikaa Date-arvossa jatkolaskelmia tai Power Apps -käyttöä varten, käytä seuraavaa kaavaa:
DateAdd( Päivämäärä (1970,1,1), UnixTime, sekuntia )
SQL Server
SQL Serverissä on DateTime, Datetime2 ja muita päivämäärän ja ajan tietotyyppejä, jotka eivät sisällä aika vyöhykesiirtymää eivätkä ilmaise, missä aikavyöhykkeessä ne ovat. Kaaviosovellukset olettavat, että nämä arvot on tallennettu UTC-muodossa ja että niitä käytetään käyttäjän paikallisena aikana. Jos arvojen on tarkoitus olla aika vyöhykeriippumattomia, korjaa UTC-käännökset käyttämällä TimeZoneOffset-funktiota.
Kaaviosovellukset käyttävät DateTimeOffset-kentissä mukana olevia aikavyöhyketietoja muunnettaessa arvoa sovelluksen sisäiseen UTC-esitykseen. Sovellukset käyttävät aina UTC-aikaa aikavyöhykkeenä (aikavyöhykepoikkeama nolla), kun ne kirjoittavat tietoja.
Kaaviosovellukset lukevat ja kirjoittavat Time-tietotyypin arvoja SQL Serverissä tekstimerkkijonoina ISO 8601 -kestomuodossa. Tämä merkkijonomuoto on esimerkiksi jäsennettävä ja muunnettava Time-funktiolla tekstimerkkijono "PT2H1M39S" Time-arvoksi:
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)
Päivämäärän ja kellonajan tietojen yhdistäminen
Päivämäärällä, ajalla ja DateTimella on eri nimet, mutta ne kaikki sisältävät samat tiedot päivämääristä ja kellonajoista.
Date-arvo voi sisältää aikatietoja, jotka ovat yleensä keskiyöllä. Time-arvo voi kuljettaa päivämäärätietoja, jotka ovat yleensä 1. tammikuuta 1970. Dataverse tallentaa myös aikatiedot Vain päivämäärä -kentän mukaan, mutta näyttää vain päivämäärätiedot oletusarvoisesti. Myös kaaviosovellukset erottavat nämä tietolajit toisistaan, jotta oletusmuodot ja ohjausobjektit voidaan määrittää.
Päivämäärä- ja aika-arvojen lisäämistä ja vähentämistä ei suositella, koska aikavyöhyke ja muut tulokset voivat aiheuttaa sekaannusta. Käytä Value-funktiota päivämäärä- ja aika-arvojen muuntamiseen ensin millisekunneiksi ja ota huomioon sovelluksen käyttäjän aikavyöhyke tai lisää tai vähennä näistä arvoista DateAdd- ja DateDiff -funktioiden avulla.
Valinnat ja Kyllä/Ei
Valinnat ja kahden vaihtoehdon tietotyypit tarjoavat sovelluksen käyttäjälle valittavaksi vähintään kaksi vaihtoehtoa. Esimerkiksi Tilauksen tila -valinnassa voi olla vaihtoehdot Uusi, Toimitettu, Laskutettu ja Suljettu. Kahden vaihtoehdon tietotyyppi tarjoaa vain kaksi vaihtoehtoa.
Kumpikin näistä tietotyypeistä näyttää selitteet tekstimerkkijonossa. Esimerkiksi selitteen ohjausobjekti näyttää yhden tilavaihtoehdon, jos ohjausobjektin Text-ominaisuus on määritetty kaavaksi, joka viittaa tähän vaihtoehtoon. Vaihtoehtojen otsikot voidaan lokalisoida sovelluksen käyttäjille eri sijainneissa.
Kun sovelluksen käyttäjä valitsee vaihtoehdon ja tallentaa sen, sovellus siirtää tiedot tietokantaan, joka tallentaa kyseiset tiedot kielestä riippumattomaan esitykseen. Vaihtoehto valinnassa lähetetään ja tallennetaan numerona ja vaihtoehto kahden valinnan tietotyypissä lähetetään ja tallennetaan totuusarvona.
Otsikot ovat vain näyttötarkoituksia varten. Et voi tehdä suoria vertailuja otsikoilla, koska ne ovat kielikohtaisia. Kullakin valinnalla on sen sijaan luettelointi, joka toimii taustalla olevan numeron tai totuusarvon kanssa. Et voi esimerkiksi käyttää tätä kaavaa:
If( ThisItem.OrderStatus = "Active", ...
Voit kuitenkin käyttää seuraavaa kaavaa:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Yleisissä vaihtoehdoissa (jotka taulukot jakavat), asetusjoukon luetteloinnin nimi vastaa yleisen vaihtoehdon nimeä. Paikallisten vaihtoehtojen (joiden vaikutusalue on taulukko) nimessä voi olla taulukon nimi. Tämä toimintatapa välttää ristiriitoja, jos useissa taulukoissa on samannimiset vaihtoehdot. Esimerkiksi Tilit-taulukossa saattaa olla vaihtoehto OrderStatus ja sen nimi saattaa olla OrderStatus (Tilit). Nimessä on vähintään yksi välilyönti ja sulkumerkki, joten se on ympäröitävä heittomerkeillä, jos viittaat siihen kaavassa.
Lisäksi kahden vaihtoehdon arvot voivat myös käyttäytyä totuusarvoina. Esimerkiksi kahden vaihtoehdon arvolla TaxStatus voi olla selitteet Taxable ja Non-Taxable, jotka vastaavat vastaavasti totuusarvoja true ja false. Voit esimerkiksi käyttää tätä kaavaa:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Voitmyös käyttää tätä vastaavaa kaavaa:
If( ThisItem.Taxable, ...