Verfahren zur Datenreduktion für die ImportmodellierungData reduction techniques for Import modeling

Dieser Artikel richtet sich an Power BI Desktop-Datenmodellierer, die Importmodelle entwickeln.This article targets Power BI Desktop data modelers developing Import models. Im Folgenden werden die verschiedenen Verfahren zur Reduktion von Daten beschrieben, die in Importmodelle geladen werden.It describes different techniques to help reduce the data loaded into Import models.

In Importmodelle werden Daten geladen, die zuerst komprimiert und optimiert und anschließend von der VertiPaq-Speicher-Engine auf dem Datenträger gespeichert werden.Import models are loaded with data that is compressed and optimized and then stored to disk by the VertiPaq storage engine. Wenn Quelldaten in den Arbeitsspeicher geladen werden, ist der Komprimierungsfaktor 10 realistisch. Sie können deswegen davon ausgehen, dass 10 GB Quelldaten auf ca. 1 GB komprimiert werden.When source data is loaded into memory, it is possible to see 10x compression, and so it is reasonable to expect that 10 GB of source data can compress to about 1 GB in size. Wenn eine persistente Speicherung auf einem Datenträger durchgeführt wird, ist eine weitere Reduktion um 20 % möglich.Further, when persisted to disk an additional 20% reduction can be achieved.

Trotz der Effizienz der VertiPaq-Speicher-Engine sollten Sie die Daten, die in Ihre Modelle geladen werden, so weit wie möglich reduzieren.Despite the efficiencies achieved by the VertiPaq storage engine, it is important that you strive to minimize the data that is to be loaded into your models. Dies gilt insbesondere für große Modelle und Modelle, die im Laufe der Zeit voraussichtlich größer werden.It is especially true for large models, or models that you anticipate will grow to become large over time. Vier Gründe sprechen für eine Reduktion der Daten:Four compelling reasons include:

  • Größere Modelle werden von Ihrer Kapazität möglicherweise nicht unterstützt.Larger model sizes may not be supported by your capacity. Eine gemeinsam genutzte Kapazität kann Modelle mit einer Größe von bis zu 1 GB hosten, während Premium-Kapazitäten Modelle mit einer Größe von bis zu 13 GB hosten können.Shared capacity can host models up to 1 GB in size, while Premium capacities can host models up to 13 GB in size. Weitere Informationen finden Sie im Artikel Unterstützung von Datasets in Power BI Premium.For further information, read the Power BI Premium support for large datasets article.
  • Kleinere Modelle führen zu weniger Konflikten bei Kapazitätsressourcen. Dies gilt insbesondere für den Arbeitsspeicher.Smaller model sizes reduce contention for capacity resources, in particular memory. Dadurch können mehr Modelle über längere Zeiträume gleichzeitig geladen werden, was zu niedrigeren Entfernungsraten führt.It allows more models to be concurrently loaded for longer periods of time, resulting in lower eviction rates. Weitere Informationen finden Sie unter Verwalten von Premium-Kapazitäten.For more information, see Managing Premium capacities.
  • In kleineren Modellen werden Daten schneller aktualisiert, was zu niedrigeren Latenzen, einem höheren Durchsatz bei Aktualisierungen von Datasets und einer geringeren Auslastung des Quellsystems sowie der Kapazitätsressourcen führt.Smaller models achieve faster data refresh, resulting in lower latency reporting, higher dataset refresh throughput, and less pressure on source system and capacity resources.
  • Eine geringere Anzahl von Tabellenzeilen kann zu einer schnelleren Auswertung der Berechnungen führen, wodurch eine Zunahme der Gesamtabfrageleistung möglich ist.Smaller table row counts can result in faster calculation evaluations, which can deliver better overall query performance.

In diesem Artikel werden acht Verfahren zur Reduktion von Daten behandelt.There are eight different data reduction techniques covered in this article. Diese Verfahren umfassen Folgendes:These techniques include:

