Adattípusok többoldalas jelentések kifejezéseiben (Power BI Jelentéskészítő)
A következőkre vonatkozik: Power BI Jelentéskészítő Power BI Desktop
Az adattípusok különböző típusú adatokat jelölnek a többoldalas jelentésekben, így azok hatékonyan tárolhatók és feldolgozhatók. A tipikus adattípusok közé tartozik a szöveg (más néven sztringek), a tizedesjegyeket tartalmazó és anélküli számok, a dátumok és időpontok, valamint a képek. A jelentés értékeinek jelentésdefiníciós nyelv (RDL) adattípusnak kell lenniük. Az értékeket tetszése szerint formázhatja, amikor egy jelentésben jeleníti meg. A pénznemet képviselő mező például lebegőpontos számként van tárolva a jelentésdefinícióban, de a választott formátumtulajdonságtól függően többféle formátumban is megjeleníthető.
A megjelenítési formátumokról további információt a Jelentéselemek formázása (Power BI Jelentéskészítő) című témakörben talál.
Jelentésdefiníciós nyelv (RDL) adattípusai és a common language runtime (CLR) adattípusok
Az RDL-fájlban megadott értékeknek RDL-adattípusnak kell lenniük. A jelentés lefordításakor és feldolgozásakor az RDL-adattípusok CLR-adattípusokká lesznek konvertálva. Az alábbi táblázat az alapértelmezettként megjelölt átalakítást jeleníti meg:
RDL-típus | CLR-típusok |
---|---|
Sztring | Alapértelmezett: Sztring Diagram, GUID, Időbélyeg |
Logikai | Alapértelmezett: Logikai |
Egész | Alapértelmezett: Int64 Int16, Int32, Uint16, Uint64, Byte, Sbyte |
Dátum/idő | Alapértelmezett: DateTime DateTimeOffset |
Lebegőpontos értékek | Alapértelmezett: Dupla Egy, Tizedes |
Bináris | Alapértelmezett: Bájt[] |
Változat | A fentiek bármelyike, kivéve Byte[] |
VariantArray | A Variant tömbje |
Szerializálható | Szerializálható vagy ISerializable-t implementáló változat vagy típusok. |
Adattípusok és kifejezések írása
Fontos megérteni az adattípusokat, amikor kifejezéseket ír az értékek összehasonlítása vagy egyesítése céljából, például csoport- vagy szűrőkifejezések definiálásakor vagy összesítések kiszámításakor. Az összehasonlítások és számítások csak az azonos adattípusú elemek között érvényesek. Ha az adattípusok nem egyeznek, explicit módon konvertálnia kell a jelentéselem adattípusát egy kifejezés használatával.
Az alábbi lista azokat az eseteket ismerteti, amikor előfordulhat, hogy az adatokat más adattípusra kell konvertálnia:
Egy adattípus jelentésparaméterének összehasonlítása egy másik adattípusú adathalmazmezővel.
Olyan szűrőkifejezések írása, amelyek különböző adattípusok értékeit hasonlítják össze.
Rendezési kifejezések írása, amelyek különböző adattípusú mezőket egyesítenek.
Olyan csoportkifejezések írása, amelyek különböző adattípusú mezőket egyesítenek.
Az adatforrásból lekért érték átalakítása egy adattípusból egy másik adattípusba.
A jelentésadatok adattípusának meghatározása
Egy jelentéselem adattípusának meghatározásához írhat egy kifejezést, amely visszaadja az adattípusát. A mező MyField
adattípusának megjelenítéséhez például adja hozzá a következő kifejezést egy táblázatcellához: =Fields!MyField.Value.GetType().ToString()
. Az eredmény megjeleníti a CLR adattípust, amely például a System.String vagy a System.DateTime értéket jelöliMyField
.
Adathalmazmezők konvertálása másik adattípusra
Adathalmazmezőket is átalakíthat, mielőtt egy jelentésben használnuk őket. Az alábbi lista a meglévő adathalmazmezők átalakításának módjait ismerteti:
Módosítsa az adathalmaz-lekérdezést úgy, hogy új lekérdezésmezőt adjon hozzá a konvertált adatokkal. A relációs vagy többdimenziós adatforrások esetében ez adatforrás-erőforrásokat használ az átalakítás végrehajtásához.
Hozzon létre egy számított mezőt egy meglévő jelentésadatkészlet-mező alapján egy olyan kifejezés megírásával, amely egy eredményhalmaz-oszlop összes adatát egy másik adattípusú új oszlopmá alakítja. Az alábbi kifejezés például az Év mezőt egész számból sztringértékké alakítja:
=CStr(Fields!Year.Value)
. További információ: Mezők hozzáadása, szerkesztése, frissítése a jelentés adatpanelén (Power BI Jelentéskészítő).Ellenőrizze, hogy a használt adatfeldolgozási bővítmény tartalmaz-e metaadatokat az előre formázott adatok lekéréséhez. Egy SQL Server Analysis Services MDX-lekérdezés például tartalmaz egy FORMATTED_VALUE kiterjesztett tulajdonságot a kocka feldolgozásakor már formázott kockaértékekhez. További információkért tekintse meg az Analysis Services-adatbázis (SSRS) kiterjesztett mezőtulajdonságait.
A paraméter adattípusának ismertetése
A jelentésparamétereknek öt adattípus egyikének kell lenniük: Logikai, DateTime, Egész szám, Lebegőpontos vagy Szöveg (más néven Sztring). Ha egy adathalmaz-lekérdezés lekérdezési paramétereket tartalmaz, a rendszer automatikusan létrehozza és összekapcsolja a jelentésparamétereket a lekérdezési paraméterekkel. A jelentésparaméter alapértelmezett adattípusa a Sztring. A jelentésparaméter alapértelmezett adattípusának módosításához válassza ki a megfelelő értéket a Jelentésparaméter tulajdonságai párbeszédpanel Általános lapján található Adattípus legördülő listából.
Feljegyzés
A DateTime adattípusok jelentésparaméterei nem támogatják az ezredmásodperceket. Bár ezredmásodpercet tartalmazó értékek alapján is létrehozhat paramétert, az elérhető értékek legördülő listájából nem választhat olyan értéket, amely ezredmásodpercet tartalmazó dátum- vagy időértékeket tartalmaz.
Adattípusokat konvertáló vagy adatrészeket kinyerő kifejezések írása
Ha szöveg- és adathalmazmezőket egyesít az összefűzési operátorral (>), a közös nyelvi futtatókörnyezet (CLR) általában alapértelmezett formátumokat biztosít. Ha egy adathalmazmezőt vagy paramétert explicit módon egy adott adattípusra kell konvertálnia, az adatok konvertálásához CLR-metódust vagy Visual Basic futtatókörnyezeti függvényt kell használnia.
Az alábbi táblázat példákat mutat be az adattípusok konvertálására.
Az átalakítás típusa | Példa |
---|---|
DateTime–Sztring | =CStr(Fields!Date.Value) |
Sztring–DateTime | =DateTime.Parse(Fields!DateTimeinStringFormat.Value) |
String to DateTimeOffset | =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value) |
Az év kinyerése | =Year(Fields!TimeinStringFormat.Value) -- or -- =Year(Fields!TimeinDateTimeFormat.Value) |
Logikai érték egész számra | =CInt(Parameters!BooleanField.Value) -1 igaz, a 0 pedig hamis. |
Logikai érték egész számra | =System.Convert.ToInt32(Fields!BooleanFormat.Value) Az 1 igaz, a 0 pedig hamis. |
Csak a DateTimeOffset érték DateTime része | =Fields!MyDatetimeOffset.Value.DateTime |
Csak a DateTimeOffset érték eltolás része | =Fields!MyDatetimeOffset.Value.Offset |
A Formátum függvénnyel az érték megjelenítési formátumát is szabályozhatja. További információ: Functions (Visual Basic).
Speciális példák
Ha olyan adatforráshoz csatlakozik egy olyan adatszolgáltatóval, amely nem nyújt konverziós támogatást az adatforrás összes adattípusához, a nem támogatott adatforrástípusok alapértelmezett adattípusa a Sztring. Az alábbi példák olyan konkrét adattípusokra nyújtanak megoldást, amelyeket sztringként adnak vissza.
Sztring és CLR DateTimeOffset adattípus összefűzve
A legtöbb adattípus esetében a CLR alapértelmezett átalakításokat biztosít, így a &operátor használatával egyetlen sztringbe fűzheti a különböző adattípusú értékeket. A következő kifejezés például összefűzi a "Dátum és idő: " szöveget egy StartDate adathalmazmezővel, amely egy DateTime érték: ="The date and time are: " & Fields!StartDate.Value
.
Egyes adattípusok esetében előfordulhat, hogy a ToString függvényt is tartalmaznia kell. Az alábbi kifejezés például ugyanazt a példát mutatja be a CLR-adattípussal DateTimeOffset, amely tartalmazza a dátumot, az időt és az időzóna eltolódását az UTC időzónához képest: ="The time is: " & Fields!StartDate.Value.ToString()
.
Sztring adattípus konvertálása CLR DateTime-adattípussá
Ha egy adatfeldolgozási bővítmény nem támogatja az adatforráson definiált összes adattípust, az adatok lekérhetők szövegként. A datetimeoffset(7) adattípus értéke például sztring típusú adattípusként kérhető le. Az ausztráliai Perthben a 2008. július 1-jén 6:05:07.999999999 időpontban megadott sztringérték a következőhöz hasonló:
2008-07-01 06:05:07.9999999 +08:00
Ez a példa a dátumot (2008. július 1.), majd a hétjegyű pontosságot (6:05:07.999999999) mutatja, majd az UTC időzóna-eltolása órákban és percekben (plusz 8 óra, 0 perc). Az alábbi példákban ez az érték egy Sztring nevű mezőbeMyDateTime.Value
lett helyezve.
Az alábbi stratégiák egyikével konvertálhatja ezeket az adatokat egy vagy több CLR-értékre:
Egy szövegmezőben kifejezéssel nyerje ki a sztring egyes részeit. Példa:
Az alábbi kifejezés kinyeri az UTC időzóna eltolásának csak az óra részét, és percekké alakítja:
=CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60
Az eredmény:
480
.A következő kifejezés dátum- és időértékké alakítja a sztringet:
=DateTime.Parse(Fields!MyDateTime.Value)
Ha a sztring
MyDateTime.Value
UTC-eltolással rendelkezik, aDateTime.Parse
függvény először az UTC eltoláshoz (7 óra – [+08:00
] az előző este 11 óra UTC-időponthoz igazodik). ADateTime.Parse
függvény ezután alkalmazza a helyi jelentéskészítő kiszolgáló UTC eltolását, és szükség esetén ismét módosítja a nyári időszámításhoz szükséges időt. A washingtoni Redmondban például a nyári időszámításhoz[-07:00]
igazított helyi időeltolás 7 órával korábbi, mint 11 óra. Az eredmény a következő DateTime érték:2007-07-06 04:07:07 PM
(2007. július 6., 16:07).
A sztringek DateTime-adattípusokká alakításáról további információt a Dátum- és idősztringek elemzése, az adott kultúra dátumának és időpontjának formázása, valamint a DateTime, a DateTimeOffset és a TimeZoneInfo közötti választás című témakörben talál.
Adjon hozzá egy új számított mezőt a jelentés adatkészletéhez, amely kifejezéssel kinyeri a sztring részeit. További információ: Mezők hozzáadása, szerkesztése, frissítése a jelentés adatpanelén (Power BI Jelentéskészítő).
Módosítsa a jelentés adatkészlet-lekérdezését úgy, hogy a Transact-SQL függvényekkel egymástól függetlenül nyerje ki a dátum- és időértékeket, hogy külön oszlopokat hozzon létre. Az alábbi példa bemutatja, hogy a DatePart függvénnyel hogyan adhat hozzá egy oszlopot az évhez és egy oszlopot az UTC időzónához, amelyet percekké alakítottak át:
SELECT
MyDateTime,
DATEPART(year, MyDateTime) AS Year,
DATEPART(tz, MyDateTime) AS OffsetinMinutes
FROM MyDates
Az eredményhalmaz három oszlopból áll. Az első oszlop a dátum és az idő, a második oszlop az év, a harmadik pedig az UTC-eltolás percben. Az alábbi sor példaadatokat mutat be:
2008-07-01 06:05:07 2008 480
Az SQL Server-adatbázis adattípusairól további információt az Adattípusok (Transact-SQL) és a Dátum és idő adattípusok és függvények (Transact-SQL) című témakörben talál.
További információ az SQL Server Analysis Services adattípusairól: Adattípusok az Analysis Servicesben.