Zdieľať cez


Typy údajov vo výrazoch v stránkovanej zostave (Power BI Zostavovač zostáv)

VZŤAHUJE SA NA: Power BI Zostavovač zostáv Power BI Desktop

Typy údajov predstavujú rôzne druhy údajov v stránkovanej zostave tak, aby sa mohli účinne ukladať a spracovávať. Typické typy údajov zahŕňajú text (známy aj ako reťazce), čísla s desatinnými miestami a bez nich, dátumy a časy a obrázky. Hodnoty v zostave musia byť typom údajov jazyka RDL (Report Definition Language). Hodnotu môžete formátovať podľa svojich preferencií, keď ju zobrazíte v zostave. Napríklad pole predstavujú ktoré predstavuje menu, je uložené v definícii zostavy ako číslo s pohyblivou desatinnou čiarkou, ale môže sa zobraziť v rôznych formátoch v závislosti od vlastnosti formátu, ktorú vyberiete.

Ďalšie informácie o formátoch zobrazenia nájdete v téme Formátovanie položiek zostavy (Zostavovač zostáv Power BI).

Typy údajov jazyka RDL (Report Definition Language) a Typy údajov modulu Runtime (CLR) bežného jazyka

Hodnoty, ktoré sú zadané v súbore RDL, musia byť typom údajov RDL. Pri kompilovaní a spracovaní zostavy sa typy údajov jazyka RDL skonvertujú na typy údajov CLR. V nasledujúcej tabuľke sa zobrazí konverzia, ktorá je označená ako Predvolená:

Typ JAZYKA RDL Typy CLR
String Predvolené: Reťazec

Graf, GUID, časové rozpätie
Boolean Predvolené: Booleovská hodnota
Integer Predvolené: Int64

Int16, Int32, Uint16, Uint64, Byte, Sbyte
Dátum a čas Predvolená hodnota: Dátum a čas

Množina dátumu a času
Float Predvolená hodnota: Dvojité

Single, Decimal
Binárne Predvolené: Bajt[]
Variant Ktorékoľvek z vyššie uvedených hodnôt okrem Bajtov[]
VariantArray Pole variantu
Serializable Variant alebo typy označené serializable alebo ktoré implementujú ISerializable.

Vysvetlenie typov údajov a písanie výrazov

Pri písaní výrazov na porovnanie alebo kombinovanie hodnôt je dôležité rozumieť typom údajov, napríklad pri definovaní skupiny alebo výrazov filtra alebo vypočítaní agregátov. Porovnania a výpočty sú platné iba medzi položkami rovnakého typu údajov. Ak sa typy údajov nezhodujú, musíte explicitne konvertovať typ údajov v položke zostavy pomocou výrazu.

Nasledujúci zoznam popisuje prípady, kedy možno budete musieť skonvertovať údaje na iný typ údajov:

  • Porovnanie hodnoty parametra zostavy jedného typu údajov s poľom množiny údajov iného typu údajov.

  • Písanie výrazov filtra, ktoré porovnávajú hodnoty rôznych typov údajov.

  • Písanie výrazov zoradenia, ktoré kombinujú polia rôznych typov údajov.

  • Písanie skupinových výrazov, ktoré kombinujú polia rôznych typov údajov.

  • Konverzia hodnoty načítanej z jedného typu údajov z jedného typu údajov na iný typ údajov.

Určenie typu údajov v zostave

Ak chcete určiť typ údajov položky zostavy, môžete napísať výraz, ktorý vráti jej typ údajov. Ak chcete napríklad zobraziť typ údajov pre pole MyField, pridajte do bunky tabuľky nasledujúci výraz: =Fields!MyField.Value.GetType().ToString(). Výsledok zobrazuje typ údajov CLR použitý na znázornenie MyField, napríklad System.String alebo System.DateTime.

Konverzia polí množiny údajov na iný typ údajov.

