Het oplossen van een foutmelding in Power BI
In mijn zesde blog over Power BI in de praktijk van Kasparov BI (en de eerste in de nieuwe serie ‘Power BI – het vervolg’) wil ik het graag hebben over hoe je een data-foutmelding oplost in Power BI. Ook nu weer: voer voor vakgenoten, voel je vrij om feedback te geven of vragen te stellen. Dit is altijd welkom!
Inleiding
Stel: Er is een prachtig dashboard gecreëerd, maar volgens de eindgebruiker klopt de data niet. De oorzaak is onduidelijk, het kan aan meerdere factoren liggen. Zo kan bijvoorbeeld de onderliggende data onjuist zijn, een externe factor zoals een pagina filter of een verkeerd gekozen visualisatie heeft een negatieve invloed, er zit een fout in een berekening, het datamodel heeft een foutieve relatie, of er is een foutieve stap toegevoegd in M-Query.
Dit artikel beschrijft hoe je op een gestructureerde manier een foutmelding kunt oplossen. Het volgt de ‘6 stappen van Power BI’ van achteren naar voren, aangevuld met tips & tricks. Ken je de stappen niet, dan is het handig eerst de Introductie van Power BI te lezen: https://kasparov-bi.nl/ of https://bi-inside.com. Een korte samenvatting staat onder dit artikel.
Omgekeerde volgorde
Voor het oplossen van een foutmelding is het belangrijk om de stappen van Power BI in omgekeerde volgorde te doorlopen. Men heeft dan de mogelijkheid om elke stap te onderzoeken en mogelijke fouten te definiëren. Controleer per stap de gemaakte keuzes en de aansluiting van deze keuzes met voorgaande stappen.
Definieer vooraf het juiste of verwachte resultaat bij de eindgebruiker. Dit zal helpen met het onderzoek.
Hieronder volgt een stappenplan met controles die uitgevoerd kunnen worden in het proces van foutoplossing.
- Externe factoren ( Filters etc.. )
- Controleer of de data wordt beïnvloed door externe factoren zoals filters etc..
- Controleer of je de verwachte data kan vinden in het data-overzicht.
Begin met het een voor een verwijderen van alle pagina en visualisatie filters. Dit is belangrijk, omdat het uitsluit dat de foutmelding wordt veroorzaakt door een externe factor, zoals een visualisatie of pagina filter. Begin zonder externe factoren aan het proces.
Aan het eind van dit stappenplan worden alle filters weer teruggezet om te zien of die de data beïnvloeden. Het proces is dan onderzocht zonder externe factoren.
Wordt er gebruik gemaakt van de ‘import modus’, onderzoek dan of de data (volledig) is ingeladen in Power BI. Maak bijvoorbeeld een aansluiting van het aantal regels.
- Visualisatie
- De beste visualisatie voor fout-oplossingen is een matrix visualisatie.
Voor het oplossen van een foutmelding is het belangrijk om de juiste visualisatie te kiezen. Dashboards met staaf- en cirkeldiagrammen zijn niet efficiënt voor het oplossen van foutmeldingen, want deze vorm van visualisatie zorgt voor minder zicht op onderliggende data zoals categorieën en totalen.
Houd de stelselregel aan: Als de data niet goed uitkomt in een matrix, dan komt het ook niet goed uit in een andere visualisatie.
Het is van belang om de berekening of data in een matrix-visualisatie te plaatsen. De data en totalen kunnen dan worden gecontroleerd op basis van categorieën. De data in een matrix plaatsen, geeft vaak al een eerste inzicht in waar de foutmelding zich kan bevinden.
Houd er rekening mee dat sommige visualisaties, zoals een cirkeldiagram, geen negatieve waarden ondersteunen. Daarnaast kan conditionele formatting ook invloed hebben op zichtbaarheid van data.
- DAX
- Schrijf de volledige berekening uit ( Maak van elke stap een aparte berekening )
- Controleer de totalen
- Controleer of het gebruik van variabelen naar behoren werkt
- Controleer of de gekozen calculatiemethode past in de betreffende context
Een DAX-berekening bestaat vaak uit meerdere variabelen of gerefereerde berekeningen. Als in de voorgaande stap ‘visualisatie’ een matrix is gekozen, dan kan de berekening volledig worden uitgeschreven. Het is namelijk goed mogelijk dat ‘variabelen’ niet werkt of de foutmelding voorkomt in een voorgaande berekening.
Houd de volgende stelselregel aan: Probeer de berekening uit te schrijven in behapbare en begrijpbare onderdelen en controleer elk onderdeel apart.
Oplossingsmogelijkheden
- De measure zelf
Als het probleem zich voordoet in de berekening, probeer deze dan op een andere manier te herschrijven. Er zijn vaak meerdere manieren om een DAX-berekening te schrijven.
- Totaal regel
Als het probleem zich voordoet in de totalen, probeer dan de functionaliteit sumx in combinatie met values. Deze functionaliteit beïnvloedt het totaal.
- De variabelen
Als het probleem zich voordoet in de variabelen, probeer hier dan een aparte measure van te maken of de variabelen te voorkomen. Variabelen zijn belangrijk om meerdere redenen: leesbaarheid van de code, opsplitsing van de uitvoering in logische stappen, gemakkelijker debuggen van de code, betere prestatie.
Onthoud wel dat een variabele slechts één keer wordt berekend. Alles wat (herhalende) rijcontext vereist, zoals de functionaliteit Sumx, zal niet werken. Dit geldt ook als een rijcontext functionaliteit is gebruikt in de lineage van de berekening.
4. Datamodel
- Controleer het gebruik van bi-directionele relaties
- Controleer de volledigheid van tussentabellen
Als de oorzaak niet ligt bij externe factoren, het gebruik van de verkeerde visualisatie of de DAX-berekeningen, kan die mogelijk liggen in het datamodel. Het gebruik van bi-directionele relaties of onvolledigheid van tussentabellen, kan disruptie veroorzaken in het pad dat Power BI aflegt om tot de juiste data te komen. Het is dan ook zeer belangrijk om het datamodel in te richten volgens de best practices.
Houd de volgende stelselregel aan: Controleer het datamodel op bi-directionele relaties, de volledigheid van tussentabellen of andere afwijkende zaken.
Oplossingmogelijkheden
- In het geval van bi-directionele relatie
Een bi-directionele relatie hoort te allen tijde te worden voorkomen. De enige situatie waarin dit zou mogen voorkomen, is als een van de twee tabellen geen andere relaties heeft. Dan betreft het een eindstation en daardoor niet vatbaar voor andere filtering. Probeer van een bi-directionele relatie altijd een one-to-many of many-to-many met filter richting ‘single’ te bepalen.
- In het geval van onvolledigheid van een tussentabel
Bij het gebruik van tussentabellen kan het voorkomen dat deze niet volledig is. Dit kan liggen aan de datasource of hoe de tabel is gecreëerd in de M-Query. De beste manier om een tussentabel te creëren, is om de fact tabel te refereren en hier de duplicaten van te verwijderen.
5. Power Query
- Controleer op het gebruik van merges
- Controleer op verborgen spaties
- Controleer op het gebruik van filters
- Controleer de M-Query stappen op disrupties
De laatste stap vóór de daadwerkelijke data is de Power Query stap. Deze stap word gebruikt om de data uit de datasource te transformeren naar ‘Power BI waardig’. Het kan goed zijn dat deze transformatie ervoor heeft gezorgd dat de data niet juist is.
Oplossingsmogelijkheden
Controleer de Power Query door te navigeren naar de M-Query stap, waar de meest rauwe data staat. Verklein vervolgens de datasource d.m.v. filters. Loop daarna door de stappen, dan wordt vanzelf duidelijk welke stap uit M-query moet worden gewijzigd of verwijderd.
Tip! Verborgen spaties kunnen worden opgelost met de trim-functie.
6. Data
Als de bovenstaande stappen de fout niet oplossen, is het waarschijnlijk dat de fout in de databron zelf optreedt. Het is dan raadzaam om contact op te nemen met de eigenaar van de databron en in overleg uit te zoeken of die kan worden aangepast.
Samenvatting een introductie van Power BI
Bij de ontwikkeling van een dashboard loopt de Power BI Consultant door een aantal stappen.
1. Data – De mate van flexibiliteit van de data staat gelijk aan het risico waar het mee gepaard gaat!
Om te kunnen starten met Microsoft Power BI is het belangrijk om vooraf na te denken over de databron en rekening te houden met het volgende: De mate van flexibiliteit van de data staat gelijk aan het risico waar het mee gepaard gaat!
2. Power Query – Een laatste data-voorbereiding!
Het doel van Power Query is om de data uit de gegevensbron Power BI waardig te maken. Het word aangeraden om dit grotendeels in de databron zelf te laten plaatsvinden, maar het zou heel goed kunnen dat niet elke actie hier uitgevoerd kan worden. In Power Query kan men bijvoorbeeld gegevensbronnen combineren, logica toevoegen en functionele wijzigingen aanbrengen.
3. Model – Probeer een weg te creëren waar Power BI zo efficiënt mogelijk op kan navigeren.
Het is van belang om het datamodel zo efficiënt mogelijk in te richten. Verdeel de verschillende tabellen in dimensie- en feitentabellen. Kies voor een-op-veel relaties en probeer beide – op beide relaties te vermijden.
Probeer een weg te creëren waar Power BI zo efficiënt mogelijk op kan navigeren.
4. DAX – Berekeningen zoals we ze kennen uit Excel!
DAX is de programmeertaal van Power BI. Het kan worden vergeleken met formules die in Excel worden gebruikt. Er zijn veel verschillende functionaliteiten en manieren om DAX te schrijven en het is aan te raden om wat onderzoek te doen naar de belangrijkste. DAX-codes worden gebruikt om berekeningen te maken zoals sommen, delen, opzoekingen enz.
5. Visualisatie – Creëer de inzichten die je nodig hebt!
Naast een berekening om de som van de kolom […] te berekenen, is er ook een visualisatie nodig om het resultaat te tonen. Power BI kent veel verschillende visualisaties en iedere visualisatie heeft zijn specifieke doel. Een staafdiagram is bijvoorbeeld erg handig om een verschil in opzoekwaarden weer te geven.
Er word geadviseerd om vooraf na te denken over het te creëren dashboard. Als men vooraf een ontwerp maakt van het dashboard, dan kan men hier beter zijn datamodel en DAX berekeningen op afstemmen.
6. Power BI service
In de Power BI-service kan men rapporten publiceren, zodat het beschikbaar is voor eindgebruikers. Hier kan ook beveiliging worden toegevoegd, zodat eindgebruikers alleen specifieke gegevens te zien krijgen. Power BI-service is het eindstation van een Power BI-ontwikkeling en heeft als doel het gepresenteerde dashboard te presenteren en te gebruiken.