Entfernen von unnötigen SpaltenRemove unnecessary columns

Tabellenspalten in Modellen erfüllen zwei Hauptaufgaben:Model table columns serve two main purposes:

  • Berichterstellung: Bei diesem Vorgang sollen Berichtsentwürfe entstehen, mit denen sich Modelldaten filtern, gruppieren und zusammenfassen lassen.Reporting, to achieve report designs that appropriate filter, group, and summarize model data
  • Modellstrukturierung: Bei diesem Vorgang werden Modellbeziehungen und -berechnungen, Sicherheitsrollen und sogar die Farbformatierung von Daten unterstützt.Model structure, by supporting model relationships, model calculations, security roles, and even data color formatting

Spalten, die diese Aufgaben nicht erfüllen, können vermutlich entfernt werden.Columns that don't serve these purposes can probably be removed. Das Entfernen von Spalten wird auch als vertikales Filtern bezeichnet.Removing columns is referred to as vertical filtering.

Sie sollten für Ihre Modelle eine Spaltenzahl festlegen, die sich aus den Anforderungen an die Berichterstellung ergibt.We recommend that you design models with exactly the right number of columns based on the known reporting requirements. Diese Anforderungen können sich im Laufe der Zeit ändern. Es ist jedoch einfacher, später Spalten hinzuzufügen, als zu entfernen.Your requirements may change over time, but bear in mind that it's easier to add columns later than it is to remove them later. Wenn Spalten entfernt werden, kann das dazu führen, dass Berichte nicht mehr funktionieren oder die Modellstruktur Fehler aufweist.Removing columns can break reports or the model structure.

Entfernen von unnötigen ZeilenRemove unnecessary rows

Modelltabellen sollten mit möglichst wenigen Zeilen geladen werden.Model tables should be loaded with as few rows as possible. Dazu können gefilterte Rowsets in Modelltabellen geladen und dann nach Entität oder Zeit gefiltert werden.It can be achieved by loading filtered rowsets into model tables for two different reasons: to filter by entity or by time. Das Entfernen von Zeilen wird auch als horizontales Filtern bezeichnet.Removing rows is referred to as horizontal filtering.

Beim Filtern nach Entität wird eine Teilmenge der Quelldaten in das Modell geladen.Filtering by entity involves loading a subset of source data into the model. Beispielsweise können so Verkaufsfakten nur für eine einzelne Region statt für alle Regionen geladen werden.For example, instead of loading sales facts for all sales regions, only load facts for a single region. Dieser Entwurfsansatz führt zu vielen kleineren Modellen und kann auch verhindern, dass die Sicherheit auf Zeilenebene festgelegt werden muss. Dafür müssen jedoch bestimmte Datasetberechtigungen im Power BI-Dienst erteilt und duplizierte Berichte erstellt werden, die eine Verbindung mit jedem Dataset herstellen.This design approach will result in many smaller models, and it can also eliminate the need to define row-level security (but will require granting specific dataset permissions in the Power BI service, and creating "duplicate" reports that connect to each dataset). Mithilfe von Power Query-Parametern und Power BI-Vorlagendateien können Sie die Verwaltung und Veröffentlichung von Berichten vereinfachen.You can leverage the use of Power Query parameters and Power BI Template files to simplify management and publication. Weitere Informationen finden Sie im Blogbeitrag Ausführliche Informationen zu Abfrageparametern und Power BI-Vorlagen.For further information, read the Deep Dive into Query Parameters and Power BI Templates blog entry.

