Ik zocht een formule om een kolom in mijn tabular model op nul te zetten op basis van de gebruiker die is ingelogd. Dit is een snelle workaround. In SSAS Tabular 2016 kun je geen kolommen verbergen. Wij zijn een dimensioneel model gewend. We moesten snel een oplossing vinden.
Na wat proberen vond ik een formule. De truc is om te controleren welke gebruiker het Tabular model gebruikt. Staat de gebruiker in mijn hardcoded lijst (controle met USERNAME() ), dan doen we * 1, anders doen we * 0.
DAX-formule:
Marge Reeel Totaal:=
SUMX(
DeclaratieRegel;
DeclaratieRegel[_Marge Reeel Totaal] *
SWITCH(
USERNAME();
“NL\00007892”; 1;
“NL\00007444”; 1;
0
)
)
Veelgestelde vragen
Hoe zet ik in een DAX tabular model een kolom op nul voor bepaalde gebruikers?
Zet de kolom in een SUMX en vermenigvuldig hem met een SWITCH op USERNAME(). Gebruikers in je hardcoded lijst krijgen een 1. Alle anderen krijgen een 0, dus voor hen toont de kolom nul.
Kun je een kolom verbergen in SSAS Tabular 2016?
Nee. In SSAS Tabular 2016 kun je geen kolommen verbergen. Een DAX-workaround zet de kolom op nul voor gebruikers die hem niet mogen zien.
Hoe werkt de functie USERNAME() in een DAX-measure?
USERNAME() geeft de gebruiker terug die het tabular model gebruikt. De measure vergelijkt die met een hardcoded lijst namen zoals NL\00007892. Bij een match wordt de waarde met 1 vermenigvuldigd.
Wat doet de functie SWITCH in deze DAX-formule?
SWITCH vergelijkt USERNAME() met elke gebruiker in de lijst. Een gebruiker uit de lijst geeft 1. Het laatste argument, 0, geldt voor alle anderen, dus hun kolomwaarde wordt met nul vermenigvuldigd.
Waarom SUMX voor deze beveiligingsworkaround in DAX?
SUMX loopt rij voor rij door de tabel DeclaratieRegel. Het vermenigvuldigt elke rij van de kolom Marge Reeel Totaal met 1 of 0, afhankelijk van de gebruiker. Voor gebruikers buiten de lijst is de som dan nul.
Reacties
Gerelateerde blogs
Klantgegevens verrijken met de postcodetabel
De 5 beste voorbeelden van big data in de praktijk
Top 3 van de beste ETL-tools op de markt in 2017