Tekniker för dataminskning för importmodellering

Den här artikeln riktar sig till Power BI Desktop-datamodellerare som utvecklar importmodeller. Den beskriver olika tekniker för att minska data som läses in i importmodeller.

Importmodeller läses in med data som komprimeras och optimeras och sedan lagras på disk av VertiPaq-lagringsmotorn. När källdata läses in i minnet är det möjligt att se 10x komprimering, så det är rimligt att förvänta sig att 10 GB källdata kan komprimeras till cirka 1 GB i storlek. Dessutom kan en extra minskning på 20 % uppnås när disken sparas.

Trots de effektivitetsvinster som uppnås av VertiPaq-lagringsmotorn är det viktigt att du strävar efter att minimera de data som ska läsas in i dina modeller. Det gäller särskilt för stora modeller eller modeller som du förväntar dig kommer att bli stora med tiden. Fyra övertygande orsaker är:

  • Större modellstorlekar kanske inte stöds av din kapacitet. Delad kapacitet kan vara värd för modeller upp till 1 GB i storlek, medan Premium-kapaciteter kan vara värd för större modeller beroende på SKU:n. Mer information finns i artikeln Power BI Premium-stöd för stora semantiska modeller . (Semantiska modeller kallades tidigare datauppsättningar.)
  • Mindre modellstorlekar minskar konkurrensen om kapacitetsresurser, särskilt minne. Det gör att fler modeller kan läsas in samtidigt under längre tidsperioder, vilket resulterar i lägre borttagningshastigheter.
  • Mindre modeller uppnår snabbare datauppdatering, vilket resulterar i rapportering med lägre svarstid, högre dataflöde för semantisk modelluppdatering och mindre tryck på källsystem och kapacitetsresurser.
  • Mindre antal tabellrader kan resultera i snabbare beräkningsutvärderingar, vilket kan ge bättre övergripande frågeprestanda.

Det finns åtta olika tekniker för dataminskning som beskrivs i den här artikeln. Dessa tekniker omfattar:

Ta bort onödiga kolumner

Modelltabellkolumner har två huvudsakliga syften:

  • Rapportering för att uppnå rapportdesigner som filtrerar, grupperar och sammanfattar modelldata
  • Modellstruktur, genom stöd för modellrelationer, modellberäkningar, säkerhetsroller och till och med datafärgformatering

Kolumner som inte tjänar dessa syften kan förmodligen tas bort. Borttagning av kolumner kallas lodrät filtrering.

Vi rekommenderar att du utformar modeller med exakt rätt antal kolumner baserat på kända rapporteringskrav. Dina krav kan ändras med tiden, men tänk på att det är enklare att lägga till kolumner senare än att ta bort dem senare. Om du tar bort kolumner kan rapporter eller modellstrukturen brytas.

Ta bort onödiga rader

Modelltabeller bör läsas in med så få rader som möjligt. Det kan uppnås genom att filtrerade raduppsättningar läses in i modelltabeller av två olika skäl: att filtrera efter entitet eller efter tid. Att ta bort rader kallas vågrät filtrering.

Filtrering efter entitet innebär att en delmängd av källdata läses in i modellen. I stället för att läsa in försäljningsfakta för alla försäljningsregioner läser du till exempel bara in fakta för en enda region. Den här designmetoden resulterar i många mindre modeller och kan också eliminera behovet av att definiera säkerhet på radnivå (men kräver att specifika semantiska modellbehörigheter beviljas i Power BI-tjänst och skapar "duplicerade" rapporter som ansluter till varje semantisk modell). Du kan använda Power Query-parametrar och Power BI-mallfiler för att förenkla hanteringen och publiceringen. Mer information finns i blogginlägget Djupdykning i frågeparametrar och Power BI-mallar

Filtrering efter tid innebär att begränsa mängden datahistorik som läses in i tabeller av faktatyp (och begränsa datumrader som läses in i modelldatumtabellerna). Vi föreslår att du inte automatiskt läser in all tillgänglig historik, såvida det inte är ett känt rapporteringskrav. Det är bra att förstå att tidsbaserade Power Query-filter kan parametriseras och till och med ställas in på att använda relativa tidsperioder (i förhållande till uppdateringsdatumet, till exempel de senaste fem åren). Tänk också på att retroaktiva ändringar i tidsfilter inte bryter rapporter. Det resulterar bara i mindre (eller mer) datahistorik som är tillgänglig i rapporter.

Gruppera efter och sammanfatta

Den kanske mest effektiva tekniken för att minska modellstorleken är att läsa in försammanfattningsbaserade data. Den här tekniken kan användas för att öka kornigheten för tabeller av faktatyp. Det finns dock en distinkt kompromiss som resulterar i förlust av detaljer.

