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. true
Väri Värimääritys, mukaan lukien alfakanava. Color.Red
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ä. Date( 2019, 5, 16 )
Päivämäärä ja aika Päivämäärä ja kellonaika sovelluksen käyttäjän aikavyöhykkeessä. DateTimeValue( "May 16, 2019 1:23:09 PM" )
Desimaali Erittäin tarkka luku, kymmenkantaiset toiminnot ja rajoitettu alue. 123
Decimal( "1.2345" )
GUID GUID-tunnus GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hyperlinkki Tekstimerkkijono, joka sisältää hyperlinkin. "https://powerapps.microsoft.com"
Image 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..."
Luku tai liukuluku 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
Tietue Tietoarvojen tietue. Tämä yhdistelmätietotyyppi sisältää esiintymiä muista tietotyypeistä, jotka on lueteltu tässä aiheessa. Lisätietoja: Taulukkojen käyttäminen. { Company: "Northwind Traders",
Staff: 35,
NonProfit: false }
Tietueviittaus Viittaus tietueeseen taulukossa. Tällaisia viittauksia käytetään usein polymorfisten hakujen yhteydessä. Lisätietoja: Viitteiden käyttäminen. First(Accounts).Owner
Table 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. Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Teksti Unicode-tekstimerkkijono. "Hello, World"
Time Kellonaika ilman päivämäärää sovelluksen käyttäjän aikavyöhykkeessä. Time( 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. ThisItem.Taxable
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("{ ""Field"" : 1234 }").Field

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.

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ä:

ponnahdusilmoitus, jossa viesti Jane sanoi

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 blank Meikäläinen Welcome John Doe!
blank blank Meikäläinen Welcome Doe!
blank blank blank 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ä:

Upotettu tekstimerkkijono ja selite-ohjausobjekti, jossa näkyy kolme riviä Line 1, Line 2 ja Line 3.

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:

Merkkijonon interpolointikaava, jossa näkyy kolme riviä Line 1, Line 2 ja Line 3.

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:

Northwind-resurssi

Jos haluat käyttää tätä resurssia sovelluksessa, määritä se Image-ominaisuutena Image-ohjausobjektissa:

Northwind-kuva

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:

Northwind-teksti.

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:

Tuplatimantit

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. Desimaali-tuki tuetaan pian.

Power Fx tukee kahdenlaisia lukuja: desimaalilukua ja liukulukua (joita kutsutaan myös luvuksi ja valuutaksi).

Desimaaliluku on paras vaihtoehto useimmissa liiketoiminnan laskelmissa. 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 numeerinen oletustietotyyppi, jota käytetään, jos kirjoitetaan yksinkertaisesti 2*2.

Liukuluku on paras vaihtoehto tieteellisiin laskutoimituksiin. 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. Liukuluku on myös suorituskyvyltään parempi ja sitä suositaan, jos tällä on merkitystä eikä tarkkuus ole oleellista.

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 laskee matemaattiset tehtävä samoin kuin koulussa opetettiin käyttämällä kymmenkantaisia merkkejä. 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.

Liukuluku voi ilmaista kokonaisluvut tarkasti arvojen –9 007 199 254 740 991 (–(253 – 1)) ja 9 007 199 254 740 991 (253 – 1) välillä. 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. Desimaali-tuki tuetaan 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 kaava 1.234 * 2 tulkitsee, että 1.234 ja 2 ovat desimaaleja ja tulokseksi palautetaan desimaali.
  • Value-funktio. Value( "1.234" ) palauttaa Desimaali-arvon. Esimerkiksi kaavassa Value( "1.234" ) * 2Value-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.234liukuluvuksi. Liukulukua voidaan käyttää myös arvon korvaajana muunnettaessa liukuluvun, kuten Float( "1.234" ), sisältävä merkkijono Liukuluku-arvoksi, mikä on pakollista, jos lukua ei voi ilmaista desimaalina.

Yhteenveto:

Käyttö Desimaali Liukuluku
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 Desimaali-arvoja voidaan yhdistää 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:

  • Käyttäjän paikallinen: Nämä arvot tallennetaan UTC (Coordinated Universal Time) -aikana, 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öhykeriippumaton: 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än 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än 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:
RoundDown( Value( UnixTime ) / 1000, 0 )

Jos tarvitset Unix-aikaa Date-arvossa jatkolaskelmia tai Power Apps -käyttöä varten, käytä seuraavaa kaavaa:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )

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

Date, Time ja DateTime ovat eri nimiä, mutta niillä kaikilla on 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, ...