Tietomallissa jokaiseen sarakkeeseen on liitetty tietotyyppi, joka määrittää, minkä tyyppisiä tietoja sarakkeessa voi olla: kokonaislukuja, desimaalilukuja, tekstiä, valuuttatietoja, päivämääriä ja kellonaikoja. Tietotyyppi määrittää myös, minkälaisia toimintoja sarakkeessa voi tehdä ja kuinka paljon muistia sarakkeeseen tallennettaviin arvoihin tarvitaan.
Jos käytät Power Pivot -apuohjelmaa, voit muuttaa sarakkeen tietotyypin. Voit joutua tekemään näin, jos päivämääräsarake tuotiin merkkijonona, mutta tarvitset sen olevan jotain muuta. Lisätietoja on artikkelissa Sarakkeen tietotyypin määrittäminen Power Pivotissa.
Artikkelin sisältö
Yhteenveto tietotyypeistä
Seuraavassa taulukossa on lueteltu tietomallissa tuetut tietotyypit. Kun tuot tietoja tai käytät arvoa kaavassa, tiedot muunnetaan joksikin näistä tietotyypeistä, vaikka alkuperäinen tietolähde sisältäisi eri tietotyypin. Myös kaavoista muodostuvat arvot käyttävät näitä tietotyyppejä.
| Tietotyyppi Excelissä | Tietotyyppi DAX-kielessä | Kuvaus |
|---|---|---|
| Kokonaisluku | 64-bittinen (kahdeksan tavua) kokonaislukuarvo 1, 2 | Luvut, joissa ei ole desimaaleja. Kokonaisluvut voivat olla positiivisia tai negatiivisia lukuja, mutta niiden on oltava kokonaislukuja väliltä -9 223 372 036 854 775 808 (-2^63) ja 9 223 372 036 854 775 807 (2^63-1). |
| Desimaaliluku | 64-bittinen (kahdeksan tavua) reaaliluku 1, 2 | Reaaliluvut ovat lukuja, joissa voi olla desimaaleja. Reaaliluvut kattavat laajan arvoalueen: Negatiiviset arvot väliltä -1,79E +308 ja -2,23E -308 Nolla Positiiviset arvot 2,23E -308 – 1,79E + 308 Merkitsevien numeroiden määrä on kuitenkin rajoitettu 15 desimaaliin. |
| TOSI/EPÄTOSI | totuusarvo | Tosi- tai epätosi-arvon. |
| Teksti | String | Unicode-merkin tietomerkkijono. Voi olla merkkijonoja, numeroita tai päivämääriä tekstimuodossa. Merkkijonon enimmäispituus on 268 435 456 Unicode-merkkiä (256 megamerkkiä) tai 536 870 912 tavua. |
| Päivämäärä | Päivämäärä/kellonaika | Päivämäärät ja kellonajat hyväksytyssä päivämäärä- ja kellonaikamuodossa. Kelvollisia päivämääriä ovat kaikki päivämäärän 1.1.1900 jälkeen olevat päivämäärät. |
| Valuutta | Valuutta | Valuutta-tietotyyppi sallii arvot väliltä -922 337 203 685 477,5808–922 337 203 685 477,5807 neljän desimaalin tarkkuudella. |
| – | Tyhjä | Tyhjä on DAX-kielen tietotyyppi, joka edustaa ja korvaa SQL:n tyhjäarvoja. Voit luoda tyhjän TYHJÄ-funktiolla ja testata tyhjät solut loogisella funktiolla ONTYHJÄ. |
1 DAX-kaavat eivät tue taulukossa lueteltuja tietotyyppejä.
2 Jos yrität tuoda tietoja, joissa on hyvin suuria numeerisia arvoja, tuonti saattaa epäonnistua ja näyttöön saattaa tulla seuraava virhesanoma:
Muistissa oleva tietokantavirhe: Taulukon< nimi> -taulukon sarakkeen< nimi> -sarake sisältää arvon 1.7976931348623157e+308, jota ei tueta. Toiminto on peruutettu.
Tämä virhe ilmenee, koska Power Pivot käyttää kyseistä arvoa tyhjäarvojen esittämiseen. Seuraavan luettelon arvot ovat tyhjäarvon synonyymejä:
| Arvo |
|---|
| 9223372036854775807 |
| -9223372036854775808 |
| 1,7976931348623158e+308 |
| 2.2250738585072014E-308 |
Poista arvo tiedoista ja yritä tuoda tiedot uudelleen.
Taulukon tietotyyppi
DAX käyttää taulukkotietotyyppiä monissa funktioissa, kuten koosteissa ja aikatietojen laskutoimituksissa. Jotkin funktiot edellyttävät taulukkoviittauksen. Toiset funktiot palauttavat taulukon, jota voi sitten käyttää muiden funktioiden syötteenä. Joissakin funktioissa, jotka edellyttävät syötteenä taulukkoa, voit määrittää lausekkeen, joka palauttaa taulukon. Joidenkin funktioiden kohdalla on käytettävä viittausta perustaulukkoon. Lisätietoja tiettyjen funktioiden vaatimuksista on DAX-funktiohakemistossa.
DAX-kaavojen implisiittinen ja eksplisiittinen tietotyypin muuntaminen
Kullakin DAX-funktiolla on omat vaatimuksensa syötteinä ja tuotoksina käytettävien tietotyyppien suhteen. Jotkin funktiot edellyttävät esimerkiksi kokonaislukuja joillekin argumenteille ja päivämääriä toisille. Muut funktiot edellyttävät tekstiä tai taulukoita.
Jos argumentiksi määritetyn sarakkeen tiedot eivät ole yhteensopivia funktion edellyttämän tietotyypin kanssa, DAX palauttaa usein virheen. DAX yrittää kuitenkin aina kun se on mahdollista, muuntaa tiedot epäsuorasti pakolliseksi tietotyypiksi. Esimerkki:
- Voit kirjoittaa päivämäärän merkkijonona, jolloin DAX jäsentää merkkijonon ja yrittää luoda sen johonkin Windowsin päivämäärä- ja kellonaikamuotoon.
- Voit lisätä tuloksen TOSI + 1 ja saada tulokseksi 2, koska TOSI muunnetaan implisiittisesti luvuksi 1 ja toiminto 1+1 suoritetaan.
- Jos lasket arvoja yhteen kahdessa sarakkeessa ja toinen arvo esitetään tekstinä ("12") ja toinen lukuna (12), DAX implisiittisesti muuntaa merkkijonon luvuksi ja laskee sitten yhteen numeerisen tuloksen. Seuraava lauseke palauttaa arvon 44: = "22" + 22
- Jos yrität ketjuttaa kaksi lukua, Excel esittää ne merkkijonoina ja yhdistää ne sen jälkeen. Seuraava lauseke palauttaa arvon "1234": = 12 & 34
Seuraavassa taulukossa on yhteenveto kaavoissa suoritetuista implisiittisistä tietotyyppimuunnoksista. Excel suorittaa implisiittiset muunnokset määritetyn toiminnon edellyttämällä tavalla, kun se on mahdollista.
Implisiittisten tietomuunnosten taulukko
Operaattori määrittää suoritettavan muunnon tyypin, joka määrittää tarvitsemansa arvot ennen pyydetyn toiminnon suorittamista. Näissä taulukoissa luetellaan operaattorit ja ilmoitetaan muunnos, joka suoritetaan kullekin sarakkeen tietotyypille, kun se yhdistetään leikkaavan rivin tietotyyppiin.
Huomautus
Tekstitietotyypit eivät sisälly näihin taulukoihin. Kun luku esitetään tekstimuodossa, Power Pivot yrittää joissakin tapauksissa määrittää luvun tyypin ja esittää sen lukuna.
Yhteenlasku (+)
| Operaattori (+) | INTEGER | VALUUTTA | REAL | Päivämäärä/kellonaika |
|---|---|---|---|---|
| INTEGER | INTEGER | VALUUTTA | REAL | Päivämäärä/kellonaika |
| VALUUTTA | VALUUTTA | VALUUTTA | REAL | Päivämäärä/kellonaika |
| REAALI | REAALI | REAALI | REAALI | Päivämäärä/kellonaika |
| Päivämäärä/kellonaika | Päivämäärä/kellonaika | Päivämäärä/kellonaika | Päivämäärä/kellonaika | Päivämäärä/kellonaika |
Jos esimerkiksi yhteenlaskussa käytetään reaalilukua yhdessä valuuttatietojen kanssa, molemmat arvot muunnetaan REAL-arvoiksi ja tulos palautetaan REAL-arvona.
Vähennyslasku (-)
Seuraavassa taulukossa rivin otsikko on miinusotsikko (vasen puoli) ja sarakeotsikko on alareuna (oikea puoli).
| Operaattori (-) | INTEGER | VALUUTTA | REAL | Päivämäärä/kellonaika |
|---|---|---|---|---|
| INTEGER | INTEGER | VALUUTTA | REAALI | REAALI |
| VALUUTTA | VALUUTTA | VALUUTTA | REAALI | REAALI |
| REAALI | REAALI | REAALI | REAALI | REAALI |
| Päivämäärä/kellonaika | Päivämäärä/kellonaika | Päivämäärä/kellonaika | Päivämäärä/kellonaika | Päivämäärä/kellonaika |
Jos päivämäärää käytetään esimerkiksi vähennyslaskussa minkä tahansa muun tietotyypin kanssa, molemmat arvot muunnetaan päivämääriksi ja myös palautusarvo on päivämäärä.
Huomautus
Tietomallit tukevat myös unaarista operaattoria - (negatiivinen), mutta tämä operaattori ei muuta operandin tietotyyppiä.
Kertolasku (*)
| Operaattori (*) | INTEGER | VALUUTTA | REAL | Päivämäärä/kellonaika |
|---|---|---|---|---|
| INTEGER | INTEGER | VALUUTTA | REAL | INTEGER |
| VALUUTTA | VALUUTTA | REAL | VALUUTTA | VALUUTTA |
| REAALI | REAALI | VALUUTTA | REAALI | REAALI |
Jos kertolaskutoiminnossa esimerkiksi kokonaisluku yhdistetään reaalilukuun, molemmat luvut muunnetaan reaaliluvuiksi ja myös palautusarvo on REAALI.
Jakolasku (/)
Seuraavassa taulukossa riviotsikko on osoittaja ja sarakeotsikko nimittäjä.
| Operaattori (/) (rivi/sarake) |
INTEGER | VALUUTTA | REAL | Päivämäärä/kellonaika |
|---|---|---|---|---|
| INTEGER | REAL | VALUUTTA | REAALI | REAALI |
| VALUUTTA | VALUUTTA | REAL | VALUUTTA | REAALI |
| REAALI | REAALI | REAALI | REAALI | REAALI |
| Päivämäärä/kellonaika | REAALI | REAALI | REAALI | REAALI |
Jos kokonaisluku yhdistetään esimerkiksi valuutta-arvoon jakolaskutoimituksessa, molemmat arvot muunnetaan reaaliluvuiksi ja myös tulos on reaaliluku.
Vertailuoperaattorit
Vertailulausekkeissa totuusarvoja pidetään suurempina kuin merkkijonoarvoja ja merkkijonoarvoja suurempina kuin numeerisia arvoja tai päivämäärä- ja aika-arvoja. Luvuilla ja päivämäärä-/aika-arvoilla katsotaan olevan sama sijainti. Totuusarvoille tai merkkijonoarvoille ei suoriteta implisiittisiä muunnoksia. TYHJÄ tai tyhjä arvo muunnetaan arvoksi 0/""/false toisen vertailun arvon tietotyypin mukaan.
Tätä havainnollistavat seuraavat DAX-lausekkeet:
=JOS(EPÄTOSI()>"tosi","Lauseke on tosi", "Lauseke on epätosi"), palauttaa arvon "Lauseke on tosi"
=JOS("12">12,"Lauseke on tosi", "Lauseke on epätosi"), palauttaa arvon "Lauseke on tosi".
=JOS("12"=12;"Lauseke on tosi", "Lauseke on epätosi") palauttaa arvon "Lauseke on epätosi"
Muunnokset suoritetaan implisiittisesti numeerisille tyypeille tai päivämäärä- ja aikatyypeille seuraavassa taulukossa kuvatulla tavalla:
| Vertailuoperaattori | INTEGER | VALUUTTA | REAL | Päivämäärä/kellonaika |
|---|---|---|---|---|
| INTEGER | INTEGER | VALUUTTA | REAALI | REAALI |
| VALUUTTA | VALUUTTA | VALUUTTA | REAALI | REAALI |
| REAALI | REAALI | REAALI | REAALI | REAALI |
| Päivämäärä/kellonaika | REAALI | REAALI | REAALI | Päivämäärä/kellonaika |
Sivun alkuun
Tyhjien merkkijonojen ja nolla-arvojen käsittely
DAX-kielessä tyhjää arvoa, tyhjää arvoa, tyhjää solua tai puuttuvaa arvoa edustaa sama uusi arvotyyppi eli BLANK. Voit myös luoda tyhjiä soluja TYHJÄT-funktiolla tai testata tyhjiä arvoja ONTYHJÄ-funktiolla.
Se, miten tyhjiä paloja käsitellään toiminnoissa, kuten yhteenlaskussa tai ketjutuksessa, riippuu yksittäisestä funktiosta. Seuraavassa taulukossa on yhteenveto DAX- ja Microsoft Excel -kaavojen välisistä eroista tyhjien tietojen käsittelyssä.
| Expression | DAX-kieli | Excel |
|---|---|---|
| TYHJÄ + TYHJÄ | TYHJÄ | 0 (nolla) |
| TYHJÄ +5 | 5 | 5 |
| TYHJÄ * 5 | TYHJÄ | 0 (nolla) |
| 5/BLANK | Ääretön | Virhe |
| 0/TYHJÄ | NaN | Virhe |
| TYHJÄ/TYHJÄ | TYHJÄ | Virhe |
| EPÄTOSI TAI TYHJÄ | EPÄTOSI | EPÄTOSI |
| EPÄTOSI JA TYHJÄ | EPÄTOSI | EPÄTOSI |
| TOSI TAI TYHJÄ | TOSI | TOSI |
| TOSI JA TYHJÄ | EPÄTOSI | TOSI |
| TYHJÄ TAI TYHJÄ | TYHJÄ | Virhe |
| TYHJÄ JA TYHJÄ | TYHJÄ | Virhe |
Lisätietoja siitä, miten tietty funktio tai operaattori käsittelee tyhjiä kohtia, on kunkin DAX-funktion omassa ohjeaiheessa DAX-funktioiden opas.
Sivun alkuun