Vrste podatkov

Opomba

Microsoft Power Fx je novo ime za jezik formule za aplikacije s platnom. Ti članki so delo v teku, saj izvlečemo jezik iz aplikacij s platnom, ga integriramo z drugimi izdelki Microsoft Power Platform in damo na voljo odprtokodno. Začnite s člankom Pregled storitve Microsoft Power Fx za uvod v jezik.

Informacije tečejo skozi Microsoft Power Fx v majhnih, diskretnih vrednostih, tako kot celice preglednice. Na primer, podatki v polju Rojstni dan in polju Obletnica bi tekli skozi kot vrednost Datum, ki vključuje leto, mesec in dan. Aplikacija ve, kako oblikovati te vrednosti, omejiti vnos na, kar je primerno za vsako, in dati vrednosti v skupno rabo z zbirko podatkov. Rojstni dnevi se razlikujejo od obletnic po mnenju ljudi, sistem pa jih obravnava na popolnoma isti način. V tem primeru je Datum primer vrste podatkov.

Ta članek vsebuje podrobnosti o vrstah podatkov, ki jih podpira Power Fx. Ko v jezik vnesete zunanje podatke, se vsaka vrsta podatkov v tem viru preslika v vrsto podatkov za Power Fx.

Vrsta podatkov Opis Primeri
Logično Vrednost true ali false. Se lahko uporabi neposredno v funkcijah If, Filter in drugih brez primerjave. true
Barva Specifikacija barve, vključno kanala alfa. Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
Valuta Vrednost valute, ki je shranjena v številki s plavajočo vejico. Vrednosti valut so iste kot vrednosti številk z možnostmi oblikovanja valute. 123
4.56
Datum Datum brez časa v časovnem pasu uporabnika aplikacije. Date( 2019, 5, 16 )
DateTime Datum s časom v časovnem pasu uporabnika aplikacije. DateTimeValue( "May 16, 2019 1:23:09 PM" )
GUID Globalni enolični identifikator. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hiperpovezava Besedilni niz, ki vsebuje hiperpovezavo. "https://powerapps.microsoft.com"
Slika Besedilni niz enotnega identifikatorja vira (URI) v sliko v obliki zapisa .jpeg, .png, .svg, .gif, ali drugi splošni obliki zapisa za spletne slike. MyImage dodano kot vir aplikacije
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Predstavnost Besedilni niz URI-ja za video ali zvočni posnetek. MyVideo dodano kot vir aplikacije
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Številka Število s plavajočo vejico. 123
-4.567
8.903e121
Nabor možnosti Izbira iz nabora možnosti, podprta s številko. Ta vrsta podatkov združuje besedilno oznako, ki jo je mogoče lokalizirati, s številčno vrednostjo. Oznaka je prikazana v aplikaciji, številčna vrednost pa se shrani in uporabi za primerjave. ThisItem.OrderStatus
Zapis Zapis vrednosti podatkov. Ta sestavljena vrsta podatkov vsebuje primerke drugih vrst podatkov, ki so navedeni v tej temi. Več informacij: Delo s tabelami. { Company: "Northwind Traders",
Staff: 35,
NonProfit: false }
Sklic na zapis Sklic na zapis v entiteti. Takšni sklici se pogosto uporabljajo pri polimorfnih iskanjih. Več informacij: Delo s sklici. First(Accounts).Owner
Tabela Tabela zapisov. Vsi zapisi morajo imeti ista imena za polja z istimi vrstami podatkov, opuščena polja pa se obravnavajo kot prazna. Ta sestavljena vrsta podatkov vsebuje primerke drugih vrst podatkov, ki so navedeni v tej temi. Več informacij: Delo s tabelami. Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Besedilo Besedilni niz Unicode. "Hello, World"
Ura Čas brez datuma v časovnem pasu uporabnika aplikacije. Time( 11, 23, 45 )
Dve možnosti Izbira iz nabora dveh možnosti, podprta z logično vrednostjo. Ta vrsta podatkov združuje besedilno oznako, ki jo je mogoče lokalizirati, z logično vrednostjo. Oznaka je prikazana v aplikaciji, logična vrednost pa se shrani in uporabi za primerjave. ThisItem.Taxable

Veliko teh vrst podatkov je podobnih in ima isto temeljno ponazoritev, na primer polje Hiperpovezava je obravnavano kot Besedilo. Dodatne vrste podatkov zagotavljajo boljše privzete izkušnje v obrazcih in drugih kontrolnikih.

Prazno

Vse vrste podatkov lahko imajo vrednost prazno (z drugimi besedami, so brez vrednosti). Za ta koncept se v zbirkah podatkov pogosto uporablja izraz »null«.