Beim Filtern nach Zeit wird die Menge der Verlaufsdaten begrenzt, die in Faktentabellen geladen wird. Außerdem wird die Zahl der Datumszeilen eingeschränkt, die in die Datumstabellen des Modells geladen werden.Filtering by time involves limiting the amount of data history loaded into fact-type tables (and limiting the date rows loaded into the model date tables). Sie sollten nur dann alle verfügbaren Verlaufsdaten automatisch laden, wenn dies eine Anforderung an die Berichterstellung ist.We suggest you don't automatically load all available history, unless it is a known reporting requirement. Die zeitbasierten Power Query-Filter sind parametrisierbar und können auch auf relative Zeiträume (relativ zum Aktualisierungsdatum und z. B. bezogen auf die letzten fünf Jahre) festgelegt werden.It is helpful to understand that time-based Power Query filters can be parameterized, and even set to use relative time periods (relative to the refresh date, for example, the past five years). Nachträgliche Änderungen an Zeitfiltern führen außerdem nicht zu Berichtsfehlern, sondern nur dazu, dass weniger oder mehr Verlaufsdaten in Berichten verfügbar sind.Also, bear in mind that retrospective changes to time filters will not break reports; it will just result in less (or more) data history available in reports.

Gruppieren nach und ZusammenfassenGroup by and summarize

Das wohl effektivste Verfahren zur Verringerung der Modellgröße umfasst das Laden vorab zusammengefasster Daten.Perhaps the most effective technique to reduce a model size is to load pre-summarized data. Bei dieser Methode kann die Granularität (Grain) der Faktentabellen erhöht werden.This technique can be used to raise the grain of fact-type tables. Der Nachteil besteht jedoch in einem Informationsverlust.There is a distinct trade-off, however, resulting in loss of detail.

Angenommen, in einer Faktentabelle mit Quelldaten zu Verkaufszahlen wird für jede Auftragsposition eine Zeile gespeichert.For example, a source sales fact table stores one row per order line. Wenn alle Verkaufsmetriken zusammengefasst und nach Datum, Kunde und Produkt gruppiert werden, könnte eine erhebliche Datenreduktion erzielt werden.Significant data reduction could be achieved by summarizing all sales metrics, grouping by date, customer, and product. Dieser Vorgang könnte sogar noch optimiert werden, wenn auf der Monatsebene nach Datum gefiltert wird.Consider, then, that an even more significant data reduction could be achieved by grouping by date at month level. Dadurch kann die Modellgröße zwar um bis zu 99 % verringert werden, jedoch ist dann eine Berichterstellung auf Tagesebene oder auf der Ebene einer Auftragsposition nicht mehr möglich.It could achieve a possible 99% reduction in model size, but reporting at day level—or individual order level—is no longer possible. Wenn Daten aus Faktentabellen zusammengefasst werden, hat dies immer auch Nachteile.Deciding to summarize fact-type data always involves tradeoffs. Die Auswirkungen dieser Nachteile lassen sich mit einem gemischten Modell verringern. Diese Möglichkeit wird im Abschnitt Wechseln in den gemischten Modus beschrieben.Tradeoff could be mitigated by a Mixed model design, and this option is described in the Switch to Mixed mode technique.

Optimieren von SpaltendatentypenOptimize column data types

Die VertiPaq-Speicher-Engine verwendet für jede Spalte eigene Datenstrukturen.The VertiPaq storage engine uses separate data structures for each column. Diese sind entwurfsbedingt für numerische Spaltendaten optimiert, für die eine Wertcodierung verwendet wird.By design, these data structures achieve the highest optimizations for numeric column data, which use value encoding. Für Text und andere nicht numerische Daten wird hingegen die Hashcodierung genutzt.Text and other non-numeric data, however, uses hash encoding. Die Speicher-Engine muss daher jedem eindeutigen Textwert in der Spalte einen numerischen Bezeichner zuweisen,It requires the storage engine to assign a numeric identifier to each unique text value contained in the column. der dann in der Datenstruktur gespeichert wird. Beim Speichern und Abfragen von Werten ist eine Hashsuche in dieser Datenstruktur erforderlich.It is the numeric identifier, then, that is then stored in the data structure, requiring a hash lookup during storage and querying.