Pred použitím polí množiny údajov v zostave ich môžete tiež konvertovať. Nasledujúci zoznam popisuje spôsoby, ako môžete konvertovať existujúce pole množiny údajov:

  • Upravte dotaz množiny údajov a pridajte nové pole dotazu s skonvertovanými údajmi. V prípade relačných alebo multidimenzionálnych zdrojov údajov sa na vykonanie konverzie používajú zdroje údajov.

  • Vytvorte vypočítavané pole na základe existujúceho poľa množiny údajov zostavy napísaním výrazu, ktorý konvertuje všetky údaje v jednom stĺpci množiny výsledkov na nový stĺpec s iným typom údajov. Nasledujúci výraz napríklad konvertuje pole Year z celočíselnej hodnoty na hodnotu reťazca: =CStr(Fields!Year.Value). Ďalšie informácie nájdete v téme Pridanie, úprava, obnovenie polí na table Údaje zostavy (power BI Zostavovač zostáv).

  • Skontrolujte, či rozšírenie na spracovanie údajov, ktoré používate, obsahuje metaúdaje na načítanie predformátovaných údajov. Napríklad dotaz MDX služby SQL Server Analysis Services obsahuje FORMATTED_VALUE rozšírenú vlastnosť pre hodnoty kocky, ktoré už boli formátované pri spracovaní kocky. Ďalšie informácie nájdete v téme Rozšírené vlastnosti poľa pre databázu Analysis Services (SSRS).

Vysvetlenie typov údajov parametrov

Parametre zostavy musia byť jedným z piatich typov údajov: Boolean, DateTime, Integer, Float alebo Text (označované aj ako Reťazec). Keď dotaz množiny údajov obsahuje parametre dotazu, parametre zostavy sa automaticky vytvoria a prepoja s parametrami dotazu. Predvolený typ údajov pre parameter zostavy je Reťazec. Ak chcete zmeniť predvolený typ údajov parametra zostavy, vyberte správnu hodnotu z rozbaľovacieho zoznamu Typ údajov na stránke Všeobecné v dialógovom okne Vlastnosti parametra zostavy.

Poznámka

Parametre zostavy, ktoré sú typmi údajov DateTime, nepodporujú milisekundy. Napriek tomu, že môžete vytvoriť parameter založený na hodnotách, ktoré obsahujú milisekundy, nemôžete vybrať hodnotu z rozbaľovacieho zoznamu dostupných hodnôt, ktorý obsahuje hodnoty dátumu alebo času obsahujúce milisekundy.

Zápisové výrazy, ktoré konvertujú typy údajov alebo extrahujú časti údajov.

Keď skombinujete polia textu a množiny údajov pomocou operátora zreťazenia (&), spoločný jazykový režim runtime (CLR) vo všeobecnosti poskytuje predvolené formáty. Keď potrebujete explicitne konvertovať pole alebo parameter množiny údajov na konkrétny typ údajov, musíte na konverziu údajov použiť metódu CLR alebo funkciu knižnice režimu runtime jazyka Visual Basic.

V nasledujúcej tabuľke sú uvedené príklady konverzie typov údajov.

Typ konverzie Príklad
Dátum a čas do reťazca =CStr(Fields!Date.Value)
Reťazec do formátu DateTime =DateTime.Parse(Fields!DateTimeinStringFormat.Value)
Reťazec do formátu DateTimeOffset =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)
Extrahovanie roka =Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)
Booleovská hodnota na celé číslo =CInt(Parameters!BooleanField.Value)

-1 je True a 0 je False.
Booleovská hodnota na celé číslo =System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 je True a 0 je False.
Len časť DateTime hodnoty DateTimeOffset =Fields!MyDatetimeOffset.Value.DateTime
Len časť Posun hodnoty DateTimeOffset =Fields!MyDatetimeOffset.Value.Offset

Môžete tiež použiť funkciu Format na ovládanie formátu zobrazenia hodnoty. Ďalšie informácie nájdete v téme Funkcie (Visual Basic).

Pokročilé príklady

Keď sa pripojíte k zdroju údajov pomocou poskytovateľa údajov, ktorý neposkytuje podporu konverzie pre všetky typy údajov v zdroji údajov, predvoleným typom údajov pre nepodporované typy zdrojov údajov je Reťazec. Nasledujúce príklady poskytujú riešenia konkrétnych typov údajov, ktoré sa vrátia ako reťazec.

Zreťaziť reťazec a typ údajov CLR DateTimeOffset

Pre väčšinu typov údajov poskytuje CLR predvolené konverzie, aby ste mohli zreťaziť hodnoty, ktoré sú rôznymi typmi údajov, do jedného reťazca pomocou operátora &. Napríklad nasledujúci výraz zreťazí text "Dátum a čas sú: " s poľom množiny údajov StartDate, čo je DateTime hodnota: ="The date and time are: " & Fields!StartDate.Value.