Uporabite funkcijo Blank s funkcijo Set ali Patch, da nastavite spremenljivko ali polje na prazno. Na primer, Set( x, Blank() ) odstrani katero koli vrednost v globalni spremenljivki x.

Preskusite za prazno vrednost z uporabo funkcije IsBlank. Zamenjajte morebitne prazne vrednosti z ne praznimi vrednostmi z uporabo funkcije Coalesce.

Ker vse vrste podatkov podpirajo prazno, imata vrsti podatkov Logični in Dve možnosti dejansko tri mogoče vrednosti.

Vse te štiri vrste podatkov temeljijo na besedilnem nizu Unicode.

Vdelano besedilo

Nizi vdelanega besedila v formuli so obdani z dvojnimi narekovaji. Uporabite dva dvojna narekovaja skupaj, da bosta predstavljala eno dvojni narekovaj v besedilnem nizu. Na primer, z uporabo naslednje formule v lastnosti OnSelect kontrolnika Button:

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

ob pritisku gumba nastane pasica, kjer sta prvi in zadnji dvojni narekovaj izpuščena (saj ločujeta besedilni niz), okoli fraze Hello, World! pa sta ponovljena dvojna narekovaja nadomeščena s po enim dvojnim narekovajem:

Pojavno obvestilo s sporočilom »Jane said "Hello, World"«

Enojni narekovaji se ne uporabljajo za imena identifikatorjev, ki vsebujejo posebne znake in niso pomembna v besedilnem nizu.

Slikovni in predstavnostni viri

Prek menija Datoteka lahko dodate slikovne, video in avdio datoteke kot vire aplikacije. Ime uvožene datoteke postane ime vira v aplikaciji. V tej grafiki je bil v aplikacijo dodan logotip Northwind Traders, ki je poimenovan nwindlogo:

Vir Northwind.

Za uporabo tega vira v aplikaciji določite vir v lastnosti Slika kontrolnika Slika:

Slika Northwind.

URI-ji za slike in druge predstavnosti

Zadnji primer lahko pogledamo podrobneje, tako da nastavimo lastnost Besedilo kontrolnika Label na nwindlogo. Oznaka prikazuje besedilni niz:

Besedilo Northwind

Power Fx se sklicuje na vsako sliko ali drugo večpredstavnostno datoteko, ne glede na to, ali je v oblaku ali je dodana kot vir aplikacije z besedilnim nizom URI.

Na primer, lastnost Slika kontrolnika slike sprejema ne samo vire aplikacij, ampak tudi povezave do slik na spleti, kot je »https://northwindtraders.com/logo.jpg«. Lastnost sprejema tudi slike v vrstici, ki uporabljajo shemo URI podatkov, kot v tem primeru:

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

Ta URI prikazuje povečano različico dveh vijoličnih diamantov:

Dva diamanta.

Prikažete lahko najnovejšo sliko, zajeto s kontrolnikom Camera, če nastavite lastnost Slika slikovnega kontrolnika na lastnost Photo kontrolnika kamere. Aplikacija ohrani sliko v pomnilniku in lastnost Photo kontrolnika kamere vrne sklic URI na sliko. Na primer, lahko posnamete fotografijo in lastnost Photo kamere bi lahko vrnila "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

URI uporabite za sklicevanje na sliko ali drugo predstavnostno datoteko, shranjeno v zbirki podatkov. Na ta način aplikacija ne pridobi dejanskih podatkov, dokler niso potrebni. Na primer, priloga v entiteti Microsoft Dataverse bi lahko vrnila "appres://datasources/Contacts/table/..." Kot v primeru kamere lahko prikažete to sliko z nastavitvijo lastnosti Slika kontrolnika slike na ta sklic, ki pridobi binarne podatke.

KO shranite vrsto predstavnostnih podatkov, kot je slika, v zbirko podatkov, aplikacija pošlje dejansko sliko ali predstavnostne podatke, ne pa sklica URI.

Omejitve velikosti

Kot besedilni nizi in URI-ji te vrste podatkov nimajo prednastavljene omejitve dolžine.

Binarni podatki, na katere se nanašajo te vrste podatkov, tudi nimajo prednastavljenih omejitev glede velikosti. Na primer, slika, posneta prek kontrolnika kamere, na katero je zdaj podan sklic "appres://...", je lahko tako velika in ima tako visoko ločljivost, kot omogoča kamera. Ločljivost, hitrost sličic in drugi atributi predstavnostnih datotek niso omejeni na vrsto podatkov, specifični kontrolniki za predvajanje in zajemanje predstavnosti pa lahko imajo svoje omejitve.