In bestimmten Fällen können Sie Quelltextdaten in numerische Werte konvertieren.In some specific instances, you can convert source text data into numeric values. So kann beispielsweise Auftragsnummern durchgängig ein Textwert (z. B. „SO123456“) vorangestellt werden.For example, a sales order number may be consistently prefixed by a text value (e.g. "SO123456"). Dieses Präfix könnte dann entfernt und der Wert der Auftragsnummer in eine ganze Zahl konvertiert werden.The prefix could be removed, and the order number value converted to whole number. Bei großen Tabellen kann dies vor allem dann zu einer erheblichen Datenreduktion führen, wenn die Spalten eindeutige Werte oder Werte mit hoher Kardinalität enthalten.For large tables, it can result in significant data reduction, especially when the column contains unique or high cardinality values.

In diesem Beispiel wird empfohlen, die Spalteneigenschaft „Default Summarization“ (Standardzusammenfassung) auf „Nicht zusammenfassen“ festzulegen.In this example, we recommend that you set the column Default Summarization property to "Do Not Summarize". Dadurch werden ungeeignete Zusammenfassungen der Auftragsnummernwerte vermieden.It will help to minimize the inappropriate summarization of the order number values.

Verwenden von benutzerdefinierten SpaltenPreference for custom columns

Die VertiPaq-Speicher-Engine speichert (in DAX definierte) berechnete Modellspalten ebenso wie reguläre Power Query-Quellspalten.The VertiPaq storage engine stores model calculated columns (defined in DAX) just like regular Power Query-sourced columns. Die Datenstrukturen werden jedoch etwas anders gespeichert. Außerdem ist deren Komprimierung in der Regel weniger effizient.However, the data structures are stored slightly differently, and typically achieve less efficient compression. Die Datenstrukturen werden erst erstellt, nachdem alle Power Query-Tabellen geladen wurden, was zu längeren Aktualisierungszeiten für Daten führen kann.Also, they are built once all Power Query tables are loaded, which can result in extended data refresh times. Tabellenspalten, die als berechnete Spalten hinzugefügt werden, sind daher weniger effizient als (in M definierte) berechnete Power Query-Spalten.It is therefore less efficient to add table columns as calculated columns than Power Query computed columns (defined in M).

Aus diesem Grund sollten vorzugsweise benutzerdefinierte Spalten in Power Query erstellt werden.Preference should be creating custom columns in Power Query. Wenn es sich bei der Quelle um eine Datenbank handelt, können Sie die Ladeeffizienz auf zwei Arten optimieren.When the source is a database, you can achieve greater load efficiency in two ways. Die Berechnung kann in der SQL-Anweisung (mithilfe der nativen Abfragesprache des Anbieters) definiert werden oder als Spalte in der Datenquelle materialisiert werden.The calculation can be defined in the SQL statement (using the native query language of the provider), or it can be materialized as a column in the data source.

Gelegentlich sind jedoch berechnete Modellspalten möglicherweise die bessere Wahl.However, in some instances, model calculated columns may be the better choice. Dies kann der Fall sein, wenn durch die Formel Measures ausgewertet werden oder für die Formel bestimmte Modellierungsfunktionen erforderlich sind, die nur in DAX-Funktionen unterstützt werden.It can be the case when the formula involves evaluating measures, or it requires specific modeling functionality only supported in DAX functions. Informationen zu einem solchen Beispiel finden Sie im Artikel Grundlegendes zu Funktionen für Hierarchien aus über- und untergeordneten Elementen in DAX.For information on one such example, refer to the Understanding functions for parent-child hierarchies in DAX article.

Deaktivieren des Ladevorgangs für Power Query-AbfragenDisable Power Query query load

Power Query-Abfragen, die zur Datenintegration mit anderen Abfragen vorgesehen sind, sollten nicht in das Modell geladen werden.Power Query queries that are intended support data integration with other queries should not be loaded to the model. Deaktivieren Sie daher in diesen Fällen den Ladevorgang für Abfragen.To avoid loading the query to the model, take care to ensure that you disable query load in these instances.