V prípade niektorých typov údajov možno budete musieť zahrnúť funkciu ToString. Nasledujúci výraz napríklad zobrazuje rovnaký príklad s použitím typu DateTimeOffsetúdajov CLR , ktorý zahŕňa dátum, čas a posun časového pásma vzhľadom na časové pásmo UTC: ="The time is: " & Fields!StartDate.Value.ToString().

Konverzia typu údajov reťazca na typ údajov CLR typu Dátum a čas

Ak rozšírenie na spracovanie údajov nepodporuje všetky typy údajov definované v zdroji údajov, údaje sa môžu načítať ako text. Napríklad hodnota typu datetimeoffset(7) typu údajov sa môže načítať ako typ údajov Reťazec. V Perthe v Austrálii by hodnota reťazca pre 1. júla 2008 o 6:05:07.9999999 a.s. pripomínala:

2008-07-01 06:05:07.9999999 +08:00

Tento príklad znázorňuje dátum (1. júla 2008), za ktorým nasleduje čas na 7-cifernú presnosť (6:05:07,999999999,M.), za ktorou nasleduje posun časového pásma UTC v hodinách a minútach (plus 8 hodín, 0 minút). V nasledujúcich príkladoch bola táto hodnota umiestnená do poľa Reťazec s názvom MyDateTime.Value.

Ak chcete skonvertovať tieto údaje na jednu alebo viacero hodnôt CLR, môžete použiť jednu z nasledujúcich stratégií:

  • V textovom poli použite na extrakciu častí reťazca výraz. Napríklad:

    • Nasledujúci výraz extrahuje len časť hodiny časového pásma UTC a konvertuje ho na minúty: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60

      Výsledok je 480.

    • Nasledujúci výraz konvertuje reťazec na hodnotu dátumu a času: =DateTime.Parse(Fields!MyDateTime.Value)

      MyDateTime.Value Ak má reťazec posun UTC, DateTime.Parse funkcia sa najprv upraví o posun od UTC (7:00 – [+08:00] k času UTC 23:00 noc predtým). Funkcia DateTime.Parse potom použije posun utc lokálneho servera zostáv a v prípade potreby opäť upraví čas pre letný čas. Napríklad v Redmonde vo Washingtone je [-07:00]posun miestneho času upravený pre letný čas , alebo o 7 hodín skôr ako 23:00. Výsledkom je nasledujúca hodnota DateTime : 2007-07-06 04:07:07 PM (6. júla 2007 o 16:07).

Ďalšie informácie o konverzii reťazcov na typy údajov DateTime nájdete v téme Analýza reťazcov dátumu a času, Formátovanie dátumu a času pre konkrétnu jazykovú verziu a Výber medzi dátumom a časom, datetimeOffset a TimeZoneInfo.

  • Pridajte nové vypočítavané pole do množiny údajov zostavy, ktorá používa výraz na extrakciu častí reťazca. Ďalšie informácie nájdete v téme Pridanie, úprava, obnovenie polí na table Údaje zostavy (power BI Zostavovač zostáv).

  • Zmeňte dotaz množiny údajov zostavy na použitie funkcií Transact-SQL na extrakciu hodnôt dátumu a času nezávisle na vytvorenie samostatných stĺpcov. Nasledujúci príklad znázorňuje použitie funkcie DatePart na pridanie stĺpca pre rok a stĺpca pre časové pásmo UTC skonvertované na minúty:

    SELECT

    MyDateTime,

    DATEPART(year, MyDateTime) AS Year,

    DATEPART(tz, MyDateTime) AS OffsetinMinutes

    FROM MyDates

    Množina výsledkov obsahuje tri stĺpce. Prvým stĺpcom je dátum a čas, druhý stĺpec je rok a tretí stĺpec je posun utc v minútach. V nasledujúcom riadku sú uvedené vzorové údaje:

    2008-07-01 06:05:07 2008 480

Ďalšie informácie o typoch údajov databázy SQL Servera nájdete v téme Typy údajov (Transact-SQL) a Typy údajov dátumu a času (Transact-SQL).

Ďalšie informácie o typoch údajov služby SQL Server Analysis Services nájdete v téme Typy údajov v službe Analysis Services.