Przykłady wyrażeń w programie Power BI Report Builder
DOTYCZY: Power BI Report Builder Power BI Desktop
Wyrażenia są często używane w raportach podzielonych na strony w programie Power BI Report Builder w celu kontrolowania zawartości i wyglądu raportu. Wyrażenia są zapisywane w języku Microsoft Visual Basic i mogą używać wbudowanych funkcji, kodu niestandardowego, zmiennych raportu i grup oraz zmiennych zdefiniowanych przez użytkownika. Wyrażenia zaczynają się od znaku równości (=).
Ten artykuł zawiera przykłady wyrażeń, które mogą być używane do typowych zadań w raporcie.
Funkcje języka Visual Basic: przykłady funkcji daty, ciągu, konwersji i warunkowego języka Visual Basic.
Funkcje raportów: przykłady agregacji i innych wbudowanych funkcji raportów.
Wygląd danych raportu: przykłady zmiany wyglądu raportu.
Właściwości: Przykłady ustawiania właściwości elementu raportu w celu kontrolowania formatu lub widoczności.
Parametry: przykłady użycia parametrów w wyrażeniu.
Kod niestandardowy: przykłady osadzonego kodu niestandardowego.
Aby uzyskać więcej informacji na temat prostych i złożonych wyrażeń, gdzie można używać wyrażeń oraz typów odwołań, które można uwzględnić w wyrażeniu, zobacz Wyrażenia w programie Power BI Report Builder.
Funkcje
Wiele wyrażeń w raporcie zawiera funkcje. Za pomocą tych funkcji można formatować dane, stosować logikę i uzyskiwać dostęp do metadanych raportu. Wyrażenia korzystające z funkcji można pisać z biblioteki środowiska uruchomieniowego Programu Microsoft Visual Basic oraz z xref:System.Convert
przestrzeni nazw i xref:System.Math
. Odwołania można dodawać do funkcji w kodzie niestandardowym. Można również używać klas z programu Microsoft .NET Framework, w tym xref:System.Text.RegularExpressions
.
Funkcje Języka Visual Basic
Za pomocą funkcji języka Visual Basic można manipulować danymi wyświetlanymi w polach tekstowych lub używać ich do parametrów, właściwości lub innych obszarów raportu. Ta sekcja zawiera przykłady przedstawiające niektóre z tych funkcji. Aby uzyskać więcej informacji, zobacz elementy członkowskie biblioteki środowiska uruchomieniowego języka Visual Basic w witrynie MSDN.
Program .NET Framework udostępnia wiele opcji formatu niestandardowego, na przykład dla określonych formatów dat. Aby uzyskać więcej informacji, zobacz Typy formatowania.
Funkcje matematyczne
Funkcja Round jest przydatna w zaokrągleniu liczb do najbliższej liczby całkowitej. Następujące wyrażenie zaokrągla od 1,3 do 1:
=Round(1.3)
Możesz również napisać wyrażenie, aby zaokrąglić wartość do określonej wielokrotnych wartości, podobnie jak funkcja MRound w programie Excel. Pomnóż wartość przez współczynnik, który tworzy liczbę całkowitą, zaokrągla liczbę, a następnie dzieli przez ten sam współczynnik. Aby na przykład zaokrąglić wartość 1,3 do najbliższej wielokrotności 0,2, czyli 1,4, użyj następującego wyrażenia:
=Round(1.3*5)/5
Funkcje daty
Funkcja Today udostępnia bieżącą datę. To wyrażenie może służyć w polu tekstowym do wyświetlania daty w raporcie lub w parametrze do filtrowania danych na podstawie bieżącej daty.
=Today()
Użyj funkcji DateInterval, aby ściągnąć określoną część daty. Oto kilka prawidłowych parametrów DateInterval :
- DateInterval.Second
- DateInterval.Minute
- DateInterval.Hour
- DateInterval.Weekday
- DateInterval.Day
- DateInterval.DayOfYear
- DateInterval.WeekOfYear
- DateInterval.Month
- DateInterval.Quarter
- DateInterval.Year
Na przykład to wyrażenie spowoduje wyświetlenie liczby tygodni w bieżącym roku dla dzisiejszej daty:
=DatePart(DateInterval.WeekOfYear, today())
Funkcja DateAdd jest przydatna do podawania zakresu dat na podstawie pojedynczego parametru. Poniższe wyrażenie zawiera datę, która wynosi sześć miesięcy po dacie z parametru o nazwie StartDate.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
Funkcja Year wyświetla rok dla określonej daty. Daty można grupować razem lub wyświetlać rok jako etykietę dla zestawu dat. To wyrażenie zawiera rok dla danej grupy dat zamówień sprzedaży. Funkcja Month i inne funkcje mogą być również używane do manipulowania datami. Aby uzyskać więcej informacji, zobacz dokumentację języka Visual Basic.
=Year(Fields!OrderDate.Value)
Funkcje można łączyć w wyrażeniu, aby dostosować format. Następujące wyrażenie zmienia format daty w postaci miesiąc-dzień-rok na numer miesiąca tygodnia. Na przykład zmień wartość "12/18/2022" na "Grudzień 3":
=Format(Fields!MyDate.Value, "MMMM") & " Week " & (Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value), Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString
W przypadku użycia jako pola obliczeniowego w zestawie danych możesz użyć tego wyrażenia na wykresie, aby agregować wartości według tygodnia w ciągu każdego miesiąca.
Następujące wyrażenie formatuje wartość SellStartDate jako MMM-yy. Pole SellStartDate jest typem danych typu data/godzina.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")
Następujące wyrażenie formatuje wartość SellStartDate jako dd/MM/rrrr. Pole SellStartDate jest typem danych typu data/godzina.
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
Funkcja CDate konwertuje wartość na datę. Funkcja Now zwraca wartość daty zawierającą bieżącą datę i godzinę zgodnie z systemem. Funkcja DateDiff zwraca wartość long określającą liczbę interwałów czasu między dwiema wartościami daty.
Poniższy przykład przedstawia datę rozpoczęcia bieżącego roku
=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))
W poniższym przykładzie jest wyświetlana data rozpoczęcia poprzedniego miesiąca na podstawie bieżącego miesiąca.
=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))
Następujące wyrażenie generuje lata interwału między wartościami SellStartDate i LastReceiptDate. Te pola znajdują się w dwóch różnych zestawach danych: DataSet1 i DataSet2.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
Funkcja DatePart zwraca wartość całkowitą zawierającą określony składnik danej wartości Date . Następujące wyrażenie zwraca rok dla pierwszej wartości wartości SellStartDate w zestawie danych DataSet1. Zakres zestawu danych jest określony, ponieważ w raporcie istnieje wiele zestawów danych.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))
Funkcja DateSerial zwraca wartość Date reprezentującą określony rok, miesiąc i dzień z informacjami o czasie ustawionym na północ. Poniższy przykład przedstawia datę zakończenia poprzedniego miesiąca na podstawie bieżącego miesiąca.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)
Poniższe wyrażenia wyświetlają różne daty na podstawie wartości parametru daty wybranej przez użytkownika.
Przykładowy opis | Przykład |
---|---|
Wczoraj | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1) |
Dwa dni temu | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2) |
Miesiąc temu | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value)) |
Dwa miesiące temu | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value)) |
Rok temu | =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Dwa lata temu | =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Funkcje ciągów
Połącz więcej niż jedno pole przy użyciu operatorów łączenia i stałych języka Visual Basic. Następujące wyrażenie zwraca dwa pola, z których każda jest w osobnym wierszu w tym samym polu tekstowym:
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
Formatuj daty i liczby w ciągu za pomocą funkcji Format . Następujące wyrażenie wyświetla wartości parametrów StartDate i EndDate w formacie daty długiej:
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
Jeśli pole tekstowe zawiera tylko datę lub liczbę, należy użyć właściwości Format pola tekstowego, aby zastosować formatowanie zamiast funkcji Format w polu tekstowym.
Funkcje Right, Len i InStr są przydatne do zwracania podciągów, na przykład przycinania nazwy użytkownika DOMENY\tylko do nazwy użytkownika. Następujące wyrażenie zwraca część ciągu po prawej stronie ukośnika odwrotnego (\) z parametru o nazwie User:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
Następujące wyrażenie daje taką samą wartość jak poprzednia, używając elementów członkowskich klasy .NET Framework
xref:System.String
zamiast funkcji Języka Visual Basic:=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
Wyświetl wybrane wartości z parametru wielowartościowego. W poniższym przykładzie użyto funkcji Join , aby połączyć wybrane wartości parametru MySelection w jeden ciąg, który można ustawić jako wyrażenie wartości pola tekstowego w elemencie raportu:
= Join(Parameters!MySelection.Value)
Poniższy przykład działa tak samo jak w poprzednim przykładzie i wyświetla ciąg tekstowy przed listą wybranych wartości.
="Report for " & JOIN(Parameters!MySelection.Value, " & ")
Funkcje regex z programu .NET Framework
xref:System.Text.RegularExpressions
są przydatne do zmieniania formatu istniejących ciągów, na przykład formatowania numeru telefonu. Następujące wyrażenie używa funkcji Replace , aby zmienić format dziesięciocyfrowego numeru telefonu w polu z "nnn-nnn-nnnn" na "(nnn) nnn-nnnn":=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
Uwaga
Sprawdź, czy wartość pola ! Phone.Value nie ma dodatkowych spacji i jest typu
xref:System.String
.
Lookup
Określając pole klucza, możesz użyć funkcji Lookup , aby pobrać wartość z zestawu danych dla relacji jeden do jednego, na przykład pary klucz-wartość. Następujące wyrażenie wyświetla nazwę produktu z zestawu danych ("Produkt"), biorąc pod uwagę identyfikator produktu do dopasowania:
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields.ProductName.Value, "Product")
LookupSet
Określając pole klucza, możesz użyć funkcji LookupSet , aby pobrać zestaw wartości z zestawu danych dla relacji jeden do wielu. Na przykład osoba może mieć wiele numerów telefonów. W poniższym przykładzie załóżmy, że zestaw danych PhoneList zawiera identyfikator osoby i numer telefonu w każdym wierszu. Funkcja LookupSet zwraca tablicę wartości. Następujące wyrażenie łączy wartości zwracane w jeden ciąg i wyświetla listę numerów telefonów dla osoby określonej przez ContactID:
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
Funkcje konwersji
Za pomocą funkcji języka Visual Basic można przekonwertować pole z jednego typu danych na inny typ danych. Funkcje konwersji mogą służyć do konwertowania domyślnego typu danych dla pola na typ danych potrzebny do obliczeń lub łączenia tekstu.
Następujące wyrażenie konwertuje stałą 500 na typ Dziesiętny, aby porównać go z typem danych pieniądze języka Transact-SQL w polu Wartość dla wyrażenia filtru.
=CDec(500)
Poniższe wyrażenie wyświetla liczbę wartości wybranych dla parametru wielowartościowego MySelection.
=CStr(Parameters!MySelection.Count)
Funkcje decyzyjne
Funkcja IIF zwraca jedną z dwóch wartości w zależności od tego, czy wyrażenie jest prawdziwe, czy nie. Poniższe wyrażenie używa funkcji IIF , aby zwrócić wartość logiczną True , jeśli wartość LineTotal przekracza 100. W przeciwnym razie zwraca wartość False:
=IIF(Fields!LineTotal.Value > 100, True, False)
Użyj wielu funkcji IIF (znanych również jako "zagnieżdżonych plików IIF"), aby zwrócić jedną z trzech wartości w zależności od wartości PctComplete. Następujące wyrażenie można umieścić w kolorze wypełnienia pola tekstowego, aby zmienić kolor tła w zależności od wartości w polu tekstowym.
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
Wartości większe niż lub równe 10 są wyświetlane z zielonym tłem z zakresu od 1 do 9 z niebieskim tłem, a mniej niż 1 wyświetlane z czerwonym tłem.
Innym sposobem uzyskania tej samej funkcjonalności jest funkcja Switch . Funkcja Switch jest przydatna w przypadku testowania co najmniej trzech warunków. Funkcja Switch zwraca wartość skojarzona z pierwszym wyrażeniem w serii, która daje w wyniku wartość true:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red")
Wartości większe niż lub równe 10 są wyświetlane z zielonym tłem, od 1 do 9 wyświetla się z niebieskim tłem, równym 1 wyświetlaczowi z żółtym tłem, a 0 lub mniej wyświetla się z czerwonym tłem.
Przetestuj wartość pola ImportantDate i zwróć wartość "Czerwony", jeśli ma więcej niż tydzień i "Niebieski" w przeciwnym razie. To wyrażenie może służyć do kontrolowania właściwości Color pola tekstowego w elemencie raportu:
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
Przetestuj wartość pola PhoneNumber i zwróć wartość "Brak wartości", jeśli ma wartość null (Nic w Visual Basic); w przeciwnym razie zwróć wartość numeru telefonu. To wyrażenie może służyć do kontrolowania wartości pola tekstowego w elemencie raportu.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
Przetestuj wartość pola Dział i zwróć nazwę podraportu lub wartość null (Nic w Visual Basic). To wyrażenie może służyć do warunkowych podraportów przeglądania szczegółowego.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
Przetestuj, czy wartość pola ma wartość null. To wyrażenie może służyć do kontrolowania właściwości Hidden elementu raportu obrazu. W poniższym przykładzie obraz określony przez pole LargePhoto jest wyświetlany tylko wtedy, gdy wartość pola nie ma wartości null.
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)
Funkcja MonthName zwraca wartość ciągu zawierającą nazwę określonego miesiąca. W poniższym przykładzie jest wyświetlana wartość NA w polu Month (Miesiąc), gdy pole zawiera wartość 0.
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
Funkcje raportów
W wyrażeniu można dodać odwołanie do dodatkowych funkcji raportu, które manipulują danymi w raporcie. Ta sekcja zawiera przykłady dwóch z tych funkcji.
Sum
Funkcja Sum może sumować wartości w grupie lub regionie danych. Ta funkcja może być przydatna w nagłówku lub stopce grupy. Następujące wyrażenie wyświetla sumę danych w grupie Order lub regionie danych:
=Sum(Fields!LineTotal.Value, "Order")
Można również użyć funkcji Sum na potrzeby obliczeń agregacji warunkowej. Jeśli na przykład zestaw danych ma pole o nazwie State (Stan) o nazwie State (Stan) z możliwymi wartościami Not Started (Rozpoczęte), Started (Rozpoczęte), Finished (Zakończono), następujące wyrażenie po umieszczeniu w nagłówku grupy oblicza sumę zagregowaną tylko dla wartości Gotowe:
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))
Numer wiersza
Funkcja RowNumber , gdy jest używana w polu tekstowym w regionie danych, wyświetla numer wiersza dla każdego wystąpienia pola tekstowego, w którym pojawia się wyrażenie. Ta funkcja może być przydatna do numerowania wierszy w tabeli. Może to być również przydatne w przypadku bardziej złożonych zadań, takich jak udostępnianie podziałów stron na podstawie liczby wierszy. Aby uzyskać więcej informacji, zobacz Podziały stron w tym artykule.
Zakres określony dla kontrolek RowNumber po rozpoczęciu ponownego numerowania. Słowo kluczowe Nothing wskazuje, że funkcja rozpocznie liczenie w pierwszym wierszu w najbardziej zewnętrznym regionie danych. Aby rozpocząć liczenie w zagnieżdżonych regionach danych, użyj nazwy regionu danych. Aby rozpocząć liczenie w grupie, użyj nazwy grupy.
=RowNumber(Nothing)
Wygląd danych raportu
Za pomocą wyrażeń można manipulować sposobem wyświetlania danych w raporcie. Można na przykład wyświetlić wartości dwóch pól w jednym polu tekstowym, wyświetlić informacje o raporcie lub wpłynąć na sposób wstawiania podziałów stron w raporcie.
Nagłówki i stopki strony
Podczas projektowania raportu można wyświetlić nazwę raportu i numer strony w stopce raportu. W tym celu można użyć następujących wyrażeń:
Poniższe wyrażenie zawiera nazwę raportu i czas jego uruchomienia. Można go umieścić w polu tekstowym w stopce raportu lub w treści raportu. Godzina jest formatowana za pomocą ciągu formatowania programu .NET Framework dla daty krótkiej:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
Następujące wyrażenie, umieszczone w polu tekstowym w stopce raportu, zawiera numer strony i łączną liczbę stron w raporcie:
=Globals.PageNumber & " of " & Globals.TotalPages
W poniższych przykładach opisano sposób wyświetlania pierwszych i ostatnich wartości ze strony w nagłówku strony, podobnie jak to, co można znaleźć na liście katalogów. W przykładzie przyjęto założenie, że region danych zawiera pole tekstowe o nazwie LastName.
Następujące wyrażenie, umieszczone w polu tekstowym po lewej stronie nagłówka strony, zawiera pierwszą wartość pola tekstowego LastName na stronie:
=First(ReportItems("LastName").Value)
Następujące wyrażenie, umieszczone w polu tekstowym po prawej stronie nagłówka strony, zawiera ostatnią wartość pola tekstowego LastName na stronie:
=Last(ReportItems("LastName").Value)
W poniższym przykładzie opisano sposób wyświetlania sumy strony. W przykładzie przyjęto założenie, że region danych zawiera pole tekstowe o nazwie Cost (Koszt).
Następujące wyrażenie umieszczone w nagłówku lub stopce strony zawiera sumę wartości w polu tekstowym Koszt dla strony:
=Sum(ReportItems("Cost").Value)
Uwaga
W nagłówku lub stopce strony można odwoływać się tylko do jednego elementu raportu na wyrażenie. Ponadto można odwoływać się do nazwy pola tekstowego, ale nie rzeczywistego wyrażenia danych w polu tekstowym, w wyrażeniach nagłówka i stopki strony.
Podziały stron
W niektórych raportach można umieścić podział strony na końcu określonej liczby wierszy zamiast lub oprócz grup lub elementów raportu. Utwórz grupę zawierającą żądane grupy lub rekordy szczegółów, dodaj podział strony do grupy, a następnie dodaj wyrażenie grupy do grupy według określonej liczby wierszy.
Następujące wyrażenie po umieszczeniu w wyrażeniu grupy przypisuje liczbę do każdego zestawu 25 wierszy. Gdy podział strony jest zdefiniowany dla grupy, to wyrażenie powoduje podział strony co 25 wierszy.
=Ceiling(RowNumber(Nothing)/25)
Aby umożliwić użytkownikowi ustawienie wartości dla liczby wierszy na stronę, utwórz parametr o nazwie RowsPerPage i za pomocą wyrażenia grupy w parametrze, jak pokazano w poniższym wyrażeniu:
=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)
Właściwości
Wyrażenia nie są używane tylko do wyświetlania danych w polach tekstowych. Można ich również użyć do zmiany sposobu stosowania właściwości do elementów raportu. Możesz zmienić informacje o stylu dla elementu raportu lub zmienić jego widoczność.
Formatowanie
Następujące wyrażenie, gdy jest używane we właściwości Color pola tekstowego, zmienia kolor tekstu w zależności od wartości pola Profit :
=Iif(Fields!Profit.Value < 0, "Red", "Black")
Możesz również użyć zmiennej obiektu Visual Basic Me. Ta zmienna jest innym sposobem odwoływania się do wartości pola tekstowego.
=Iif(Me.Value < 0, "Red", "Black")
Następujące wyrażenie, gdy jest używane we właściwości BackgroundColor elementu raportu w regionie danych, zmienia kolor tła każdego wiersza między bladozielonym i białym:
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
Jeśli używasz wyrażenia dla określonego zakresu, może być konieczne wskazanie zestawu danych dla funkcji agregującej:
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
Uwaga
Dostępne kolory pochodzą z wyliczenia .NET Framework KnownColor.
Kolory wykresu
Aby określić kolory wykresu kształtu, możesz użyć niestandardowego kodu do kontrolowania kolejności mapowania kolorów na wartości punktów danych. Pomaga to używać spójnych kolorów dla wielu wykresów, które mają te same grupy kategorii.
Widoczność
Elementy w raporcie można wyświetlać i ukrywać przy użyciu właściwości widoczności elementu raportu. W regionie danych, takim jak tabela, można początkowo ukryć wiersze szczegółów na podstawie wartości w wyrażeniu.
Następujące wyrażenie, gdy jest używane do początkowej widoczności wierszy szczegółów w grupie, pokazuje wiersze szczegółów dla wszystkich sprzedaży przekraczających 90 procent w polu PctQuota :
=IIF(Fields!PctQuota.Value>.9, False, True)
Następujące wyrażenie, jeśli jest ustawione we właściwości Hidden tabeli, pokazuje tabelę tylko wtedy, gdy zawiera więcej niż 12 wierszy:
=IIF(CountRows()>12,false,true)
Następujące wyrażenie po ustawieniu we właściwości Hidden kolumny pokazuje kolumnę tylko wtedy, gdy pole istnieje w zestawie danych raportu po pobraniu danych ze źródła danych:
=IIF(Fields!Column_1.IsMissing, true, false)
Adresy URL
Adresy URL można dostosować przy użyciu danych raportu, a także warunkowo kontrolować, czy adresy URL są dodawane jako akcja pola tekstowego.
Poniższe wyrażenie, gdy jest używane jako akcja w polu tekstowym, generuje dostosowany adres URL określający pole zestawu danych EmployeeID jako parametr adresu URL.
="https://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
Poniższe wyrażenie warunkowo określa, czy dodać adres URL w polu tekstowym. To wyrażenie zależy od parametru o nazwie IncludeURLs , który umożliwia użytkownikowi podjęcie decyzji, czy mają być uwzględniane aktywne adresy URL w raporcie. To wyrażenie jest ustawiane jako akcja w polu tekstowym. Ustawiając parametr na False, a następnie wyświetlając raport, możesz wyeksportować raport do programu Microsoft Excel bez hiperlinków.
=IIF(Parameters!IncludeURLs.Value,"https://adventure-works.com/productcatalog",Nothing)
Uwaga
Raporty podzielone na strony usługi Power BI nie obsługują używania języka JavaScript w wyrażeniu przejdź do adresu URL .
Dane raportu
Wyrażenia mogą służyć do manipulowania danymi używanymi w raporcie. Możesz odwoływać się do parametrów i innych informacji o raporcie. Możesz nawet zmienić zapytanie używane do pobierania danych dla raportu.
Parametry
Wyrażenia w parametrze umożliwiają zmianę wartości domyślnej parametru. Na przykład można użyć parametru do filtrowania danych dla określonego użytkownika na podstawie identyfikatora użytkownika używanego do uruchamiania raportu.
Następujące wyrażenie, gdy jest używane jako wartość domyślna parametru, zbiera identyfikator użytkownika osoby uruchamiającej raport:
=User!UserID
Aby odwołać się do parametru zapytania, wyrażenia filtru, pola tekstowego lub innego obszaru raportu, użyj kolekcji globalnej Parameters . W tym przykładzie przyjęto założenie, że parametr nosi nazwę Dział:
=Parameters!Department.Value
Parametry można utworzyć w raporcie, ale ustawić na ukryte. Gdy raport jest uruchamiany na serwerze raportów, parametr nie jest wyświetlany na pasku narzędzi, a czytelnik raportu nie może zmienić wartości domyślnej. Możesz użyć ukrytego parametru ustawionego na wartość domyślną stałej niestandardowej. Tej wartości można użyć w dowolnym wyrażeniu, w tym w wyrażeniu pola. Następujące wyrażenie identyfikuje pole określone przez domyślną wartość parametru dla parametru o nazwie ParameterField:
=Fields(Parameters!ParameterField.Value).Value
Kod niestandardowy
Możesz użyć niestandardowego kodu osadzonego w raporcie.
Używanie zmiennych grupy na potrzeby agregacji niestandardowej
Można zainicjować wartość zmiennej grupy, która jest lokalna dla określonego zakresu grupy, a następnie dołączyć odwołanie do tej zmiennej w wyrażeniach. Jednym ze sposobów użycia zmiennej grupy z kodem niestandardowym jest zaimplementowanie niestandardowej agregacji.
Pomijanie wartości null lub zerowych w czasie wykonywania
Niektóre wartości w wyrażeniu mogą mieć wartość null lub niezdefiniowane w czasie przetwarzania raportu. Może to spowodować błędy czasu wykonywania, które spowodują wyświetlenie #Error w polu tekstowym zamiast obliczonego wyrażenia. Funkcja IIF jest szczególnie wrażliwa na to zachowanie, ponieważ w przeciwieństwie do instrukcji If-Then-Else każda część instrukcji IIF jest oceniana (w tym wywołania funkcji) przed przekazaniem do procedury, która sprawdza wartość true lub false. =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value)
Instrukcja generuje #Error w renderowanych raportach, jeśli pola! Sales.Value to NIC.
Aby uniknąć tego warunku, użyj jednej z następujących strategii:
Ustaw licznik na 0, a mianownik na 1, jeśli wartość pola B jest równa 0 lub niezdefiniowana; w przeciwnym razie ustaw licznik na wartość pola A i mianownik na wartość pola B.
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
Użyj niestandardowej funkcji kodu, aby zwrócić wartość wyrażenia. Poniższy przykład zwraca różnicę procentową między bieżącą wartością a poprzednią wartością. Może to służyć do obliczania różnicy między dwoma kolejnymi wartościami i obsługuje przypadek krawędzi pierwszego porównania (jeśli nie ma poprzedniej wartości) i przypadków, w których poprzednia wartość lub bieżąca wartość ma wartość null (Nic w Visual Basic).
Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then Return Nothing Else if PreviousValue = 0 OR CurrentValue = 0 Then Return Nothing Else Return (CurrentValue - PreviousValue) / CurrentValue End If End Function
Poniższe wyrażenie pokazuje, jak wywołać ten kod niestandardowy z pola tekstowego dla kontenera ColumnGroupByYear (grupy lub regionu danych).
=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))
Ten kod pomaga uniknąć wyjątków czasu wykonywania. Teraz możesz użyć wyrażenia, takiego jak
=IIF(Me.Value < 0, "red", "black")
we właściwości Color pola tekstowego, aby warunkowo wyświetlić tekst na podstawie tego, czy wartości są większe niż lub mniejsze niż 0.