Filtercontext onderzoeken

Met de DAX-functie VALUES kunnen uw formules bepalen welke waarden zich in de filtercontext bevinden. De syntaxis van de functie VALUES is als volgt:

VALUES(<TableNameOrColumnName>)

Voor de functie moet een tabelverwijzing of een kolomverwijzing worden doorgegeven. Wanneer u een tabelverwijzing doorgeeft, wordt een tabelobject geretourneerd met dezelfde kolommen die rijen bevatten voor de filtercontext. Wanneer u een kolomverwijzing doorgeeft, wordt een tabel met één kolom geretourneerd met unieke waarden die zich in de filtercontext bevinden.

De functie retourneert altijd een tabelobject en het is mogelijk dat een tabel meerdere rijen bevat. Om te testen of een specifieke waarde zich in de filtercontext bevindt, moet uw formule daarom eerst testen of de functie VALUES een enkele rij retourneert. U kunt deze taak uitvoeren met twee functies: de DAX-functies HASONEVALUE en SELECTEDVALUE.

De functie HASONEVALUE retourneert TRUE als een bepaalde kolomverwijzing tot een enkele waarde is gefilterd.

De functie SELECTEDVALUE vereenvoudigt het bepalen wat een enkele waarde zou kunnen zijn. Wanneer een kolomverwijzing door de functie wordt doorgegeven, wordt er één waarde geretourneerd of wanneer zich meer dan één waarde in de filtercontext bevindt, retourneert deze BLANK (of een alternatieve waarde die u aan de functie doorgeeft).

In het volgende voorbeeld gebruikt u de functie HASONEVALUE. Voeg de volgende meting toe, waarmee verkoopprovisie wordt berekend. Houd er rekening mee dat het provisiepercentage bij Adventure Works 10 procent van de omzet is voor alle landen, behalve de Verenigde Staten. In de Verenigde Staten verdienen verkopers een provisie van 15 procent. Maak de meting op als valuta met twee decimalen en voeg deze vervolgens toe aan de tabel die is gevonden op pagina 3 van het rapport.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

Een afbeelding toont een tabelbesturingselement met drie kolommen: Region, Revenue en Sales Commission. Er worden tien regiorijen en een totaal weergegeven. De totale Sales Commission is BLANK.

U ziet dat het resultaat van de totale Sales Commission BLANK is. De reden hiervoor is dat er meerdere waarden zijn in de filtercontext voor de kolom Country in de tabel Sales Territory. In dit geval retourneert de functie HASONEVALUE FALSE, wat ertoe leidt dat de meting Revenue wordt vermenigvuldigd met BLANK (een waarde die wordt vermenigvuldigd met BLANK is BLANK). Als u een totaal wilt produceren, moet u een iterator-functie gebruiken. Dit wordt later in deze module uitgelegd.

Er zijn drie andere functies die u kunt gebruiken om de filterstatus te testen:

  • De DAX-functieISFILTERED : retourneert TRUE wanneer een doorgegeven kolomverwijzing direct wordt gefilterd.

  • De DAX-functieISCROSSFILTERED : retourneert TRUE wanneer een doorgegeven kolomverwijzing indirect wordt gefilterd. Een kolom wordt kruislings gefilterd wanneer een filter dat wordt toegepast op een andere kolom in dezelfde tabel of in een gerelateerde tabel van invloed is op de verwijzingskolom door deze te filteren.

  • De DAX-functieISINSCOPE: retourneert TRUE als een doorgegeven kolomverwijzing het niveau in een hiërarchie van niveaus is.

Ga terug naar pagina 2 van het rapport en wijzig vervolgens de definitie van de meting Revenue % Total Country om te testen of de kolom Region in de tabel Sales Territory binnen het bereik valt. Als deze niet binnen het bereik valt, moet het resultaat van de meting BLANK zijn.

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    IF(
        ISINSCOPE('Sales Territory'[Region]),
        DIVIDE(
            CurrentRegionRevenue,
            TotalCountryRevenue
        )
    )

Een afbeelding toont een matrix-besturingselement met de titel Reseller Revenue has Group, Country en Region gegroepeerd in de rijen, en een samenvatting van Revenue, Revenue % Total Region, Revenue % Total Country en Revenue % Total Group. Waarden die BLANK zijn, bevinden zich in de samenvatting voor % Total Country.

In het matrix-besturingselement ziet u dat de waarden voor Revenue % Total Country nu alleen worden weergegeven wanneer een regio binnen het bereik valt.