Minska kardinalitet

Slutförd

Kardinalitet är en term som används för att beskriva unika värden i en kolumn. Kardinalitet används också i samband med relationerna mellan två tabeller, där den beskriver riktningen för relationen.

Identifiera kardinalitetsnivåer i kolumner

När du tidigare använde Power Query-redigeraren för att analysera metadata visade alternativet Kolumndistribution på fliken Visa statistik för hur många distinkta och unika objekt som fanns i varje kolumn i data.

  • Antal distinkta värden – Det totala antalet olika värden som finns i en viss kolumn.

  • Antal unika värden – Det totala antalet värden som bara förekommer en gång i en specifik kolumn.

En kolumn som har många upprepade värden i intervallet (det unika antalet är lågt) har en låg kardinalitetsnivå. Å andra sidan har en kolumn med många upprepade värden i intervallet (högt distinkt antal) låg kardinalitet.

Lägre kardinalitet leder till mer optimerade prestanda, så du kan behöva minska antalet höga kardinalkolumner i din semantiska modell.

Minska relationskardinalitet

När du importerar flera tabeller är det möjligt att du utför vissa analyser genom att använda data från alla dessa tabeller. Relationerna mellan dessa tabeller är nödvändiga för att korrekt beräkna resultat och visa rätt information i dina rapporter. Med Power BI Desktop är det enklare för dig att skapa dessa relationer. I de flesta fall behöver du inte göra något, utan funktionen för automatisk identifiering gör det åt dig. Du kan ibland behöva skapa relationer eller göra ändringar i en relation. Oavsett vilket är det viktigt att förstå relationer i Power BI Desktop och hur du skapar och redigerar dem.

När du skapar eller redigerar en relation kan du konfigurera ytterligare alternativ. Som standard konfigurerar Power BI Desktop automatiskt ytterligare alternativ baserat på sin bästa gissning, som kan vara olika för varje relation baserat på data i kolumnerna.

Relationerna kan ha olika kardinalitet. Kardinalitet är riktningen för relationen, och varje modellrelation måste definieras med en kardinaltyp. Alternativen för kardinalitet i Power BI är:

  • Många-till-en (*:1) – Den här relationen är den vanligaste standardtypen. Det betyder att kolumnen i en tabell kan ha fler än en instanser av ett värde, och den andra relaterade tabellen, som ofta benämns uppslagstabell, har endast en instans av ett värde.

  • En-till-en (1:1) – I den här relationstypen har kolumnen i en tabell endast en instans av ett visst värde, och den andra relaterade tabellen har endast en instans av ett visst värde.

  • En-till-många (1:*) – I den här relationstypen har kolumnen i en tabell bara en instans av ett visst värde och den andra relaterade tabellen kan ha mer än en instans av ett värde.

  • Många-till-många (:) – Med sammansatta modeller kan du upprätta en många-till-många-relation mellan tabeller, vilket tar bort krav på unika värden i tabeller. Den tar också bort tidigare lösningar, som att introducera nya tabeller endast för att upprätta relationer.

Under utvecklingen skapar och redigerar du relationer i din modell, så när du skapar nya relationer i din modell, oavsett vilken kardinalitet du har valt, ser du alltid till att båda kolumnerna som du använder för att delta i en relation delar samma datatyp. Din modell kommer aldrig att fungera om du försöker bygga en relation mellan två kolumner där en kolumn har en textdatatyp och en annan kolumn har datatypen Integer.

I följande exempel har fältet ProductID datatypen Heltal i produkt- och försäljningstabellerna. Kolumnerna med datatypen Integer presterar bättre än kolumner med datatypen Text.

Förbättra prestanda genom att minska kardinalitetsnivåer

Power BI Desktop erbjuder olika tekniker som du kan använda för att minska de data som läses in i semantiska modeller, till exempel sammanfattning. Om du minskar de data som läses in i din modell förbättras rapportens relationskardinalitet. Därför är det viktigt att du strävar efter att minimera de data som kommer att läsas in i dina modeller. Det här fallet gäller särskilt för stora modeller eller modeller som du förväntar dig kommer att växa för att bli stora över tid.

Kanske är den mest effektiva tekniken för att minska en modellstorlek att använda en sammanfattningstabell från datakällan.  Om en detaljerad tabell kan innehålla varje transaktion, innehåller en sammanfattningstabell en post per dag, per vecka eller per månad. Det kan vara ett genomsnitt av alla transaktioner per dag, till exempel.

Till exempel lagrar en källfaktatabell med försäljning en rad per orderrad. Betydande dataminskning kan uppnås genom sammanfattning av alla försäljningsmått samt gruppering efter datum, kund och produkt, och ingen individuell transaktionsinformation krävs.

Tänk då på att en ännu större dataminskning kan uppnås genom att gruppera efter datum på månadsnivå. Det här skulle kunna uppnå en potentiell minskning på 99 % av modellstorleken, men då är det inte möjligt att rapportera på dagsnivå eller på enskild ordernivå. Sammanfattning av data av faktatyp innebär alltid kompromisser när det gäller detaljnivån för data. En nackdel är att du kan förlora möjligheten att öka detaljnivån i data eftersom informationen inte längre finns.  Den här kompromissen kan minskas av en design för blandad modell.

I Power BI Desktop skapar en design för blandad modell en sammansatt modell. I princip gör det att du kan välja lagringsläge för varje tabell. Därför kan varje tabell få egenskapen för lagringsläge angiven till Import eller DirectQuery.

En effektiv teknik för att minska modellstorleken är att ställa in egenskapen Lagringsläge för större tabeller av faktatyp på DirectQuery. Den här designmetoden kan fungera bra tillsammans med tekniker som används för att sammanfatta dina data. Till exempel kan sammanfattade försäljningsdata användas för att uppnå ”sammanfattningsrapportering” med höga prestanda. En detaljgranskningssida kan visa detaljerad försäljning för specifik (och begränsad) filterkontext, vilket visar alla försäljningsordrar inom kontexten. I det här exemplet skulle detaljgranskningssidan innehålla visuella objekt baserat på en DirectQuery-tabell för att hämta försäljningsorderdata (försäljningsorderdetaljer).

Mer information finns i Tekniker för dataminskning för importmodellering.