Udostępnij za pośrednictwem


Typy danych w wyrażeniach w raporcie podzielonym na strony (Power BI Report Builder)

DOTYCZY: Power BI Report Builder Power BI Desktop

Typy danych reprezentują różne rodzaje danych w raporcie podzielonym na strony, dzięki czemu można je efektywnie przechowywać i przetwarzać. Typowe typy danych obejmują tekst (znany również jako ciągi), liczby z miejscami dziesiętnymi, datami i godzinami oraz obrazami. Wartości w raporcie muszą być typem danych języka RDL (Report Definition Language). Wartość można sformatować zgodnie z preferencjami podczas wyświetlania jej w raporcie. Na przykład pole reprezentujące walutę jest przechowywane w definicji raportu jako liczba zmiennoprzecinkowa, ale może być wyświetlane w różnych formatach w zależności od wybranej właściwości formatu.

Aby uzyskać więcej informacji na temat formatów wyświetlania, zobacz Formatowanie elementów raportu (Power BI Report Builder).

Typy danych języka definicji raportów (RDL) i typy danych środowiska uruchomieniowego języka wspólnego (CLR)

Wartości określone w pliku RDL muszą być typem danych języka RDL. Po skompilowaniu i przetworzeniu raportu typy danych RDL są konwertowane na typy danych CLR. W poniższej tabeli przedstawiono konwersję, która jest oznaczona jako Domyślna:

Typ języka RDL Typy CLR
String Ustawienie domyślne: Ciąg

Wykres, identyfikator GUID, przedział czasu
Wartość logiczna Ustawienie domyślne: wartość logiczna
Integer Ustawienie domyślne: Int64

Int16, Int32, Uint16, Uint64, Byte, Sbyte
DateTime Ustawienie domyślne: DateTime

DateTimeOffset
Liczba zmiennoprzecinkowa Ustawienie domyślne: Podwójne

Pojedynczy, dziesiętny
Plik binarny Wartość domyślna: Bajt[]
Wariant Dowolny z powyższych z wyjątkiem bajtów[]
VariantArray Tablica wariantów
Serializacji Wariant lub typy oznaczone serializable lub które implementują ISerializable.

Omówienie typów danych i zapisywania wyrażeń

Ważne jest, aby zrozumieć typy danych podczas pisania wyrażeń w celu porównywania lub łączenia wartości, na przykład podczas definiowania wyrażeń grupowych lub filtrów lub obliczania agregacji. Porównania i obliczenia są prawidłowe tylko między elementami tego samego typu danych. Jeśli typy danych nie są zgodne, musisz jawnie przekonwertować typ danych w elemencie raportu przy użyciu wyrażenia.

Poniższa lista zawiera opis przypadków, w których może być konieczne przekonwertowanie danych na inny typ danych:

  • Porównanie wartości parametru raportu jednego typu danych z polem zestawu danych innego typu danych.

  • Pisanie wyrażeń filtrów, które porównują wartości różnych typów danych.

  • Pisanie wyrażeń sortowania łączących pola różnych typów danych.

  • Pisanie wyrażeń grup łączących pola różnych typów danych.

  • Konwertowanie wartości pobranej ze źródła danych z jednego typu danych na inny typ danych.

Określanie typu danych raportu

Aby określić typ danych elementu raportu, możesz napisać wyrażenie zwracające jego typ danych. Aby na przykład wyświetlić typ danych dla pola MyField, dodaj następujące wyrażenie do komórki tabeli: =Fields!MyField.Value.GetType().ToString(). Wynik wyświetla typ danych CLR używany do reprezentowania MyField, na przykład System.String lub System.DateTime.

Konwertowanie pól zestawu danych na inny typ danych