Vse velikosti podatkov pa so odvisne od količine razpoložljivega pomnilnika v aplikaciji. Brskalniki, ki se izvajajo v namiznem računalniku, običajno podpirajo več kot 100 MB podatkov. A v napravi, kot je telefon, je lahko količina razpoložljivega pomnilnika precej nižja, običajno v razponu 30–70 MB. Da bi ugotovili, ali se bo vaša aplikacija izvajala v okviru teh omejitev, preskusite splošne scenarije na vseh napravah, na katerih naj bi se izvajala.

Priporočamo, da podatke zadržite v pomnilniku, tako dolgo, kot je potrebno. Takoj ko je mogoče, naložite slike v zbirko podatkov; slike prenesite samo, ko jih uporabnik aplikacije zahteva.

Številka in valuta

Vrsti podatkov Številka in Valuta uporabljata standard IEEE 754 za plavajočo vejico z dvojno natančnostjo. Ta standard zagotavlja širok razpon števil za delo, od –1,79769 x 10308 do 1,79769 x 10308. Najmanjša vrednost, ki je lahko zastopana, je 5 x 10–324.

Power Fx lahko natančno prikaže cela števila med in vključno z –9.007.199.254.740.991 (–(253 – 1)) in 9.007.199.254.740.991 (253 – 1). Ta obseg je večji od 32-bitnih (ali 4-bajtnih) vrst podatkov celih števil, ki jih zbirke podatkov splošno uporabljajo. Vendar Power Fx ne more predstavljati 64-bitnih (ali 8-bajtnih) vrst podatkov celih števil. Številko je morda dobro shraniti v besedilno polje ali uporabiti stolpec z izračunom, da naredite kopijo številke v besedilnem polju, tako da se preslika v vrsto podatkov Besedilo v aplikaciji Power Fx. Na ta način lahko te vrednosti zadržite, prikažete in vnesete ter jih medsebojno primerjate, da ugotovite, ali so enake; vendar na tak način ne morete zanje izvajati numeričnih izračunov.

Aritmetika s plavajočo vejico je približek, zato lahko občasno poda nepričakovane rezultate z veliko dokumentiranimi primeri. Lahko bi pričakovali, da formula 55 / 100 * 100 vrne točno 55 in (55 / 100 * 100) - 55 vrne točno nič. Zadnja formula pa kljub temu vrne 7,1054 x 10–15, kar je majhno število, vendar ne nič. Ta majhna razlika običajno ne povzroča težave in aplikacijo jo odstrani z zaokroževanjem, ko je prikazan rezultat. Toda majhne razlike se lahko v nadaljnjih izračunih povečujejo in na videz dajejo napačen odgovor.

Sistemi zbirk podatkov pogosto shranjujejo valute in izvajajo izračune z uporabo desetiške matematike, ki ponuja manjši razpon, a večji nadzor nad natančnostjo. Aplikacije Power Fx privzeto preslikavajo valute v in iz vrednosti s plavajočo vejico; zato se lahko rezultat razlikuje od izračunov, izvedenih v izvorni vrsti podatkov z decimalnim številom. Če bo ta vrsta odstopanja povzročala težave, bi morda želeli delati s temi vrednostmi kot Besedilo, tako kot bi lahko z velikimi celimi števili, opisanimi prej v tem razdelku.

Datum, čas in DateTime

Časovni pasovi

Vrednosti datuma/časa spadajo v te kategorije:

  • Lokalno pri uporabniku: Te vrednosti so shranjene v UTC (usklajen univerzalni čas), toda uporabnikov časovni pas vpliva na to, kako aplikacija prikazuje te vrednosti in kako jih uporabnik aplikacije določa. Primer je, da je isti trenutek prikazan drugače uporabniku v Kanadi, kot uporabniku na Japonskem.
  • Neodvisno od časovnega pasu: Aplikacije prikazuje te vrednosti na isti način in uporabnik aplikacije jih določi na isti način, ne glede na časovni pas. Isti trenutek je prikazan na isti način uporabniku v Kanadi in uporabniku na Japonskem. Ustvarjalci aplikacij, ki ne pričakujejo, da se bodo njihove aplikacije izvajale v različnih časovnih pasovih, uporabljajo te vrednosti, ker so na splošno preprostejše.

Ta tabela prikazuje nekaj primerov:

Vrsta datuma/časa Vrednost, shranjena v zbirki podatkov Vrednost, prikazana in vnesena 7 ur zahodno od UTC Vrednost, prikazana in vnesena 4 ure vzhodno od UTC
Lokalno pri uporabniku Nedelja, 19. maj 2019
4:00
Sobota, 18. maj 2019
21:00
Nedelja, 19. maj 2019
8:00
Neodvisno od časovnega pasu Nedelja, 19. maj 2019
4:00
Nedelja, 19. maj 2019
4:00
Nedelja, 19. maj 2019
4:00