Screenshot von Power Query mit der Option „Laden aktivieren“

Datum/Uhrzeit automatisch deaktivierenDisable auto date/time

Power BI Desktop enthält eine Option mit dem Namen Datum/Uhrzeit automatisch.Power BI Desktop includes an option called Auto date/time. Wenn diese Option aktiviert ist, wird eine verborgene automatische Datums-/Uhrzeittabelle für Datumsspalten erstellt, um Berichtsautoren beim Konfigurieren von Filtern, Gruppieren und Drilldown für Kalenderzeiträume zu unterstützen.When enabled, it creates a hidden auto date/time table for date columns to support report authors when configuring filters, grouping, and drill down for calendar time periods. Die verborgenen Tabellen sind tatsächlich berechnete Tabellen, die die Größe des Modells anwachsen lassen.The hidden tables are in fact calculated tables that will increase the size of the model. Anleitungen zum Verwenden dieser Option finden Sie im Artikel Auto date/time guidance in Power BI Desktop (Anleitungen zum automatischen Datum/der automatischen Uhrzeit in Power BI Desktop).For guidance about using this option, refer to the Auto date/time guidance in Power BI Desktop article.

Wechseln in den gemischten ModusSwitch to Mixed mode

In Power BI Desktop wird im gemischten Modus ein zusammengesetztes Modell erzeugt.In Power BI Desktop, a Mixed mode design produces a Composite model. Damit können Sie den Speichermodus für jede Tabelle festlegen.Essentially, it allows you to determine storage mode for each table. Für jede Tabelle kann daher die Eigenschaft „Speichermodus“ auf „Importieren“, „DirectQuery“ oder „Dual“ festgelegt werden.Therefore, each table can have its Storage Mode property set as Import or DirectQuery (Dual is another option).

Ein wirksames Verfahren zum Verringern der Modellgröße besteht darin, die Eigenschaft „Speichermodus“ für größere Faktentabellen auf „DirectQuery“ festzulegen.An effective technique to reduce the model size is to set the Storage Mode property for larger fact-type tables to DirectQuery. Dieser Entwurfsansatz kann in einigen Fällen gut mit der Strategie kombiniert werden, die im Verfahren Gruppieren nach und Zusammenfassen weiter oben beschrieben wurde.Consider that this design approach could work well in conjunction with the Group by and summarize technique introduced earlier. So könnten z. B. zusammengefasste Verkaufsdaten verwendet werden, um Zusammenfassungsberichte effizient zu erstellen.For example, summarized sales data could be used to achieve high performance "summary" reporting. Auf einer Drillthroughseite könnten außerdem Verkäufe für einen bestimmten (eingegrenzten) Filterkontext detailgenau aufgeführt werden, in dem alle zugehörigen Auftragspositionen angezeigt werden.A drill through page could display granular sales for specific (and narrow) filter context, displaying all in-context sales orders. In diesem Beispiel würde die Drillthroughseite Visuals enthalten, die auf einer DirectQuery-Tabelle basieren, mit der die Auftragsdaten abgerufen werden.In this example, the drill through page would include visuals based on a DirectQuery table to retrieve the sales order data.

Wenn Sie zusammengesetzte Modelle verwenden, müssen Sie jedoch auch zahlreiche Auswirkungen auf die Sicherheit und Leistung berücksichtigen.There are, however, many security and performance implications related to Composite models. Weitere Informationen finden Sie im Artikel Verwenden zusammengesetzter Modelle in Power BI Desktop.For further information, read the Use composite models in Power BI Desktop article.

Nächste SchritteNext steps

Weitere Informationen zum Entwerfen von Power BI-Importmodellen finden Sie in den folgenden Artikeln:For more information about Power BI Import model design, see the following articles: