Filtercontext onderzoeken

Voltooid

Met de VALUES DAX-functie kunnen uw formules bepalen welke waarden zich in de filtercontext bevinden.

De VALUES syntaxis van de functie 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. Als u wilt testen of een specifieke waarde zich in de filtercontext bevindt, moet uw formule daarom eerst testen of de VALUES functie één rij retourneert. Twee functies kunnen u helpen deze taak uit te voeren: de HASONEVALUE en de SELECTEDVALUE DAX-functies.

De HASONEVALUE functie retourneert TRUE wanneer een bepaalde kolomreferentie is gefilterd tot één waarde.

De SELECTEDVALUE functie vereenvoudigt de taak om te 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 HASONEVALUE functie. Voeg de volgende meting, waarmee de verkoopprovisie wordt berekend, toe aan de tabel Verkoop . Houd er rekening mee dat bij Adventure Works het commissietarief 10 procent van de omzet is voor alle landen/regio's, met uitzondering van 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 meerdere waarden zich in de filtercontext bevinden voor de kolom Land in de tabel Verkoopgebied . In dit geval retourneert FALSEde HASONEVALUE functie , waardoor de meting Revenue wordt vermenigvuldigd met BLANK (een waarde 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:

  • ISFILTERED - Retourneert TRUE wanneer een doorgegeven kolomverwijzing rechtstreeks wordt gefilterd.
  • ISCROSSFILTERED - 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.
  • ISINSCOPE - Retourneert TRUE wanneer een doorgegeven kolomverwijzing het niveau in een hiërarchie van niveaus is.

Ga terug naar pagina 2 van het rapport en wijzig vervolgens de metingdefinitie Omzet % totaal land om te testen of de kolom Regio in de tabel Verkoopgebied 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.