Werken met DAX-functies
De DAX-functiebibliotheek bestaat uit honderden functies, die elk zijn ontworpen voor een specifiek doel.
Omdat DAX is ontstaan uit de Power Pivot-invoegtoepassing voor Microsoft Excel 2010, zijn er meer dan 80 functies beschikbaar die ook in Excel te vinden zijn. Dit was een bewuste ontwerpstrategie van Microsoft om ervoor te zorgen dat Excel-gebruikers snel productief kunnen worden met DAX.
Er zijn echter veel functies die u niet kunt vinden in Excel omdat deze specifiek zijn voor gegevensmodellering:
- Functies voor het navigeren door relaties
- Functies voor het wijzigen van filtercontext
- Iterator-functies
- Time intelligence-functies
- Padfuncties
Tip
Als u wilt zoeken naar documentatie die betrekking heeft op een DAX-functie, voert u in een zoekopdracht op internet het sleutelwoord DAX- gevolgd door de naam van de functie in.
Zie de naslaginformatie over DAX-functies voor meer informatie.
Functies die afkomstig zijn uit Excel
In de volgende secties worden verschillende handige functies beschreven die u mogelijk al kent, omdat ze in Excel aanwezig zijn.
De IF
DAX-functie test of aan een voorwaarde wordt voldaan die als het eerste argument is opgegeven. Er wordt één waarde geretourneerd als de voorwaarde TRUE is en de andere waarde wordt geretourneerd als de voor waarde FALSE is. De syntaxis van de functie is als volgt:
IF(<logical_test>, <value_if_true>[, <value_if_false>])
Tip
Een functieargument is optioneel wanneer dit in de documentatie tussen vierkante haken wordt weergegeven.
Als logical_test wordt geëvalueerd als FALSE en value_if_false niet is opgegeven, retourneert de functie BLANK.
Er zijn veel samenvattingsfuncties van Excel beschikbaar, waaronder SUM
, COUNT
, AVERAGE
, MIN
, MAX
en vele andere. Het enige verschil is dat u in DAX een kolomreferentie doorgeeft, terwijl u in Excel een celbereik doorgeeft.
Veel rekenkundige, tekst-, datum-, tijd-, informatie- en logische functies uit Excel zijn ook beschikbaar. Een klein voorbeeld van Excel-functies die beschikbaar zijn in DAX zijn ABS
bijvoorbeeld , ROUND
, , SQRT
, LEN
YEAR
UPPER
RIGHT
LEFT
DATE
MONTH
, , NOW
ISNUMBER
, TRUE
, FALSE
, AND
, , OR
, NOT
en .IFERROR
Functies die niet afkomstig zijn uit Excel
Twee handige DAX-functies die niet specifiek zijn voor modellering en die niet afkomstig zijn van Excel, zijn DISTINCTCOUNT
en DIVIDE
.
De functie DISTINCTCOUNT
U kunt de DISTINCTCOUNT
DAX-functie gebruiken om het aantal afzonderlijke waarden in een kolom te tellen. Deze functie is met name krachtig in een analyseoplossing. Houd er rekening mee dat het aantal klanten afwijkt van het aantal afzonderlijke klanten. Dit geldt niet voor herhaalde klanten, dus het verschil is 'Hoeveel klanten' vergeleken met 'Hoeveel verschillende klanten'.
De functie DIVIDE
U kunt de DIVIDE
DAX-functie gebruiken om deling te bereiken. U moet de expressies voor teller en noemer opgeven. U kunt desgewenst een waarde opgeven die een alternatief resultaat oplevert. De DIVIDE
syntaxis van de functie is:
DIVIDE(<numerator>, <denominator>[, <alternate_result>])
De DIVIDE
functie verwerkt automatisch deling door nul gevallen. Als er geen alternatief resultaat wordt doorgegeven en de noemer nul of BLANK is, retourneert de functie BLANK. Wanneer een alternatief resultaat wordt doorgegeven, wordt dit geretourneerd in plaats van BLANK.
Deze functie is handig omdat uw expressie niet eerst de waarde voor de noemer hoeft te testen. De functie is ook beter geoptimaliseerd voor het testen van de noemerwaarde dan de IF
functie. De prestatieverbetering is aanzienlijk omdat controleren op delen door nul kostbaar is. Bovendien resulteert het gebruik van de DIVIDE
functie in een beknoptere en elegantere expressie.
Tip
U wordt aangeraden de DIVIDE
functie te gebruiken wanneer de noemer een expressie is die nul of LEEG kan retourneren. Als de noemer een constante waarde is, raden we u aan de operator voor delen (/) te gebruiken, die later in deze module wordt geïntroduceerd. In dit geval slaagt de deling gegarandeerd en presteert uw expressie beter, omdat wordt voorkomen dat er onnodige tests worden uitgevoerd.