Znotraj aplikacije Power Apps storitev Power Fx za datum/čas Lokalno pri uporabniku uporablja časovni pas brskalnika ali naprave, aplikacije, ki temeljijo na modelu, pa uporabljajo uporabniško nastavitev v storitvi Dataverse. Te nastavitve se običajno ujemajo, toda rezultati se razlikujejo, če se te nastavitve razlikujejo.

Uporabite funkciji DateAdd in TimeZoneInformation za pretvorbo lokalnega časa v UTC in spet nazaj. Glejte primere na koncu dokumentacije za ti funkciji.

Številski ekvivalenti

Power Fx hrani in izračuna vse vrednosti datuma/časa, ne glede na to, ali je možnost Lokalno pri uporabniku oziroma Neodvisno od časovnega pasu v časovnem pasu UTC. Aplikacija prevede vrednosti na podlagi časovnega pasu uporabnika aplikacije, ko jih prikaže in ko jih uporabnik aplikacije določi.

Ko Power Fx prebere vrednost Neodvisno od časovnega pasu iz vira podatkov ali zapiše takšno vrednost v vir podatkov, aplikacija samodejno prilagodi vrednost, da nadomesti časovni pas uporabnika aplikacije. Aplikacija nato obravnava vrednost kot vrednost UTC, skladno z vsemi drugimi vrednostmi datuma/časa v aplikaciji. Zaradi te izravnave je prikazana izvorna vrednost Neodvisno od časovnega pasu, ko uporabnik prilagodi vrednost UTC za časovni pas uporabnika aplikacije.

To vedenje lahko podrobneje opazujete, tako da uporabite funkcijo Value za dostop do temeljne številčne vrednosti za vrednost datuma/časa. Ta funkcija vrne vrednost datuma/časa kot število milisekund od 1. januarja 1970, 00:00:00.000 UTC.

Ker je vsaka vrednost datuma/časa zadržana v UTC, formula Value( Date( 1970, 1, 1 ) ) ne bo vrnila nič v večini predelov sveta, ker funkcija Date vrne datum v UTC. Na primer, formula bi vrnila 28.800.000 v časovnem pasu, ki je odmaknjen od UTC za osem ur. To število odraža število milisekund v osmih urah.

Če se vrnemo na naš zgornji primer:

Vrsta datuma/časa Vrednost, shranjena v zbirki podatkov Vrednost, prikazana in vnesena 7 ur zahodno od UTC Funkcija Value vrne
Lokalno pri uporabniku Nedelja, 19. maj 2019
4:00
Sobota, 18. maj 2019
21:00
1,558,238,400,000
(Nedelja, 19. maj 2019,
4:00 UTC)
Neodvisno od časovnega pasu Nedelja, 19. maj 2019
4:00
Nedelja, 19. maj 2019
4:00
1,558,263,600,000
(Nedelja, 19. maj 2019,
11:00 UTC)

Pretvorba časov Unix

Časi Unix odražajo število sekund od 1. januarja 1970, 00:00:00 UTC. Ker Power Fx namesto sekund uporablja milisekunde, jih lahko medsebojno pretvorite tako, da pomnožite ali delite s 1000.

Na primer, čas Unix prikazuje 9. september 2001, ob 01:46:40 UTC kot 1.000.000.000. Če želite to vrednost datuma/času prikazati kot besedilo, pomnožite to število s 1000, da jo pretvorite v milisekunde, in jo nato uporabite v funkciji Besedilo. Formula Text( 1000000000 * 1000, DateTimeFormat.UTC ) vrne niz 2001-09-09T01:46:40.000Z.

Toda funkcija vrne Sobota, 8. september, 2001 18:46:40, če uporabite obliko zapisa DateTimeFormat.LongDateTime24 v časovnem pasu, ki je -7 ur odmaknjen od UTC (7 zahodno od UTC). Ta rezultat prikaže vrednost DateTime pravilno na podlagi lokalnega časovnega pasu.

Za pretvorbo v čas Unix, delite rezultat iz možnosti Vrednost s 1000:
RoundDown( Value( UnixTime ) / 1000, 0 )

Če potrebujete čas Unix v vrednosti Date za nadaljnje izračune ali prikaz v storitvi Power Apps, uporabite to formulo:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )

SQL Server

