Tabular Editor Best Practice Analyzer
Tabular Editor is een veel gebruikte tool om semantische modellen te bewerken. Dit is al in verschillende blogs naar voren gekomen. Er bestaan natuurlijk veel best practices voor het ontwikkelen van een model. Maar hoe toets je deze regels nu op je model. Binnen Tabular Editor is de Best Practice Analyzer beschikbaar. Ook wel BPA genoemd. Met deze tool kun je vooraf gedefineerde regels toetsen en toepassen op je model.
Tabular model best practice
Er bestaan natuurlijk veel theorieen en artikelen over de best practice om een model te ontwikkelen. Een aantal voorbeelden waaraan een goed model moet voldoen zijn bijvoorbeeld.
- Gebruik zoveel mogelijk ster-schema's
- Hanteer gepaste naamgeving voor de dimensie en feitentabellen
- Voorkom bi-directionele relaties
- Voorkom many-to-many relaties
- Gebruik van datum-tabellen in het model
- Splits velden in datum- en tijdvelden
- Gebruik van de divide functie
- Partitioneer grote tabellen
Deze lijst kan natuurlijk nog veel verder uitgebreid worden en verder zijn er natuurlijk ook nog veel technische aspecten waar een model aan moet voldoen. Verder kan het natuurlijk ook zo zijn dat een model binnen een organisatie aan bepaalde naamgevingsstandaarden moet voldoen.
Wat is de Best Practice Analyzer
De Best Practice Analyzer is een tool binnen Tabular Editor waarmee je regels kunt definiëren waaraan de metadata van het model aan moet voldoen. De best practices waar een model dus volgens jou aan moet voldoen kan worden vetaald in een aantal regels. Deze regels kun je dan toepassen op je model. Voor bepaalde regels is het zelfs mogelijk om de objecten die niet aan de regel voldoen gelijk automatisch aan te passen. Hierbij moet je bijvoorbeeld denken aan het aanpassen van bepaalde properties.
BPA regels definiëren
De regels waaraan een model moet voldoen kunnen worden gedefinieerd binnen Tabular Editor door het "Manage BPA rules" menu te openen via Tools. Hier kunnen bestaande regels worden aangepast of nieuwe regels worden aangemaakt. Per regel kan dan ook worden aangegeven op welke objecten deze van toepassing is en of deze wel of niet op het huidige model toegepast moet worden. Een aantal voorbeelden van regels die zeker nuttig zijn om op je model te toetsen is bijvoorbeeld:
- Het gebruik van de divide functie in plaats van het deelteken om errors te voorkomen
- Checken op bi-directionele relaties
- Checken op tabellen zonder relatie
- Checken of dubbele velden
BPA regels importeren
Om zelf te BPA regels te definiëren is wel redelijk wat C# kennis nodig. Het kan dus best wel even duren voordat je simpel je eigen regels kunt aanmaken. Gelukkig zijn er ook een aantal sets van regels beschikbaar die je kunt importeren door een script uit te voeren of een json file te downloaden. Deze sets van regels bevatten een aantal standaard best practice regels die je dan gelijk op je model kunt toetsen. Een voorbeeld van zo'n set van regels vind je bijvoorbeeld hier.
BPA regels toepassen
Via hetzelfde menu kun je de BPA regels toepassen op je model. Per regel wordt dan aangegeven welke objecten er niet aan voldoen. Per regel of object heb je de volgende mogelijkheden.
Go to object
Dit brengt je naar het desbetreffende object in Tabular Editor, zodat je het zelf kan aanpassen
Ignore Rule
Hiermee kan de regel worden genegeerd.
Generate fix script
Deze optie is alleen beschikbaar als het object met een script aangepast kan worden, zodat het aan de regel voldoet. Als je voor de optie "Generate script" kiest kan het script nog worden nagelezen en aangepast voordat het wordt uitgevoerd.
Apply fix
Hiermee worden de geselecteerde objecten (of de geselecteerde regel) gelijk aangepast zodat ze aan de regel voldoen.
Conclusie
De Best Practice Analyzer is een handige tool om je model te toetsen aan een aantal basis regels. Deze regels zijn te importeren en hoeven dan ook niet zelf verzonnen dan wel gemaakt te worden. Er zijn ook een aantal regels die voor betere performance van het model kunnen zorgen of voor een kleiner model. Denk hierbij bijvoorbeeld aan de IsAvailableInMdx property. Een aantal regels is ook minder relevant, maar deze kunnen desgewenst uitgeschakeld worden. Wat mij betreft dus een handige tool om je model mee te toetsen.