Możesz również przekonwertować pola zestawu danych przed ich użyciem w raporcie. Na poniższej liście opisano sposoby konwertowania istniejącego pola zestawu danych:

  • Zmodyfikuj zapytanie zestawu danych, aby dodać nowe pole zapytania z przekonwertowanymi danymi. W przypadku relacyjnych lub wielowymiarowych źródeł danych używa to zasobów źródła danych do przeprowadzenia konwersji.

  • Utwórz pole obliczeniowe na podstawie istniejącego pola zestawu danych raportu, pisząc wyrażenie, które konwertuje wszystkie dane w jednej kolumnie zestawu wyników na nową kolumnę z innym typem danych. Na przykład następujące wyrażenie konwertuje pole Year z wartości całkowitej na wartość ciągu: =CStr(Fields!Year.Value). Aby uzyskać więcej informacji, zobacz Dodawanie, edytowanie, odświeżanie pól w okienku danych raportu (Power BI Report Builder).

  • Sprawdź, czy używane rozszerzenie przetwarzania danych zawiera metadane do pobierania wstępnie sformatowanych danych. Na przykład zapytanie MDX usług SQL Server Analysis Services zawiera właściwość rozszerzoną FORMATTED_VALUE dla wartości modułu, które zostały już sformatowane podczas przetwarzania modułu. Aby uzyskać więcej informacji, zobacz Extended Field Properties for an Analysis Services Database (SSRS) (Rozszerzone właściwości pól dla bazy danych usług Analysis Services (SSRS).

Omówienie typów danych parametrów

Parametry raportu muszą być jednym z pięciu typów danych: wartość logiczna, data/godzina, liczba całkowita, zmiennoprzecinkowa lub tekst (nazywana również ciągiem). Gdy zapytanie zestawu danych zawiera parametry zapytania, parametry raportu są tworzone automatycznie i połączone z parametrami zapytania. Domyślnym typem danych dla parametru raportu jest Ciąg. Aby zmienić domyślny typ danych parametru raportu, wybierz poprawną wartość z listy rozwijanej Typ danych na stronie Ogólne okna dialogowego Właściwości parametru raportu.

Uwaga

Parametry raportu, które są typami danych DateTime, nie obsługują milisekund. Mimo że można utworzyć parametr na podstawie wartości, które zawierają milisekundy, nie można wybrać wartości z listy rozwijanej dostępnych wartości, która zawiera wartości daty lub godziny, które zawierają milisekundy.

Pisanie wyrażeń, które konwertują typy danych lub wyodrębniają części danych

W przypadku łączenia pól tekstu i zestawu danych przy użyciu operatora łączenia (&), środowisko uruchomieniowe języka wspólnego (CLR) zwykle udostępnia domyślne formaty. Jeśli musisz jawnie przekonwertować pole zestawu danych lub parametr na określony typ danych, musisz użyć metody CLR lub funkcji biblioteki środowiska uruchomieniowego języka Visual Basic, aby przekonwertować dane.

W poniższej tabeli przedstawiono przykłady konwertowania typów danych.

Typ konwersji Przykład
Data/godzina do ciągu =CStr(Fields!Date.Value)
Ciąg do daty/godziny =DateTime.Parse(Fields!DateTimeinStringFormat.Value)
Ciąg do elementu DateTimeOffset =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)
Wyodrębnianie roku =Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)
Wartość logiczna do liczby całkowitej =CInt(Parameters!BooleanField.Value)

-1 ma wartość True, a wartość 0 ma wartość False.
Wartość logiczna do liczby całkowitej =System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 ma wartość True, a wartość 0 to False.
Tylko część DateTime wartości DateTimeOffset =Fields!MyDatetimeOffset.Value.DateTime
Tylko część Przesunięcia wartości DateTimeOffset =Fields!MyDatetimeOffset.Value.Offset

Możesz również użyć funkcji Format, aby kontrolować format wyświetlania dla wartości. Aby uzyskać więcej informacji, zobacz Funkcje (Visual Basic).

Przykłady zaawansowane

Jeśli łączysz się ze źródłem danych za pomocą dostawcy danych, który nie zapewnia obsługi konwersji dla wszystkich typów danych w źródle danych, domyślnym typem danych dla nieobsługiwanych typów źródeł danych jest Ciąg. W poniższych przykładach przedstawiono rozwiązania dla określonych typów danych, które są zwracane jako ciąg.

Łączenie ciągu i typu danych CLR DateTimeOffset

W przypadku większości typów danych clR udostępnia konwersje domyślne, dzięki czemu można połączyć wartości, które są różnymi typami danych w jeden ciąg przy użyciu operatora i . Na przykład następujące wyrażenie łączy tekst "Data i godzina to: " z polem StartDate zestawu danych, czyli wartością DateTime : ="The date and time are: " & Fields!StartDate.Value.

