Sivutetun raportin lausekkeiden tietotyypit (Power BI:n raportin muodostin)
KOSKEE: Power BI Report Builder
Power BI Desktop
Tietotyypit edustavat sivutetussa raportissa erityyppisiä tietoja, jotta ne voidaan tallentaa ja käsitellä tehokkaasti. Tyypillisiä tietotyyppejä ovat teksti (tunnetaan myös merkkijonoina), luvut desimaalien kanssa ja ilman desimaaleja, päivämääriä ja aikoja sekä kuvia. Raportin arvojen on oltava RDL-tietotyyppi. Voit muotoilla arvon haluamallasi tavalla, kun näet sen raportissa. Esimerkiksi valuuttaa edustava kenttä tallennetaan raporttimääritykseen liukulukuna, mutta se voidaan näyttää eri muodoissa valitsemasi muotoiluominaisuuden mukaan.
Saat lisätietoja näyttömuodoista ohjeartikkelista Raporttikohteiden muotoilu (Power BI:n raportin muodostin).
Report Definition Language (RDL) -tietotyypit ja common language runtime (CLR) -tietotyypit
RDL-tiedostossa määritettyjen arvojen on oltava RDL-tietotyyppiä. Kun raportti on käännetty ja käsitelty, RDL-tietotyypit muunnetaan CLR-tietotyypeiksi. Seuraavassa taulukossa näytetään muunto, joka on merkitty Oletus-merkinnällä:
RDL-tyyppi | CLR-tyypit |
---|---|
Merkkijono | Oletus: merkkijono Chart, GUID, Timespan |
Boolean | Oletus: totuusarvo |
Integer | Oletus: Int64 Int16, Int32, Uint16, Uint64, Byte, Sbyte |
DateTime | Oletus: Päivämäärä ja aika DateTimeOffset |
Kellua | Oletus: Double Yksittäinen, desimaali |
Binaarinen | Oletus: Tavu[] |
Variantti | Mikä tahansa edellä mainituista paitsi Tavu[] |
VariantArray | Variantin matriisi |
Sarjoitettava | Variantti tai tyypit, jotka on merkitty sarjoitettavalla tai joissa on ISerializable. |
Tutustu tietotyyppeihin ja kirjoituslausekkeisiin
Tietotyyppien ymmärtäminen on tärkeää, kun kirjoitat lausekkeita arvojen vertailemista tai yhdistämistä varten, esimerkiksi kun määrität ryhmä- tai suodatinlausekkeita tai lasket koosteita. Vertailut ja laskutoimitukset ovat kelvollisia vain saman tietotyypin kohteiden välillä. Jos tietotyypit eivät täsmää, sinun on muunnettava raporttikohteen tietotyyppi eksplisiittisesti käyttämällä lauseketta.
Seuraavassa luettelossa kuvataan tapauksia, joissa tietoja on ehkä muunnettava eri tietotyypiksi:
Yhden tietotyypin raporttiparametrin arvon vertaaminen eri tietotyypin tietojoukkokenttään.
Kirjoitetaan suodatinlausekkeita, jotka vertaavat eri tietotyyppien arvoja.
Kirjoitetaan lajittelulausekkeita, jotka yhdistävät eri tietotyyppien kenttiä.
Kirjoitetaan ryhmälausekkeita, jotka yhdistävät eri tietotyyppien kenttiä.
Tietolähteestä noudetun arvon muuntaminen yhdestä tietotyypistä toiseen tietotyyppiin.
Raporttitietojen tietotyypin määrittäminen
Raporttikohteen tietotyypin määrittämiseksi voit kirjoittaa lausekkeen, joka palauttaa sen tietotyypin. Jos haluat esimerkiksi näyttää kentän MyField
tietotyypin, lisää seuraava lauseke taulukkosoluun: =Fields!MyField.Value.GetType().ToString()
. Tulos näyttää CLR-tietotyypin, jota käytetään edustamaan MyField
esimerkiksi system.stringia tai system.datetime-tietotyyppiä.
Tietojoukon kenttien muuntaminen eri tietotyypiksi
Voit myös muuntaa tietojoukkokenttiä, ennen kuin käytät niitä raportissa. Seuraavassa luettelossa kuvataan tapoja, joilla voit muuntaa aiemmin luodun tietojoukkokentän:
Muokkaa tietojoukon kyselyä ja lisää uusi kyselykenttä muunnettujen tietojen kanssa. Jos kyseessä on relaatiotietolähde tai monidimensioinen tietolähde, tämä käyttää tietolähderesursseja muunnoksen suorittamiseen.
Luo aiemmin luotuun raportin tietojoukkokenttään perustuva laskettu kenttä kirjoittamalla lauseke, joka muuntaa kaikki yhden tulosjoukon sarakkeen tiedot uudeksi sarakkeeksi, jolla on eri tietotyyppi. Esimerkiksi seuraava lauseke muuntaa kentän Vuosi kokonaislukuarvosta merkkijonoarvoksi:
=CStr(Fields!Year.Value)
. Lisätietoja on artikkelissa Lisää, muokkaa, päivitä kentät raporttitietoruudussa (Power BI:n raportin muodostin).Tarkista, sisältääkö käyttämäsi tietojen käsittelylaajennuksessa metatietoja esimuotoilmoimien tietojen noutamiseen. Esimerkiksi SQL Server Analysis Servicesin MDX-kysely sisältää FORMATTED_VALUE laajennetun ominaisuuden kuutioarvoille, jotka on jo muotoiltu kuutiota käsiteltäessä. Lisätietoja on artikkelissa Analysis Services -tietokannan (SSRS) laajennetut kentän ominaisuudet.
Tutustu parametritietotyyppeihin
Raporttiparametrien on oltava yksi viidestä tietotyypistä: totuusarvo, päivämäärä/aika, kokonaisluku, liukuluku tai teksti (tunnetaan myös nimillä Merkkijono). Kun tietojoukkokysely sisältää kyselyparametreja, raporttiparametrit luodaan ja linkitetään automaattisesti kyselyparametreihin. Raporttiparametrin oletustietotyyppi on Merkkijono. Jos haluat muuttaa raporttiparametrin oletustietotyyppiä, valitse oikea arvo avattavasta Tietotyyppi-luettelosta Raporttiparametrin ominaisuudet -valintaikkunan Yleiset-sivulla.
Muistiinpano
Raporttiparametrit, jotka ovat DateTime-tietotyyppejä, eivät tue millisekunteja. Vaikka voit luoda parametrin, joka perustuu millisekunteja käyttäviin arvoihin, et voi valita arvoa avattavasta käytettävissä olevien arvojen luettelosta, joka sisältää millisekunteja sisältävät päivämäärä- tai aika-arvot.
Kirjoita lausekkeita, jotka muuntavat tietotyyppejä tai poimivat tietojen osia
Kun yhdistät teksti- ja tietojoukkokenttiä käyttämällä ketjutusoperaattoria (&), yleinen kielen suorituspalvelu (CLR) tarjoaa yleensä oletusmuotoja. Kun haluat muuntaa tietojoukon kentän tai parametrin eksplisiittisesti tietyksi tietotyypiksi, sinun on käytettävä CLR-menetelmää tai Visual Basic -suorituspalvelukirjastoa tietojen muuntamiseen.
Seuraavassa taulukossa on esimerkkejä tietotyyppien muuntamisesta.
Muunnoksen tyyppi | Esimerkki |
---|---|
DateTime muotoon String | =CStr(Fields!Date.Value) |
DateTime-merkkijono | =DateTime.Parse(Fields!DateTimeinStringFormat.Value) |
Merkkijono DateTimeOffset-funktioon | =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value) |
Vuoden poimiminen | =Year(Fields!TimeinStringFormat.Value) -- or -- =Year(Fields!TimeinDateTimeFormat.Value) |
Totuusarvo kokonaisluvuksi | =CInt(Parameters!BooleanField.Value) -1 on Tosi ja 0 on Epätosi. |
Totuusarvo kokonaisluvuksi | =System.Convert.ToInt32(Fields!BooleanFormat.Value) 1 on Tosi ja 0 on Epätosi. |
Vain DateTimeOffset-arvon DateTime-osa | =Fields!MyDatetimeOffset.Value.DateTime |
Vain DateTimeOffset-arvon siirtymäosa | =Fields!MyDatetimeOffset.Value.Offset |
Voit hallita arvon näyttömuotoa myös Format-funktiolla. Katso lisätietoja artikkelista Funktiot (Visual Basic)..
Kehittyneet esimerkit
Kun muodostat yhteyden tietolähteeseen tietopalvelulla, joka ei tarjoa muuntotukea kaikille tietolähteen tietotyypeille, tukemattomien tietolähdetyyppien oletustietotyyppi on Merkkijono. Seuraavissa esimerkeissä annetaan ratkaisuja tiettyihin merkkijonona palautettuihin tietotyyppeihin.
Merkkijonon ja CLR DateTimeOffset -tietotyypin yhdistäminen
Useimmille tietotyypeille CLR tarjoaa oletusmuunnoksia, jotta voit liittää eri tietotyyppejä olevat arvot yhdeksi merkkijonoksi & -operaattorin avulla. Esimerkiksi seuraava lauseke liittää yhteen tekstin "Päivämäärä ja aika ovat: " tietojoukkokentän StartDate kanssa, joka on DateTime arvo: ="The date and time are: " & Fields!StartDate.Value
.
Joidenkin tietotyyppien kohdalla sinun on ehkä sisällytettävä ToString-funktio. Esimerkiksi seuraava lauseke näyttää saman esimerkin käyttämällä CLR-tietotyyppiä DateTimeOffset, joka sisältää päivämäärän, ajan ja aikavyöhykesiirtymän suhteessa UTC-aikavyöhykkeeseen: ="The time is: " & Fields!StartDate.Value.ToString()
.
Merkkijonon tietotyypin muuntaminen CLR DateTime -tietotyypiksi
Jos tietojenkäsittelylaajennus ei tue kaikkia tietolähteelle määritettyjä tietotyyppejä, tiedot voidaan noutaa tekstinä. Esimerkiksi datetimeoffset(7) -tietotyypin arvo voidaan noutaa merkkijonotietotyyppinä. Australian Perthissä merkkijonoarvo 1.7.2008 klo 6.05.07.999999 näyttäisi samalta kuin:
2008-07-01 06:05:07.9999999 +08:00
Tässä esimerkissä näytetään päivämäärä (1. heinäkuuta 2008), jota seuraa aika seitsemän numeron tarkkuuteen (6:05:07.9999999 A.M.), jota seuraa UTC-aikavyöhykkeen siirtymä tunteina ja minuutteina (plus 8 tuntia, 0 minuuttia). Seuraavissa esimerkeissä tämä arvo on asetettu Merkkijono-kenttään nimeltä MyDateTime.Value
.
Voit muuntaa nämä tiedot vähintään yhdeksi CLR-arvoksi jollakin seuraavista strategioista:
Poimi merkkijonon osat lausekkeen avulla tekstiruudussa. Esimerkkejä:
Seuraava lauseke poimii vain tunnin osan UTC-aikavyöhykkeen siirtymästä ja muuntaa sen minuutteina:
=CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60
Tulos on
480
.Seuraava lauseke muuntaa merkkijonon päivämäärä- ja aika-arvoksi:
=DateTime.Parse(Fields!MyDateTime.Value)
MyDateTime.Value
Jos merkkijonolla on UTC-siirtymä,DateTime.Parse
funktio säätää ensin UTC-offset-arvon (7.M. - [+08:00
] UTC-aikaan, joka oli edellisenä iltana 11.M. FunktioDateTime.Parse
käyttää sitten paikallisen raporttipalvelimen UTC-siirtymää ja tarvittaessa muuttaa ajankohtaa uudelleen kesäajan kohdalla. Esimerkiksi Redmondissa, Washingtonissa, paikallinen aikasiirtymä kesäajan mukaan on[-07:00]
, tai 7 tuntia ennen klo 23.00. Tulos on seuraava DateTime-arvo :2007-07-06 04:07:07 PM
(6. heinäkuuta 2007 klo 16.07).
Lisätietoja merkkijonojen muuntamisesta päivämäärä- ja aikatietotyypeiksi on aiheessa Päivämäärä- ja aikamerkkijonojen jäsentäminen, Päivämäärän ja ajan muotoileminen tietylle maa-toiminnolle sekä Päivämäärä/aika-, Päivämäärä/aika-tietojoukon ja TimeZoneInfo-funktion valinta.
Lisää raportin tietojoukkoon uusi laskettu kenttä, joka poimii lausekkeen avulla merkkijonon osat. Lisätietoja on artikkelissa Lisää, muokkaa, päivitä kentät raporttitietoruudussa (Power BI:n raportin muodostin).
Muuta raportin tietojoukkokysely käyttämään Transact-SQL-funktioita, jotta voit poimia päivämäärä- ja aika-arvot itsenäisesti ja luoda erillisiä sarakkeita. Seuraavassa esimerkissä näytetään, miten voit lisätä DatePart-funktiolla sarakkeen vuodelle ja sarakkeen UTC-aikavyöhykkeelle minuuteiksi muunnetaan:
SELECT
MyDateTime,
DATEPART(year, MyDateTime) AS Year,
DATEPART(tz, MyDateTime) AS OffsetinMinutes
FROM MyDates
Tulosjoukossa on kolme saraketta. Ensimmäinen sarake on päivämäärä ja aika, toinen sarake on vuosi ja kolmas sarake on UTC-siirtymä minuutteina. Seuraavalla rivillä on esimerkkitietoja:
2008-07-01 06:05:07 2008 480
Lisätietoja SQL Server -tietokannan tietotyypeistä on tiedoissa Tietotyypit (Transact-SQL) ja Päivämäärä ja aika Tietotyypit ja funktiot (Transact-SQL).
Lisätietoja SQL Server Analysis Services -tietotyypeistä on artikkelissa Tietotyypit Analysis Servicesissä.