SQL Server ima Datetime, Datetime2 in druge podatke datuma/časa, ki ne vključujejo odmika časovnega pasu in ne navajajo, v katerem časovnem pasu so. Power Fx predpostavlja, da so te vrednosti shranjene v UTC, in jih obravnava kot Lokalno pri uporabniku. Če naj bi bile vrednosti neodvisne od časovnega pasu, popravite prevode UTC z uporabo funkcije TimeZoneOffset.

Power Fx uporablja informacije o časovnem pasu v polju Datetimeoffset pri pretvorbi vrednosti v interni zapis UTC aplikacije. Aplikacije vedno uporabljajo UTC kot časovni pas (ničelni odmik časovnega pasu), ko zapisujejo podatke.

Power Fx bere in zapisuje vrednosti vrste podatkov Čas v strežniku SQL kot besedilne nize v obliki zapisa za trajanje ISO 8601. Na primer, morate razčleniti to obliko zapisa niza in uporabiti funkcijo Time za pretvorbo besedilnega niza "PT2H1M39S" v vrednost Čas:

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)

Mešanje informacij datuma in časa

Datum, Čas in DateTime imajo drugačna imena, toda vsi držijo iste informacije o datumih in časih.

Vrednost Datum lahko vključuje informacije o času, ki je običajno polnoč. Vrednost Čas lahko vsebuje informacije o datumu, ki je običajno 1. januar 1970. Dataverse prav tako shranjuje informacije o času s poljem Samo datum, toda privzeto prikazuje samo informacije o datumu. Na podoben način Power Fx včasih razlikuje med temi vrstami podatkov, da določi privzete oblike zapisov in kontrolnike.

Neposredno seštevanje in odštevanje vrednosti datuma in časa ni priporočeno, ker bi lahko časovni pas in druge pretvorbe povzročili nejasne rezultate. Uporabite bodisi funkcijo Value, da najprej pretvorite vrednosti datuma/časa v milisekunde in upoštevate časovni pas uporabnika aplikacije, ali uporabite funkciji DateAdd in DateDiff, da prištejete ali odštejete od ene od teh vrednosti.

Nabori možnosti in dve možnosti

Vrste podatkov naborov možnosti in dveh možnosti zagotavljajo dve ali več izbir, ki jih lahko uporabnik aplikacije izbere. Na primer, nabor možnosti Stanje naročila bi lahko ponujal izbire Novo, Poslano, Fakturirano in Zaprto. Vrsta podatkov dveh možnosti ponuja samo dve izbiri.

Obe vrsti podatkov prikazujeta svoje oznake v kontekstu besedilnega niza. Na primer, kontrolnik oznake prikazuje eno od možnosti stanja naročila, če je lastnost Besedilo kontrolnika nastavljena na formulo, ki se sklicuje na ta nabor možnosti. Oznake možnosti so lahko lokalizirane za uporabnike aplikacije na različnih lokacijah.

Ko uporabnik izbere možnost in shrani spremembe, aplikacija prenese podatke v zbirko podatkov, ki shrani te podatke v ponazoritvi, ki je neodvisna od jezika. Možnost v naboru možnosti je prenesena in shranjena kot številka, možnost v vrsti podatkov dveh možnosti pa je prenesena in shranjena kot logična vrednost.

Oznake so samo za namene prikaza. Ni mogoče izvesti neposrednih primerjav z oznakami, ker so specifične za jezik. Namesto tega ima vsak nabor možnosti oštevilčenje, ki deluje s temeljno številko ali logično vrednostjo. Te formule na primer ne morete uporabiti:

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

Lahko pa uporabite to formulo:

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

Za globalne nabore možnosti (ki si jih entitete delijo), se ime oštevilčenje nabora možnosti ujema z imenom globalnega nabora možnosti. Za lokalne nabore možnosti (ki so dodeljene entiteti) lahko ime vsebuje ime entitete. To vedenje preprečuje spore, če ima več entitet nabore možnosti, ki imajo isto ime. Na primer, entiteta Accounts lahko ima nabor možnosti OrderStatus in njeno ime je lahko OrderStatus (Kupci). Ime vsebuje enega ali več presledkov in oklepajev, zato ga morate obdati z enojnimi narekovaji, če se sklicujete nanj v formuli.

Poleg tega se vrednosti dveh možnosti lahko vedejo tudi kot logične vrednosti. Na primer, vrednost dveh možnosti, imenovana TaxStatus lahko ima oznaki Obdavčljivo in Neobdavčljivo, ki ustrezata vrednostma true in false. Če ponazorimo, to pomeni, da lahko uporabite to formulo:

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

Lahko pa uporabite tudi to enakovredno formulo:

If( ThisItem.Taxable, ...