W przypadku niektórych typów danych może być konieczne uwzględnienie funkcji ToString. Na przykład następujące wyrażenie przedstawia ten sam przykład przy użyciu typu DateTimeOffsetdanych CLR , który zawiera datę, godzinę i przesunięcie strefy czasowej względem strefy czasowej UTC: ="The time is: " & Fields!StartDate.Value.ToString().

Konwertowanie typu danych ciągu na typ danych typu data/godzina CLR

Jeśli rozszerzenie przetwarzania danych nie obsługuje wszystkich typów danych zdefiniowanych w źródle danych, dane mogą być pobierane jako tekst. Na przykład wartość typu danych datetimeoffset(7) może zostać pobrana jako typ danych Ciąg. W Perth w Australii wartość ciągu dla 1 lipca 2008 r., o 6:05:07.9999999999:

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

W tym przykładzie przedstawiono datę (1 lipca 2008 r.), a następnie 7-cyfrową precyzję (6:05:07.999999999), a następnie przesunięcie strefy czasowej UTC w godzinach i minutach (plus 8 godzin, 0 minut). W poniższych przykładach ta wartość została umieszczona w polu Ciąg o nazwie MyDateTime.Value.

Możesz użyć jednej z następujących strategii, aby przekonwertować te dane na co najmniej jedną wartość CLR:

  • W polu tekstowym użyj wyrażenia, aby wyodrębnić części ciągu. Na przykład:

    • Następujące wyrażenie wyodrębnia tylko część godziny przesunięcia strefy czasowej UTC i konwertuje je na minuty: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60

      Wynik to 480.

    • Następujące wyrażenie konwertuje ciąg na wartość daty i godziny: =DateTime.Parse(Fields!MyDateTime.Value)

      MyDateTime.Value Jeśli ciąg ma przesunięcie UTC, DateTime.Parse funkcja najpierw dostosowuje się do przesunięcia UTC (7:00 - [+08:00] do godziny UTC 11 pm przed). Następnie DateTime.Parse funkcja stosuje przesunięcie UTC lokalnego serwera raportów, a w razie potrzeby dostosowuje czas ponownie dla czasu letniego. Na przykład w Redmond w Stanie Waszyngton przesunięcie czasu lokalnego dostosowane do czasu letniego wynosi [-07:00], lub 7 godzin wcześniej niż 11 PM. Wynik jest następującą wartością daty/godziny : 2007-07-06 04:07:07 PM (6 lipca 2007 r. o godzinie 16:07).

Aby uzyskać więcej informacji na temat konwertowania ciągów na typy danych DateTime, zobacz Analizowanie ciągów daty i godziny, formatowanie daty i godziny dla określonej kultury oraz Wybieranie między wartościami DateTime, DateTimeOffset i TimeZoneInfo.

  • Dodaj nowe pole obliczeniowe do zestawu danych raportu, które używa wyrażenia do wyodrębniania części ciągu. Aby uzyskać więcej informacji, zobacz Dodawanie, edytowanie, odświeżanie pól w okienku danych raportu (Power BI Report Builder).

  • Zmień zapytanie zestawu danych raportu, aby użyć funkcji Języka Transact-SQL w celu niezależnego wyodrębnienia wartości daty i godziny w celu utworzenia oddzielnych kolumn. W poniższym przykładzie pokazano, jak za pomocą funkcji DatePart dodać kolumnę dla roku i kolumnę strefy czasowej UTC przekonwertowanej na minuty:

    SELECT

    MyDateTime,

    DATEPART(year, MyDateTime) AS Year,

    DATEPART(tz, MyDateTime) AS OffsetinMinutes

    FROM MyDates

    Zestaw wyników zawiera trzy kolumny. Pierwsza kolumna to data i godzina, druga kolumna to rok, a trzecia kolumna to przesunięcie UTC w minutach. W poniższym wierszu przedstawiono przykładowe dane:

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

Aby uzyskać więcej informacji na temat typów danych bazy danych programu SQL Server, zobacz Typy danych (Transact-SQL) oraz Typy danych i funkcje daty i godziny (Transact-SQL).

Aby uzyskać więcej informacji na temat typów danych usług SQL Server Analysis Services, zobacz Typy danych w usługach Analysis Services.