Voorbeelden van expressies in Power BI Report Builder
VAN TOEPASSING OP: Power BI Report Builder Power BI Desktop
Expressies worden vaak gebruikt in gepagineerde rapporten van Power BI Report Builder om de inhoud en het uiterlijk van rapporten te beheren. Expressies worden geschreven in Microsoft Visual Basic en kunnen ingebouwde functies, aangepaste code, rapport- en groepsvariabelen en door de gebruiker gedefinieerde variabelen gebruiken. Expressies beginnen met een gelijkteken (=).
Dit artikel bevat voorbeelden van expressies die kunnen worden gebruikt voor algemene taken in een rapport.
Visual Basic-functies: voorbeelden voor datum-, tekenreeks-, conversie- en voorwaardelijke Visual Basic-functies.
Rapportfuncties: voorbeelden voor statistische functies en andere ingebouwde rapportfuncties.
Weergave van rapportgegevens: voorbeelden voor het wijzigen van het uiterlijk van een rapport.
Eigenschappen: Voorbeelden voor het instellen van eigenschappen van rapportitems om de indeling of zichtbaarheid te bepalen.
Parameters: Voorbeelden voor het gebruik van parameters in een expressie.
Aangepaste code: Voorbeelden van ingesloten aangepaste code.
Zie Expressies in Power BI Report Builder voor meer informatie over eenvoudige en complexe expressies, waar u expressies en de typen verwijzingen kunt gebruiken die u in een expressie kunt opnemen.
Functies
Veel expressies in een rapport bevatten functies. U kunt gegevens opmaken, logica toepassen en metagegevens van rapporten openen met behulp van deze functies. U kunt expressies schrijven die gebruikmaken van functies uit de Microsoft Visual Basic Runtime-bibliotheek en vanuit de xref:System.Convert
en xref:System.Math
naamruimten. U kunt verwijzingen toevoegen aan functies in aangepaste code. U kunt ook klassen van Microsoft .NET Framework gebruiken, waaronder xref:System.Text.RegularExpressions
.
Visual Basic-functies
U kunt Visual Basic-functies gebruiken om de gegevens te bewerken die worden weergegeven in tekstvakken of worden gebruikt voor parameters, eigenschappen of andere gebieden van het rapport. In deze sectie vindt u voorbeelden waarin enkele van deze functies worden gedemonstreerd. Zie De leden van de Visual Basic Runtime-bibliotheek op MSDN voor meer informatie.
Het .NET Framework biedt veel opties voor aangepaste indelingen, bijvoorbeeld voor specifieke datumnotaties. Zie Opmaaktypen voor meer informatie.
Wiskundige functies
De functie Afronden is handig om getallen af te ronden op het dichtstbijzijnde gehele getal. Met de volgende expressie wordt 1,3 afgerond op 1:
=Round(1.3)
U kunt ook een expressie schrijven om een waarde af te ronden op een veelvoud dat u opgeeft, vergelijkbaar met de functie MRound in Excel. Vermenigvuldig de waarde met een factor die een geheel getal maakt, rond het getal af en deel vervolgens door dezelfde factor. Als u bijvoorbeeld 1,3 wilt afronden op het dichtstbijzijnde veelvoud van 0,2, wat 1,4 is, gebruikt u de volgende expressie:
=Round(1.3*5)/5
Datumfuncties
De functie Vandaag geeft de huidige datum op. Deze expressie kan worden gebruikt in een tekstvak om de datum in het rapport weer te geven of in een parameter om gegevens te filteren op basis van de huidige datum.
=Today()
Gebruik de functie DateInterval om een bepaald deel van een datum op te halen. Hier volgen enkele geldige DateInterval-parameters :
- DateInterval.Second
- DateInterval.Minute
- DateInterval.Hour
- DateInterval.Weekday
- DateInterval.Day
- DateInterval.DayOfYear
- DateInterval.WeekOfYear
- DateInterval.Month
- DateInterval.Quarter
- DateInterval.Year
In deze expressie ziet u bijvoorbeeld het aantal van de week in het huidige jaar voor de datum van vandaag:
=DatePart(DateInterval.WeekOfYear, today())
De functie DateAdd is handig voor het opgeven van een datumbereik op basis van één parameter. De volgende expressie bevat een datum die zes maanden na de datum valt vanaf een parameter met de naam StartDate.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
Met de functie Year wordt het jaar voor een bepaalde datum weergegeven. U kunt datums groeperen of het jaar weergeven als een label voor een set datums. Deze expressie bevat het jaar voor een bepaalde groep verkooporderdatums. De functie Month en andere functies kunnen ook worden gebruikt om datums te bewerken. Zie de Visual Basic-documentatie voor meer informatie.
=Year(Fields!OrderDate.Value)
U kunt functies in een expressie combineren om de indeling aan te passen. Met de volgende expressie wordt de notatie van een datum in de notatie maand-dag-jaar gewijzigd in maand-week-weeknummer. Wijzig bijvoorbeeld '12-18-2022' in 'Week 3 van december':
=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
Wanneer u deze expressie gebruikt als een berekend veld in een gegevensset, kunt u deze expressie in een grafiek gebruiken om binnen elke maand waarden per week samen te voegen.
Met de volgende expressie wordt de waarde SellStartDate opgemaakt als MMM-yy. Het veld SellStartDate is een datum/tijd-gegevenstype.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")
Met de volgende expressie wordt de waarde SellStartDate opgemaakt als dd/MM/jjjj. Het veld SellStartDate is een datum/tijd-gegevenstype.
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
De functie CDate converteert de waarde naar een datum. De functie Now retourneert een datumwaarde met de huidige datum en tijd op basis van uw systeem. DateDiff retourneert een lange waarde die het aantal tijdsintervallen tussen twee datumwaarden aangeeft.
In het volgende voorbeeld wordt de begindatum van het huidige jaar weergegeven
=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))
In het volgende voorbeeld wordt de begindatum voor de vorige maand weergegeven op basis van de huidige maand.
=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))
Met de volgende expressie worden de intervaljaren tussen SellStartDate en LastReceiptDate gegenereerd. Deze velden bevinden zich in twee verschillende gegevenssets, DataSet1 en DataSet2.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
De functie DatePart retourneert een geheel getal dat het opgegeven onderdeel van een bepaalde datumwaarde bevat. De volgende expressie retourneert het jaar voor de eerste waarde van de SellStartDate in DataSet1. Het bereik van de gegevensset wordt opgegeven omdat het rapport meerdere gegevenssets bevat.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))
De functie DateSerial retourneert een datumwaarde die een opgegeven jaar, maand en dag vertegenwoordigt, waarbij de tijdgegevens zijn ingesteld op middernacht. In het volgende voorbeeld wordt de einddatum voor de vorige maand weergegeven op basis van de huidige maand.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)
In de volgende expressies worden verschillende datums weergegeven op basis van een datumparameterwaarde die door de gebruiker is geselecteerd.
Voorbeeldbeschrijving | Opmerking |
---|---|
Gisteren | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1) |
Twee dagen geleden | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2) |
Een maand geleden | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value)) |
Twee maanden geleden | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value)) |
Een jaar geleden | =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Twee jaar geleden | =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
Tekenreeksfuncties
Combineer meer dan één veld met behulp van samenvoegingsoperatoren en Visual Basic-constanten. De volgende expressie retourneert twee velden, elk op een afzonderlijke regel in hetzelfde tekstvak:
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
Datums en getallen in een tekenreeks opmaken met de functie Opmaak . De volgende expressie geeft waarden weer van de parameters StartDate en EndDate in lange datumnotatie:
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
Als het tekstvak slechts een datum of getal bevat, moet u de eigenschap Opmaak van het tekstvak gebruiken om opmaak toe te passen in plaats van de functie Opmaak in het tekstvak.
De functies Right, Len en InStr zijn handig voor het retourneren van een subtekenreeks, bijvoorbeeld het bijsnijden van de gebruikersnaam domein\tot alleen de gebruikersnaam. De volgende expressie retourneert het deel van de tekenreeks rechts van een backslash (\) van een parameter met de naam Gebruiker:
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
De volgende expressie resulteert in dezelfde waarde als de vorige, waarbij leden van de .NET Framework-klasse
xref:System.String
worden gebruikt in plaats van Visual Basic-functies:=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
De geselecteerde waarden uit een parameter met meerdere waarden weergeven. In het volgende voorbeeld wordt de functie Join gebruikt om de geselecteerde waarden van de parameter MySelection samen te voegen in één tekenreeks die kan worden ingesteld als een expressie voor de waarde van een tekstvak in een rapportitem:
= Join(Parameters!MySelection.Value)
In het volgende voorbeeld wordt hetzelfde uitgevoerd als in het vorige voorbeeld en wordt een tekenreeks weergegeven voorafgaand aan de lijst met geselecteerde waarden.
="Report for " & JOIN(Parameters!MySelection.Value, " & ")
De Regex-functies van .NET Framework
xref:System.Text.RegularExpressions
zijn handig voor het wijzigen van de indeling van bestaande tekenreeksen, bijvoorbeeld het opmaken van een telefoonnummer. In de volgende expressie wordt de functie Replace gebruikt om de notatie van een tiencijferig telefoonnummer in een veld te wijzigen van 'nnn-nnn-nnnn' in '(nnn) nnn-nnnn':=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
Notitie
Controleer of de waarde voor Velden! Phone.Value heeft geen extra spaties en is van het type
xref:System.String
.
Zoekopdracht
Door een sleutelveld op te geven, kunt u de functie Opzoeken gebruiken om een waarde op te halen uit een gegevensset voor een een-op-een-relatie, bijvoorbeeld een sleutel-waardepaar. In de volgende expressie wordt de productnaam uit een gegevensset ('Product') weergegeven, zodat de product-id overeenkomt met:
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields.ProductName.Value, "Product")
LookupSet
Door een sleutelveld op te geven, kunt u de functie LookupSet gebruiken om een set waarden op te halen uit een gegevensset voor een een-op-veel-relatie. Een persoon kan bijvoorbeeld meerdere telefoonnummers hebben. In het volgende voorbeeld wordt ervan uitgegaan dat de gegevensset PhoneList een persoons-id en een telefoonnummer in elke rij bevat. LookupSet retourneert een matrix met waarden. De volgende expressie combineert de retourwaarden in één tekenreeks en geeft de lijst met telefoonnummers weer voor de persoon die is opgegeven door ContactID:
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
Conversiefuncties
U kunt Visual Basic-functies gebruiken om een veld van het ene gegevenstype te converteren naar een ander gegevenstype. Conversiefuncties kunnen worden gebruikt om het standaardgegevenstype voor een veld te converteren naar het gegevenstype dat nodig is voor berekeningen of om tekst te combineren.
Met de volgende expressie wordt de constante 500 geconverteerd naar het type Decimaal om deze te vergelijken met een transact-SQL-geldgegevenstype in het veld Waarde voor een filterexpressie.
=CDec(500)
In de volgende expressie wordt het aantal waarden weergegeven dat is geselecteerd voor de parameter MySelection met meerdere waarden.
=CStr(Parameters!MySelection.Count)
Beslissingsfuncties
De functie IIF retourneert een van de twee waarden, afhankelijk van of de expressie waar is of niet. De volgende expressie gebruikt de functie IIF om een Booleaanse waarde true te retourneren als de waarde van LineTotal groter is dan 100. Anders wordt false geretourneerd:
=IIF(Fields!LineTotal.Value > 100, True, False)
Gebruik meerdere IIF-functies (ook wel 'geneste IIFs' genoemd) om een van de drie waarden te retourneren, afhankelijk van de waarde van PctComplete. De volgende expressie kan in de opvulkleur van een tekstvak worden geplaatst om de achtergrondkleur te wijzigen, afhankelijk van de waarde in het tekstvak.
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
Waarden groter dan of gelijk aan 10 beeldschermen met een groene achtergrond, tussen 1 en 9, met een blauwe achtergrond en minder dan 1 display met een rode achtergrond.
Een andere manier om dezelfde functionaliteit te krijgen, maakt gebruik van de functie Switch . De functie Switch is handig wanneer er drie of meer voorwaarden zijn om te testen. De functie Schakelen retourneert de waarde die is gekoppeld aan de eerste expressie in een reeks die resulteert in waar:
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red")
Waarden groter dan of gelijk aan 10 beeldschermen met een groene achtergrond, tussen 1 en 9, met een blauwe achtergrond, gelijk aan 1 display met een gele achtergrond en 0 of minder display met een rode achtergrond.
Test de waarde van het veld ImportantDate en retourneer 'Rood' als het meer dan een week oud is en 'Blauw' anders. Deze expressie kan worden gebruikt om de eigenschap Kleur van een tekstvak in een rapportitem te beheren:
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
Test de waarde van het veld PhoneNumber en retourneer 'Geen waarde' als deze null is (niets in Visual Basic); retourneer anders de waarde van het telefoonnummer. Deze expressie kan worden gebruikt om de waarde van een tekstvak in een rapportitem te bepalen.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
Test de waarde van het veld Afdeling en retourneer een subrapportnaam of een null (niets in Visual Basic). Deze expressie kan worden gebruikt voor subrapporten voor voorwaardelijke drillthrough.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
Test of een veldwaarde null is. Deze expressie kan worden gebruikt om de eigenschap Verborgen van een afbeeldingsrapportitem te beheren. In het volgende voorbeeld wordt de afbeelding die is opgegeven door het veld LargePhoto alleen weergegeven als de waarde van het veld niet null is.
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)
De functie MonthName retourneert een tekenreekswaarde met de naam van de opgegeven maand. In het volgende voorbeeld wordt NA weergegeven in het veld Maand wanneer het veld de waarde 0 bevat.
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
Rapportfuncties
In een expressie kunt u een verwijzing toevoegen naar aanvullende rapportfuncties waarmee gegevens in een rapport worden bewerkt. Deze sectie bevat voorbeelden voor twee van deze functies.
Sum
Met de functie Som kunnen de waarden in een groep of gegevensgebied worden opgeteld. Deze functie kan handig zijn in de kop- of voettekst van een groep. In de volgende expressie wordt de som van de gegevens in de groep Order of gegevensregio weergegeven:
=Sum(Fields!LineTotal.Value, "Order")
U kunt ook de functie Som gebruiken voor berekeningen voor voorwaardelijke statistische gegevens. Als een gegevensset bijvoorbeeld een veld heeft met de naam State met mogelijke waarden Niet gestart, Gestart, Voltooid, wordt de volgende expressie, wanneer deze in een groepskoptekst wordt geplaatst, de cumulatieve som berekend voor alleen de waarde Voltooid:
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))
Rijnummer
De functie RowNumber , wanneer deze wordt gebruikt in een tekstvak binnen een gegevensgebied, geeft het rijnummer weer voor elk exemplaar van het tekstvak waarin de expressie wordt weergegeven. Deze functie kan handig zijn voor het nummeren van rijen in een tabel. Het kan ook handig zijn voor complexere taken, zoals het leveren van pagina-einden op basis van het aantal rijen. Zie Pagina-einden in dit artikel voor meer informatie.
Het bereik dat u opgeeft voor rownumber-besturingselementen bij het opnieuw nummeren begint. Het trefwoord Niets geeft aan dat de functie begint te tellen bij de eerste rij in het buitenste gegevensgebied. Als u wilt beginnen met tellen binnen geneste gegevensregio's, gebruikt u de naam van de gegevensregio. Als u wilt beginnen met tellen binnen een groep, gebruikt u de naam van de groep.
=RowNumber(Nothing)
Weergave van rapportgegevens
U kunt expressies gebruiken om te bewerken hoe gegevens in een rapport worden weergegeven. U kunt bijvoorbeeld de waarden van twee velden in één tekstvak weergeven, informatie over het rapport weergeven of van invloed zijn op de wijze waarop pagina-einden in het rapport worden ingevoegd.
Kop- en voetteksten van pagina's
Wanneer u een rapport ontwerpt, kunt u de naam van het rapport en het paginanummer in de rapportvoettekst weergeven. Hiervoor kunt u de volgende expressies gebruiken:
De volgende expressie bevat de naam van het rapport en de tijd waarop het is uitgevoerd. Het kan in een tekstvak in de voettekst van het rapport of in de hoofdtekst van het rapport worden geplaatst. De tijd is opgemaakt met de .NET Framework-opmaaktekenreeks voor korte datum:
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
De volgende expressie, geplaatst in een tekstvak in de voettekst van een rapport, bevat paginanummer en totaal aantal pagina's in het rapport:
=Globals.PageNumber & " of " & Globals.TotalPages
In de volgende voorbeelden wordt beschreven hoe u de eerste en laatste waarden van een pagina in de paginakoptekst weergeeft, vergelijkbaar met wat u in een adreslijstvermelding kunt vinden. In het voorbeeld wordt ervan uitgegaan dat een gegevensgebied een tekstvak bevat met de naam LastName.
De volgende expressie, geplaatst in een tekstvak aan de linkerkant van de paginakoptekst, biedt de eerste waarde van het tekstvak Achternaam op de pagina:
=First(ReportItems("LastName").Value)
De volgende expressie, geplaatst in een tekstvak aan de rechterkant van de paginakoptekst, biedt de laatste waarde van het tekstvak Achternaam op de pagina:
=Last(ReportItems("LastName").Value)
In het volgende voorbeeld wordt beschreven hoe u een paginatotaal weergeeft. In het voorbeeld wordt ervan uitgegaan dat een gegevensgebied een tekstvak met de naam Kosten bevat.
De volgende expressie, geplaatst in de kop- of voettekst van de pagina, geeft de som van de waarden in het tekstvak Kosten voor de pagina op:
=Sum(ReportItems("Cost").Value)
Notitie
U kunt slechts één rapportitem per expressie in een kop- of voettekst van een pagina raadplegen. U kunt ook verwijzen naar de naam van het tekstvak, maar niet naar de werkelijke gegevensexpressie in het tekstvak, in kop- en voettekstexpressies van de pagina.
Pagina-einden
In sommige rapporten kunt u een pagina-einde aan het einde van een opgegeven aantal rijen plaatsen in plaats van of naast groepen of rapportitems. Maak een groep die de gewenste groepen of detailrecords bevat, voeg een pagina-einde toe aan de groep en voeg vervolgens een groepsexpressie toe om te groeperen op een opgegeven aantal rijen.
De volgende expressie wijst, wanneer deze in de groepsexpressie wordt geplaatst, een getal toe aan elke set van 25 rijen. Wanneer een pagina-einde voor de groep is gedefinieerd, resulteert deze expressie in een pagina-einde elke 25 rijen.
=Ceiling(RowNumber(Nothing)/25)
Als u wilt toestaan dat de gebruiker een waarde instelt voor het aantal rijen per pagina, maakt u een parameter met de naam RowsPerPage en baseeert u de groepsexpressie op de parameter, zoals wordt weergegeven in de volgende expressie:
=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)
Eigenschappen
Expressies worden niet alleen gebruikt om gegevens in tekstvakken weer te geven. Ze kunnen ook worden gebruikt om te wijzigen hoe eigenschappen worden toegepast op rapportitems. U kunt stijlgegevens voor een rapportitem wijzigen of de zichtbaarheid ervan wijzigen.
Opmaak
De volgende expressie, wanneer deze wordt gebruikt in de eigenschap Kleur van een tekstvak, wijzigt de kleur van de tekst, afhankelijk van de waarde van het veld Winst :
=Iif(Fields!Profit.Value < 0, "Red", "Black")
U kunt ook de Visual Basic-objectvariabele Me gebruiken. Deze variabele is een andere manier om te verwijzen naar de waarde van een tekstvak.
=Iif(Me.Value < 0, "Red", "Black")
De volgende expressie, wanneer deze wordt gebruikt in de eigenschap BackgroundColor van een rapportitem in een gegevensgebied, wisselt de achtergrondkleur van elke rij af tussen lichtgroen en wit:
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
Als u een expressie gebruikt voor een opgegeven bereik, moet u mogelijk de gegevensset voor de statistische functie aangeven:
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
Notitie
Beschikbare kleuren zijn afkomstig uit de opsomming .NET Framework KnownColor.
Grafiekkleuren
Als u kleuren voor een shapediagram wilt opgeven, kunt u aangepaste code gebruiken om de volgorde te bepalen waarin kleuren worden toegewezen aan gegevenspuntwaarden. Dit helpt u consistente kleuren te gebruiken voor meerdere grafieken met dezelfde categoriegroepen.
Visibility
U kunt items in een rapport weergeven en verbergen met behulp van de zichtbaarheidseigenschappen voor het rapportitem. In een gegevensgebied, zoals een tabel, kunt u in eerste instantie detailrijen verbergen op basis van de waarde in een expressie.
In de volgende expressie, wanneer deze wordt gebruikt voor de eerste zichtbaarheid van detailrijen in een groep, worden de detailrijen weergegeven voor alle verkopen van meer dan 90 procent in het veld PctQuota :
=IIF(Fields!PctQuota.Value>.9, False, True)
In de volgende expressie wordt, wanneer deze is ingesteld in de eigenschap Verborgen van een tabel, alleen de tabel weergegeven als deze meer dan 12 rijen bevat:
=IIF(CountRows()>12,false,true)
De volgende expressie, wanneer deze is ingesteld in de eigenschap Verborgen van een kolom, geeft alleen de kolom weer als het veld bestaat in de rapportgegevensset nadat de gegevens zijn opgehaald uit de gegevensbron:
=IIF(Fields!Column_1.IsMissing, true, false)
URL's
U kunt URL's aanpassen met behulp van rapportgegevens en ook voorwaardelijk bepalen of URL's worden toegevoegd als actie voor een tekstvak.
Met de volgende expressie wordt, wanneer deze wordt gebruikt als een actie voor een tekstvak, een aangepaste URL gegenereerd waarmee het veld EmployeeID van de gegevensset wordt opgegeven als een URL-parameter.
="https://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
Met de volgende expressie bepaalt u voorwaardelijk of u een URL in een tekstvak wilt toevoegen. Deze expressie is afhankelijk van een parameter met de naam IncludeURLs waarmee een gebruiker kan bepalen of actieve URL's in een rapport moeten worden opgenomen. Deze expressie wordt ingesteld als een actie in een tekstvak. Door de parameter in te stellen op False en vervolgens het rapport weer te geven, kunt u het rapport zonder hyperlinks exporteren naar Microsoft Excel.
=IIF(Parameters!IncludeURLs.Value,"https://adventure-works.com/productcatalog",Nothing)
Notitie
Gepagineerde Power BI-rapporten bieden geen ondersteuning voor het gebruik van JavaScript in een Go To URL-expressie .
Rapportgegevens
Expressies kunnen worden gebruikt om de gegevens te bewerken die in het rapport worden gebruikt. U kunt verwijzen naar parameters en andere rapportgegevens. U kunt zelfs de query wijzigen die wordt gebruikt om gegevens voor het rapport op te halen.
Parameters
U kunt expressies in een parameter gebruiken om de standaardwaarde voor de parameter te variëren. U kunt bijvoorbeeld een parameter gebruiken om gegevens te filteren op een bepaalde gebruiker op basis van de gebruikers-id die wordt gebruikt om het rapport uit te voeren.
De volgende expressie, wanneer deze wordt gebruikt als de standaardwaarde voor een parameter, verzamelt de gebruikers-id van de persoon die het rapport uitvoert:
=User!UserID
Als u wilt verwijzen naar een parameter in een queryparameter, filterexpressie, tekstvak of een ander gebied van het rapport, gebruikt u de algemene verzameling Parameters . In dit voorbeeld wordt ervan uitgegaan dat de parameter afdeling heet:
=Parameters!Department.Value
Parameters kunnen worden gemaakt in een rapport, maar worden ingesteld op verborgen. Wanneer het rapport wordt uitgevoerd op de rapportserver, wordt de parameter niet weergegeven op de werkbalk en kan de rapportlezer de standaardwaarde niet wijzigen. U kunt een verborgen parameter gebruiken die is ingesteld op een standaardwaarde die een aangepaste constante is. U kunt deze waarde gebruiken in elke expressie, inclusief een veldexpressie. De volgende expressie identificeert het veld dat is opgegeven met de standaardparameterwaarde voor de parameter ParameterField:
=Fields(Parameters!ParameterField.Value).Value
Aangepaste code
U kunt aangepaste code gebruiken die is ingesloten in een rapport.
Groepsvariabelen gebruiken voor aangepaste aggregatie
U kunt de waarde initialiseren voor een groepsvariabele die lokaal is voor een bepaald groepsbereik en vervolgens een verwijzing naar die variabele opnemen in expressies. Een van de manieren waarop u een groepsvariabele met aangepaste code kunt gebruiken, is door een aangepaste statistische functie te implementeren.
Null- of nulwaarden tijdens runtime onderdrukken
Sommige waarden in een expressie kunnen worden geëvalueerd als null of niet gedefinieerd tijdens de verwerkingstijd van het rapport. Hierdoor kunnen runtimefouten worden gemaakt die resulteren in #Error die worden weergegeven in het tekstvak in plaats van de geëvalueerde expressie. De functie IIF is bijzonder gevoelig voor dit gedrag, omdat, in tegenstelling tot een If-Then-Else-instructie, elk deel van de IIF-instructie wordt geëvalueerd (inclusief functieaanroepen) voordat deze wordt doorgegeven aan de routine die wordt getest op waar of onwaar. De instructie =IIF(Fields!Sales.Value is NOTHING, 0, Fields!Sales.Value)
genereert #Error in het weergegeven rapport als velden! Sales.Value is NIETS.
Gebruik een van de volgende strategieën om deze voorwaarde te voorkomen:
Stel de teller in op 0 en de noemer op 1 als de waarde voor veld B 0 of niet gedefinieerd is; anders stelt u de teller in op de waarde voor veld A en de noemer op de waarde voor veld B.
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
Gebruik een aangepaste codefunctie om de waarde voor de expressie te retourneren. In het volgende voorbeeld wordt het percentageverschil tussen een huidige waarde en een vorige waarde geretourneerd. Dit kan worden gebruikt voor het berekenen van het verschil tussen twee opeenvolgende waarden en het verwerkt het edge-geval van de eerste vergelijking (wanneer er geen vorige waarde is) en gevallen waarin de vorige waarde of de huidige waarde null is (niets in 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
In de volgende expressie ziet u hoe u deze aangepaste code aanroept vanuit een tekstvak voor de container ColumnGroupByYear (groep of gegevensregio).
=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))
Deze code helpt bij het voorkomen van runtime-uitzonderingen. U kunt nu een expressie zoals
=IIF(Me.Value < 0, "red", "black")
in de eigenschap Kleur van het tekstvak gebruiken om tekst voorwaardelijk weer te geven op basis van of de waarden groter zijn dan of kleiner dan 0.