En faktatabell för källförsäljning lagrar till exempel en rad per orderrad. Betydande dataminskning kan uppnås genom att summera alla försäljningsmått, gruppering efter datum, kund och produkt. Tänk då på att en ännu större dataminskning kan uppnås genom gruppering efter datum på månadsnivå. Det skulle kunna ge en möjlig 99-procentig minskning av modellstorleken, men det går inte längre att rapportera på dagnivå eller individuell ordernivå. Att bestämma sig för att sammanfatta faktatypsdata innebär alltid kompromisser. Kompromissen kan minimeras med en design av blandad modell, och det här alternativet beskrivs i tekniken Växla till blandat läge .

Optimera kolumndatatyper

VertiPaq-lagringsmotorn använder separata datastrukturer för varje kolumn. De här datastrukturerna uppnår avsiktligt de högsta optimeringarna för numeriska kolumndata, som använder värdekodning. Text och andra icke-numeriska data använder dock hash-kodning. Det kräver att lagringsmotorn tilldelar en numerisk identifierare till varje unikt textvärde som finns i kolumnen. Det är alltså den numeriska identifieraren som sedan lagras i datastrukturen, vilket kräver en hash-sökning under lagring och frågor.

I vissa specifika fall kan du konvertera källtextdata till numeriska värden. Ett försäljningsordernummer kan till exempel konsekvent prefixeras av ett textvärde (till exempel "SO123456"). Prefixet kan tas bort och ordernumret konverteras till heltal. För stora tabeller kan det leda till betydande dataminskning, särskilt när kolumnen innehåller unika eller höga kardinalitetsvärden.

I det här exemplet rekommenderar vi att du anger kolumnen Standardsammanfattningsegenskap till "Sammanfatta inte". Det hjälper till att minimera den olämpliga sammanfattningen av ordernummervärdena.

Inställningar för anpassade kolumner

VertiPaq-lagringsmotorn lagrar modellberäknade kolumner (definierade i DAX) precis som vanliga Power Query-kolumner. Datastrukturerna lagras dock något annorlunda och ger vanligtvis mindre effektiv komprimering. Dessutom skapas de när alla Power Query-tabeller har lästs in, vilket kan resultera i utökade datauppdateringstider. Det är därför mindre effektivt att lägga till tabellkolumner som beräknade kolumner än power query-beräknade kolumner (definierade i M).

Du bör skapa anpassade kolumner i Power Query. När källan är en databas kan du uppnå större belastningseffektivitet på två sätt. Beräkningen kan definieras i SQL-instruktionen (med providerns interna frågespråk) eller materialiseras som en kolumn i datakällan.

I vissa fall kan dock modellberäkningen av kolumner vara det bättre valet. Det kan vara fallet när formeln omfattar utvärdering av mått eller kräver specifika modelleringsfunktioner som endast stöds i DAX-funktioner. Information om ett sådant exempel finns i artikeln Förstå funktioner för överordnade och underordnade hierarkier i DAX .

Inaktivera Power Query-frågeinläsning

Power Query-frågor som är avsedda att stödja dataintegrering med andra frågor bör inte läsas in i modellen. Se till att du inaktiverar frågebelastningen i dessa instanser för att undvika att läsa in frågan till modellen.

Screenshot of Power Query showing

Inaktivera automatiskt datum/tid

Power BI Desktop innehåller ett alternativ som kallas Automatiskt datum/tid. När den är aktiverad skapas en dold automatisk datum-/tidstabell för datumkolumner som stöder rapportförfattare när du konfigurerar filter, gruppering och åtgärder för ökad detaljnivå för kalendertidsperioder. De dolda tabellerna är faktiskt beräknade tabeller som ökar modellens storlek. Vägledning om hur du använder det här alternativet finns i artikeln Automatisk datum/tid i Power BI Desktop .

Växla till blandat läge

I Power BI Desktop skapar en design för blandat läge en sammansatt modell. I princip kan du bestämma lagringsläge för varje tabell. Därför kan varje tabell ha egenskapen Lagringsläge inställd som Import eller DirectQuery (Dubbla är ett annat alternativ).

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. Tänk på att den här designmetoden kan fungera bra tillsammans med tekniken Group by and summarize som introducerades tidigare. Sammanfattade försäljningsdata kan till exempel användas för att uppnå "sammanfattningsrapportering med höga prestanda". En detaljvisningssida kan visa detaljerad försäljning för specifika (och smala) filterkontexter, som visar alla försäljningsorder i kontexten. I det här exemplet skulle visningssidan innehålla visuella objekt baserat på en DirectQuery-tabell för att hämta försäljningsorderdata.

Det finns dock många säkerhets- och prestandakonsekvenser relaterade till sammansatta modeller. Mer information finns i artikeln Använd sammansatta modeller i Power BI Desktop .

Mer information om power BI-importmodelldesign finns i följande artiklar: