Inkrementelle Aktualisierung und Echtzeitdaten für Semantikmodelle

Die inkrementelle Aktualisierung erweitert geplante Aktualisierungsvorgänge, indem sie die automatische Erstellung und Verwaltung von Partitionen für Semantikmodelltabellen ermöglicht, die häufig neue und aktualisierte Daten laden. Die meisten Semantikmodelle umfassen eine oder mehrere Tabellen mit Transaktionsdaten, die sich häufig ändern und exponentiell wachsen können, z. B. eine Faktentabelle in einem relationalen oder Sterndatenbankschema. Eine Richtlinie zur inkrementellen Aktualisierung, durch die eine solche Tabelle partitioniert und nur die neuesten Importpartitionen aktualisiert werden, sowie optional eine weitere DirectQuery-Partition für Echtzeitdaten können die Menge der zu aktualisierenden Daten erheblich reduzieren. Gleichzeitig stellt eine solche Richtlinie sicher, dass die neuesten Änderungen an der Datenquelle in den Abfrageergebnissen berücksichtigt werden.

Inkrementelle Aktualisierung und Echtzeitdaten bieten folgende Vorteile:

  • Bei sich schnell ändernden Daten sind so weniger Aktualisierungszyklen erforderlich. Im DirectQuery-Modus werden die neuesten Datenaktualisierungen schon während der Abfrageverarbeitung abgerufen, und dies ohne hohe Aktualisierungsfrequenz.
  • Aktualisierungen sind schneller. Nur die zuletzt geänderten Daten müssen aktualisiert werden.
  • Aktualisierungen sind zuverlässiger. Lange Verbindungen mit flüchtigen Datenquellen sind nicht erforderlich. Abfragen an Quelldaten werden schneller ausgeführt, wodurch die Gefahr von Netzwerkproblemen verringert wird.
  • Der Ressourcenverbrauch reduziert sich. Weniger Daten, die aktualisiert werden müssen, reduzieren insgesamt den Arbeitsspeicherbedarf und den Bedarf an weiteren Ressourcen sowohl in Power BI als auch in den Datenquellsystemen.
  • Große Semantikmodelle werden unterstützt. Semantikmodelle können auf potenziell Milliarden von Zeilen anwachsen, ohne dass das gesamte Semantikmodell bei jedem Aktualisierungsvorgang vollständig aktualisiert werden muss.
  • Die Einrichtung ist einfach. Richtlinien für die inkrementelle Aktualisierung lassen sich in Power BI Desktop in nur wenigen Schritten definieren. Nach der Veröffentlichung eines Berichts über Power BI Desktop wendet der Dienst diese Richtlinien automatisch bei jeder Aktualisierung an.

Wenn Sie ein Power BI Desktop-Modell im Dienst veröffentlichen, verfügt jede Tabelle im neuen Semantikmodell über eine einzelne Partition. Diese einzelne Partition enthält alle Zeilen für diese Tabelle. Wenn die Tabelle groß ist, z. B. Millionen oder mehr Zeilen enthält, kann eine Aktualisierung für diese Tabelle sehr lange dauern und sehr viele Ressourcen verbrauchen.

Bei der inkrementellen Aktualisierung teilt der Dienst Daten, die häufig aktualisiert werden müssen, dynamisch auf und trennt sie von Daten, die weniger häufig aktualisiert werden können. Tabellendaten werden unter Verwendung von Datums- und Uhrzeitparametern von Power Query, mit den reservierten Namen RangeStart und RangeEnd mit Berücksichtigung von Groß- und Kleinschreibung, gefiltert. Wenn Sie aber in Power BI Desktop die inkrementelle Aktualisierung konfigurieren, wird mithilfe der konfigurierten Parameter ein nur kleiner Datenzeitraum gefiltert, der in das Modell geladen wird. Wenn Power BI Desktop den Bericht im Power BI-Dienst veröffentlicht, erstellt der Dienst entsprechend den Einstellungen der Richtlinie für die inkrementelle Aktualisierung beim ersten Aktualisierungsvorgang Partitionen für die inkrementelle Aktualisierung und die Verlaufsdaten sowie optional eine DirectQuery-Echtzeitpartition. Danach überschreibt der Dienst die Parameterwerte, um die Daten für jede Partition auf Basis der Datums-/Zeitwerte jeder Zeile zu filtern und abzufragen.

Bei allen weiteren Aktualisierungen geben die Abfragefilter nur die Zeilen innerhalb des Aktualisierungszeitraums zurück, der dynamisch durch die Parameter definiert wird. Diese Zeilen mit einem Datum/einer Uhrzeit innerhalb des Aktualisierungszeitraums werden aktualisiert. Zeilen, deren Datum/Zeit nicht mehr innerhalb des Aktualisierungszeitraums liegen, werden dann Teil des Verlaufszeitraums, der nicht aktualisiert wird. Wenn in der Richtlinie für die inkrementelle Aktualisierung eine DirectQuery-Echtzeitpartition definiert ist, wird der zugehörige Filter ebenfalls aktualisiert, sodass auch alle Änderungen berücksichtigt werden, die nach dem Aktualisierungszeitraum aufgetreten sind. Sowohl für die Aktualisierungszeiträume als auch für die Verlaufszeiträume wird ein Rollforward ausgeführt. Bei der Erstellung neuer Partitionen für die inkrementelle Aktualisierung werden Aktualisierungspartitionen, die sich nicht mehr im Aktualisierungszeitraum befinden, zu Verlaufspartitionen. Im Laufe der Zeit werden Verlaufspartitionen weniger präzise, da sie zusammengeführt werden. Wenn sich eine Verlaufspartition nicht mehr im durch die Richtlinie definierten Verlaufszeitraum befindet, wird sie vollständig aus dem Semantikmodell entfernt. Dieser Mechanismus wird als Muster des rollierenden Zeitfensters bezeichnet.

Graphic representing a rolling window pattern.

Der Vorteil der inkrementellen Aktualisierung ist, dass der Dienst diese Vorgänge basierend auf den von Ihnen festgelegten Richtlinien für die inkrementelle Aktualisierung automatisch für Sie durchführt. Tatsächlich sind der Prozess und die daraus erstellten Partitionen im Dienst nicht einmal sichtbar. In den meisten Fällen ist lediglich eine klar definierte Richtlinie für die inkrementelle Aktualisierung erforderlich, um die Leistung der Semantikmodellaktualisierung erheblich zu verbessern. Die DirectQuery-Echtzeitpartition wird jedoch nur für Semantikmodelle mit Premium-Kapazitäten unterstützt. Power BI Premium ermöglicht über den XMLA-Endpunkt (XML for Analysis) noch fortschrittlichere Partitions- und Aktualisierungsszenarien.

Anforderungen

In den nächsten Abschnitten werden die unterstützten Pläne und Datenquellen beschrieben.

Unterstützte Pläne

Die inkrementelle Aktualisierung wird für Modelle in Power BI Premium, Premium-Einzelbenutzerlizenz, Power BI Pro und Power BI Embedded unterstützt.

Das Abrufen der neuesten Daten in Echtzeit mit DirectQuery wird nur für Modelle von Power BI Premium, Premium-Einzelbenutzerlizenzen und Power BI Embedded unterstützt.

Unterstützte Datenquellen

Die inkrementelle Aktualisierung und Echtzeitdaten funktionieren am besten bei strukturierten, relationalen Datenquellen wie SQL Database und Azure Synapse, können aber auch für andere Datenquellen verwendet werden. In jedem Fall muss Ihre Datenquelle Folgendes unterstützen:

Datumsfilterung: Die Datenquelle muss einen Mechanismus zum Filtern von Daten nach Datum unterstützen. Bei einer relationalen Quelle ist dies in der Regel in der Zieltabelle eine Datumsspalte mit dem Datentyp „Date/Time“ oder „Integer“. Die Parameter „RangeStart“ und „RangeEnd“, die den Datentyp „Date/Time“ haben müssen, filtern die Tabellendaten basierend auf der Datumsspalte. Für Datumsspalten mit Integer-Ersatzschlüsseln im Format yyyymmdd können Sie eine Funktion erstellen, die den Datums-/Uhrzeitwert in den Parametern „RangeStart“ und „RangeEnd“ so konvertiert, dass er dem Integer-Ersatzschlüssel der Datumsspalte entspricht. Weitere Informationen finden Sie unter Konfigurieren inkrementeller Aktualisierungen – Konvertieren von DateTime in Integer.

Bei anderen Datenquellen müssen die Parameter „RangeStart“ und „RangeEnd“ so an die Datenquelle übergeben werden, dass ein Filtern möglich ist. Bei dateibasierten Datenquellen, deren Dateien und Ordner nach Datum organisiert sind, können die Parameter „RangeStart“ und „RangeEnd“ zum Filtern der Dateien und Ordner verwendet werden, um die zu ladenden Dateien auf diese Weise auszuwählen. Bei webbasierten Datenquellen können die Parameter „RangeStart“ und „RangeEnd“ in die HTTP-Anforderung integriert werden. Beispielsweise kann die folgende Abfrage für die inkrementelle Aktualisierung der Ablaufverfolgungen einer AppInsights-Instanz verwendet werden:

let 
    strRangeStart = DateTime.ToText(RangeStart,[Format="yyyy-MM-dd'T'HH:mm:ss'Z'", Culture="en-US"]),
    strRangeEnd = DateTime.ToText(RangeEnd,[Format="yyyy-MM-dd'T'HH:mm:ss'Z'", Culture="en-US"]),
    Source = Json.Document(Web.Contents("https://api.applicationinsights.io/v1/apps/<app-guid>/query", 
    [Query=[#"query"="traces 
    | where timestamp >= datetime(" & strRangeStart &") 
    | where timestamp < datetime("& strRangeEnd &")
    ",#"x-ms-app"="AAPBI",#"prefer"="ai.response-thinning=true"],Timeout=#duration(0,0,4,0)])),
    TypeMap = #table(
    { "AnalyticsTypes", "Type" }, 
    { 
    { "string",   Text.Type },
    { "int",      Int32.Type },
    { "long",     Int64.Type },
    { "real",     Double.Type },
    { "timespan", Duration.Type },
    { "datetime", DateTimeZone.Type },
    { "bool",     Logical.Type },
    { "guid",     Text.Type },
    { "dynamic",  Text.Type }
    }),
    DataTable = Source[tables]{0},
    Columns = Table.FromRecords(DataTable[columns]),
    ColumnsWithType = Table.Join(Columns, {"type"}, TypeMap , {"AnalyticsTypes"}),
    Rows = Table.FromRows(DataTable[rows], Columns[name]), 
    Table = Table.TransformColumnTypes(Rows, Table.ToList(ColumnsWithType, (c) => { c{0}, c{3}}))
in
Table

Wenn die inkrementelle Aktualisierung konfiguriert ist, wird ein Power Query Ausdruck, der einen Datums-/Uhrzeitfilter basierend auf den Parametern „RangeStart“ und „RangeEnd“ enthält, für die Datenquelle ausgeführt. Wenn der Filter in einem Abfrageschritt nach der ersten Quellabfrage angegeben wird, muss die Abfragefaltung den ersten Abfrageschritt mit den Schritten kombinieren, die auf die Parameter „RangeStart“ und „RangeEnd“ verweisen. Im folgenden Abfrageausdruck beispielsweise wird Table.SelectRows gefaltet, da es unmittelbar auf den Schritt Sql.Database folgt und SQL Server die Faltung unterstützt:

let
  Source = Sql.Database("dwdev02","AdventureWorksDW2017"),
  Data  = Source{[Schema="dbo",Item="FactInternetSales"]}[Data],
  #"Filtered Rows" = Table.SelectRows(Data, each [OrderDateKey] >= Int32.From(DateTime.ToText(RangeStart,[Format="yyyyMMdd"]))),
  #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each [OrderDateKey] < Int32.From(DateTime.ToText(RangeEnd,[Format="yyyyMMdd"])))
  
in
  #"Filtered Rows1"

Die Unterstützung der Abfragefaltung durch die finale Abfrage ist nicht erforderlich. Im folgenden Ausdruck wird beispielsweise eine nicht faltbare NativeQuery verwendet, wobei die Parameter „RangeStart“ und „RangeEnd“ direkt in SQL integriert sind:

let
  Query = "select * from dbo.FactInternetSales where OrderDateKey >= '"& Text.From(Int32.From( DateTime.ToText(RangeStart,"yyyyMMdd") )) &"' and OrderDateKey < '"& Text.From(Int32.From( DateTime.ToText(RangeEnd,"yyyyMMdd") )) &"' ",
  Source = Sql.Database("dwdev02","AdventureWorksDW2017"),
  Data = Value.NativeQuery(Source, Query, null, [EnableFolding=false])
in
  Data

Wenn die Richtlinie für die inkrementelle Aktualisierung jedoch das Abrufen von Echtzeitdaten mit DirectQuery beinhaltet, können keine Transformationen ohne Faltung verwendet werden. Wenn es sich um eine reine Importmodusrichtlinie ohne Echtzeitdaten handelt, kann die Query-Mashup-Engine dies ggf. ausgleichen und den Filter lokal anwenden. Hierzu müssen allerdings alle Zeilen für die Tabelle aus der Datenquelle abgerufen werden. Dies kann dazu führen, dass die inkrementelle Aktualisierung langsam ist und dem Prozess entweder im Power BI-Dienst oder in einem lokalen Datengateway die Ressourcen ausgehen – wodurch der Zweck der inkrementellen Aktualisierung effektiv nicht erfüllt wird.

Da die Unterstützung für die Abfragefaltung bei den verschiedenen gängigen Datenquellen nicht identisch gehandhabt wird, sollte überprüft werden, ob die Filterlogik in den Abfragen, die an der Datenquelle ausgeführt werden, enthalten ist. In den meisten Fällen versucht Power BI Desktop, diese Überprüfung für Sie durchzuführen, wenn Sie die Richtlinie für inkrementelle Aktualisierung definieren. Bei SQL-basierten Datenquellen wie SQL Database, Azure Synapse, Oracle und Teradata ist diese Überprüfung zuverlässig. Andere Datenquellen können jedoch möglicherweise nicht verifiziert werden, ohne die Abfragen nachzuverfolgen. Wenn Power BI Desktop die Abfragen nicht bestätigen kann, wird im Konfigurationsdialogfeld der Richtlinie für die inkrementelle Aktualisierung eine Warnung angezeigt.

Screenshot of the query folding warning

Wenn diese Warnung angezeigt wird, können Sie mit der Diagnosefunktion von Power Query überprüfen, ob die erforderliche Abfragefaltung erfolgt, oder die Abfragen mit einem anderen, von der Datenquelle unterstützten Tool verfolgen (z. B. mit SQL Profiler). Wenn keine Abfragefaltung stattfindet, überprüfen Sie, ob die an die Datenquelle übergebene Abfrage die Filterlogik enthält. Wenn dies nicht der Fehler ist, enthält die Abfrage wahrscheinlich eine Transformation, die ein Folding verhindert.

Bevor Sie Ihre Lösung für die inkrementelle Aktualisierung konfigurieren, sollten Sie die Query Folding-Anleitungen für Power BI Desktop und Query Folding in Power Query gründlich lesen und verstehen. Wenn Sie überprüfen möchten, ob Ihre Datenquelle und Ihre Abfragen die Abfragefaltung unterstützen, sind auch die folgenden Artikel sehr hilfreich.

Einzelne Datenquelle

Wenn Sie die inkrementelle Aktualisierung und Echtzeitdaten mit Power BI Desktop konfigurieren bzw. mit Tabular Model Scripting Language (TMSL) oder Tabular Object Model (TOM) über den XMLA-Endpunkt eine erweiterte Lösung konfigurieren, müssen alle Partitionen – ob Import oder DirectQuery – Daten aus einer einzigen Quelle abfragen.

Andere Datenquellentypen

Bei individuelleren Abfragefunktionen und Abfragelogik kann die inkrementelle Aktualisierung auch mit anderen Datenquellen verwendet werden, wenn die auf RangeStart und RangeEnd basierenden Filter in einer einzigen Abfrage übergeben werden können. Dies ist beispielsweise bei Datenquellen wie in einem Ordner gespeicherten Excel-Arbeitsmappendateien, Dateien in SharePoint und RSS-Feeds der Fall. Dies sind jedoch erweiterte Szenarien, für die weitere Anpassungen und Tests über das hier Beschriebene hinaus erforderlich sind. Wir empfehlen Ihnen sehr, sich in der weiter unten in diesem Artikel genannten Community Informationen zur inkrementellen Aktualisierung in außergewöhnlichen Szenarien zu holen.

Zeitlimits

Unabhängig von der inkrementellen Aktualisierung gilt für Power BI Pro-Modelle ein Aktualisierungszeitlimit von zwei Stunden, und das Abrufen von Echtzeitdaten mit DirectQuery wird diesen Modellen nicht unterstützt. Für Semantikmodelle in einer Premium-Kapazität beträgt das Zeitlimit fünf Stunden. Aktualisierungsvorgänge sind prozess- und arbeitsspeicherintensiv. Ein vollständiger Aktualisierungsvorgang kann bis zu doppelt so viel Speicher wie das Semantikmodell selbst benötigen, da der Dienst eine Momentaufnahme des Semantikmodells im Speicher behält, bis der Aktualisierungsvorgang abgeschlossen ist. Aktualisierungsvorgänge können auch prozessintensiv sein und einen erheblichen Teil der verfügbaren CPU-Ressourcen verbrauchen. Aktualisierungsvorgänge müssen sich auch auf flüchtige Verbindungen zu Datenquellen und die Fähigkeit dieser Datenquellensysteme verlassen, Abfrageausgaben schnell zurückzugeben. Das Zeitlimit ist eine Schutzmaßnahme, um die Überbeanspruchung Ihrer verfügbaren Ressourcen zu begrenzen.

Hinweis

Bei Premium-Kapazitäten gilt für Aktualisierungsvorgänge, die über den XMLA-Endpunkt ausgeführt werden, kein Zeitlimit. Weitere Informationen finden Sie unter Erweiterte inkrementelle Aktualisierung mit dem XMLA-Endpunkt.

Da die inkrementelle Aktualisierung die Aktualisierungsvorgänge auf Partitionsebene im Semantikmodell optimiert, kann der Ressourcenverbrauch erheblich reduziert werden. Gleichzeitig sind Aktualisierungsvorgänge auch bei der inkrementellen Aktualisierung, sofern sie nicht über den XMLA-Endpunkt erfolgen, an dieselben Zeitlimits von zwei bzw. fünf Stunden gebunden. Eine effektive Richtlinie für inkrementelle Aktualisierung reduziert nicht nur die Datenmenge, die bei einem Aktualisierungsvorgang verarbeitet wird, sondern verringert auch die Menge unnötiger Verlaufsdaten, die in Ihrem Semantikmodell gespeichert werden.

Abfragen können auch durch ein standardmäßiges Zeitlimit für die Datenquelle eingeschränkt werden. Bei den meisten relationalen Datenquellen können Zeitlimits im Power Query M-Ausdruck überschrieben werden. Beispielsweise wird im folgenden Ausdruck die SQL Server-Datenzugriffsfunktion verwendet, um „CommandTimeout“ auf zwei Stunden festzulegen. Jeder durch die Richtlinienbereiche definierte Zeitraum sendet eine Abfrage unter Einhaltung der Einstellung für die Befehlszeitüberschreitung:

let
    Source = Sql.Database("myserver.database.windows.net", "AdventureWorks", [CommandTimeout=#duration(0, 2, 0, 0)]),
    dbo_Fact = Source{[Schema="dbo",Item="FactInternetSales"]}[Data],
    #"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] < RangeEnd)
in
    #"Filtered Rows"

Bei sehr großen Semantikmodellen mit Premium-Kapazitäten, die möglicherweise Milliarden von Zeilen enthalten, kann der anfängliche Aktualisierungsvorgang per Bootstrapping durchgeführt werden. Durch Bootstrapping kann der Dienst Tabellen- und Partitionsobjekte für das Semantikmodell erstellen, aber keine Daten in eine der Partitionen laden und dort verarbeiten. In SQL Server Management Studio können Sie Partitionen so konfigurieren, dass sie einzeln, sequenziell oder parallel verarbeitet werden, wodurch sowohl die in einer einzelnen Abfrage zurückgegebene Datenmenge reduziert als auch das Zeitlimit von fünf Stunden umgangen werden kann. Weitere Informationen finden Sie unter Erweiterte inkrementelle Aktualisierung – Verhindern von Timeouts bei der ersten vollständigen Aktualisierung.

Aktuelles Datum und aktuelle Uhrzeit

Das aktuelle Datum und die Uhrzeit basieren auf dem Systemdatum zum Zeitpunkt der Aktualisierung. Wenn die geplante Aktualisierung für das Semantikmodell im Dienst aktiviert ist, wird die angegebene Zeitzone bei der Ermittlung des aktuellen Datums und der Uhrzeit berücksichtigt. Sowohl individuelle als auch geplante Aktualisierungen durch den Dienst beachten die Zeitzone, falls diese verfügbar ist. Wenn beispielsweise um 20:00 Uhr in der Zeitzone Pacific Standard Time (USA und Kanada) eine Aktualisierung durchgeführt wird und die Zeitzone angegeben ist, werden das aktuelle Datum und die Uhrzeit anhand der Pacific Standard Time ermittelt und nicht anhand der koordinierten Weltzeit (UTC), was in diesem Fall erst am nächsten Tag wäre. Aktualisierungsvorgänge, die nicht über den Power BI-Dienst initiiert werden, sondern z. B. mit dem TMSL-Aktualisierungsbefehl, berücksichtigen die angegebene Zeitzone bei der Bestimmung der geplanten Aktualisierung hingegen nicht.

Screenshot of Scheduled refresh dialog showing the Time zone input field

Konfigurieren der inkrementellen Aktualisierung und von Echtzeitdaten

In diesem Abschnitt werden wichtige Konzepte der Konfiguration von inkrementellen Aktualisierungen und Echtzeitdaten beschrieben. Eine ausführlichere Schritt-für-Schritt-Anleitung finden Sie unter Konfigurieren von inkrementeller Aktualisierung und Echtzeitdaten für Semantikmodelle.

Das Konfigurieren der inkrementellen Aktualisierung erfolgt in Power BI Desktop. Für die meisten Modelle sind nur wenige Aufgaben erforderlich. Allerdings sollten Sie folgende Punkte beachten:

  • Wenn Sie ein Modell im Power BI-Dienst veröffentlicht haben, können Sie dasselbe Modell nicht erneut über Power BI Desktop veröffentlichen. Bei einer erneuten Veröffentlichung werden alle bereits im Modell vorhandenen Partitionen und Daten entfernt. Wenn Sie die Veröffentlichung unter einer Premium-Kapazität durchführen, können Sie das Metadatenschema mit Tools wie dem Open-Source-ALM-Toolkit oder TMSL nachträglich ändern. Weitere Informationen finden Sie unter Erweiterte inkrementelle Aktualisierung – Reine Metadatenbereitstellung.
  • Nach der Veröffentlichung eines Modells im Power BI-Dienst können Sie das Modell nicht als PBIX-Datei wieder in Power BI Desktop laden. Da Modelle im Power BI-Dienst so groß werden können, ist es unpraktisch, sie herunterzuladen und auf einem gewöhnlichen Desktopcomputer zu öffnen.
  • Wenn Sie Echtzeitdaten mit DirectQuery abrufen, kann das Modell nicht in einem Premium-fremden Arbeitsbereich veröffentlicht werden. Die inkrementelle Aktualisierung mit Echtzeitdaten wird nur mit Power BI Premium unterstützt.

Erstellen von Parametern

Zur Konfiguration der inkrementellen Aktualisierung in Power BI Desktop erstellen Sie zunächst im Power Query-Editor im Dialogfeld „Parameter verwalten“ zwei Date/Time-Parameter mit den reservierten Namen RangeStart und RangeEnd (die Groß-/Kleinschreibung muss beachtet werden). Anhand dieser Parameter werden die Daten zunächst gefiltert, so dass nur diejenigen Zeilen in die Power BI Desktop-Modelltabelle geladen werden, die mit dem angegebenen Zeitraum übereinstimmen. RangeStart stellt das älteste oder früheste Datum bzw. die älteste bzw. früheste Uhrzeit dar, und RangeEnd stellt das neueste Datum bzw. die neueste Uhrzeit dar. Nach der Veröffentlichung des Modells im Dienst werden RangeStart und RangeEnd automatisch vom Dienst durch die Einstellungen der Richtlinie für die inkrementelle Aktualisierung überschrieben, damit nur die Daten abgefragt werden, die mit dem Aktualisierungszeitraum der Richtlinie übereinstimmen.

Die Datenquellentabelle „FactInternetSales“ erfasst beispielsweise täglich etwa 10.000 neue Zeilen. Um die Anzahl der anfänglich in das Modell geladenen Zeilen in Power BI Desktop zu begrenzen, empfiehlt es sich, den Zeitraum mit RangeStart und RangeEnd auf zwei Tage festzulegen.

Screenshot of the Manage Parameters dialog showing the RangeStart and RangeEnd parameters.

Filtern von Daten

Nachdem die Parameter RangeStart und RangeEnd definiert sind, wenden Sie auf die Datumsspalte Ihrer Tabelle benutzerdefinierte Datumsfilter an. Die angewendeten Filter wählen eine Teilmenge der Daten aus, die nun mit der Schaltfläche Anwenden in das Modell geladen werden.

Screenshot of column context menu with Custom Filter selected

In unserem FactInternetSales-Beispiel werden nach der parameterbasierten Filtererstellung und dem Anwenden von Schritten das Datenvolumen von zwei Tagen (etwa 20.000 Zeilen) in das Modell geladen.

Definieren einer Richtlinie

Nach der Anwendung der Filter und dem Laden einer Teilmenge der Daten in das Modell definieren Sie eine inkrementelle Aktualisierungsrichtlinie für die Tabelle. Nachdem das Modell im Dienst veröffentlicht wurde, wird die Richtlinie vom Dienst verwendet, um Tabellenpartitionen zu erstellen und zu verwalten und Aktualisierungsvorgänge auszuführen. Zur Definition der Richtlinie geben Sie im Dialogfeld Inkrementelle Aktualisierung und Echtzeitdaten sowohl die erforderlichen als auch optionale Einstellungen an.

Screenshot of the Incremental refresh and real-time data dialog showing the Incrementally refresh this table option on.

Tabelle

Im Listenfeld Tabelle auswählen ist standardmäßig die in der Datenansicht ausgewählte Tabelle angegeben. Aktivieren Sie die inkrementelle Aktualisierung für die Tabelle mit dem Schieberegler. Wenn der Power Query-Ausdruck für die Tabelle keinen auf den Parametern RangeStart und RangeEnd basierenden Filter enthält, ist der Umschalter nicht verfügbar.

Erforderliche Einstellungen

Die Einstellung Daten archivieren beginnend X vor dem Aktualisierungsdatum bestimmt den Verlaufszeitraum, in dem Zeilen mit einem Datum/einer Uhrzeit in diesem Zeitabschnitt in das Modell aufgenommen werden, plus Zeilen für den aktuellen unvollständigen Verlaufszeitraum sowie Zeilen im Aktualisierungszeitraum bis zum aktuellen Datum und zur aktuellen Uhrzeit.

Wenn Sie beispielsweise fünf Jahre angeben, speichert die Tabelle die Verlaufsdaten der letzten fünf Jahre in Jahrespartitionen. Außerdem enthält die Tabelle Zeilen für das aktuelle Jahr in Quartals-, Monats- oder Tagespartitionen bis zum und einschließlich dem Aktualisierungszeitraum.

Für Modelle in Premium-Kapazitäten können Verlaufspartitionen rückwirkend selektiv mit einer von dieser Einstellung festgelegten Granularität aktualisiert werden. Weitere Informationen finden Sie unter Erweiterte inkrementelle Aktualisierung – Partitionen.

Die Einstellung Daten werden inkrementell aktualisiert, beginnend vor dem Aktualisierungsdatum bestimmt den inkrementellen Aktualisierungszeitraum. Alle Zeilen, deren Datum/Uhrzeit mit diesem Zeitraum übereinstimmen, werden in die Aktualisierungspartitionen aufgenommen und bei jedem Aktualisierungsvorgang aktualisiert.

Geben Sie beispielsweise einen Aktualisierungszeitraum von drei Tagen an, so überschreibt der Dienst bei jedem Aktualisierungsvorgang die Parameter RangeStart und RangeEnd und erstellt so jeweils eine aktuelle Abfrage nach allen Zeilen, deren Datum/Uhrzeit innerhalb der letzten drei Tage liegen – denn Beginn und Ende des Zeitraums werden bei jeder Aktualisierung an das aktuelle Datum und die aktuelle Uhrzeit angepasst. Zeilen, deren Datum/Uhrzeit innerhalb der letzten drei Tage bis zum Zeitpunkt des aktuellen Aktualisierungsvorgangs liegen, werden aktualisiert. Bei dieser Richtlinie ist davon auszugehen, dass der Dienst für die Modelltabelle „FactInternetSales“ mit ihren durchschnittlich 10.000 neuen Zeilen pro Tag bei jedem Aktualisierungsvorgang ungefähr 30.000 Zeilen aktualisiert.

Achten Sie bei der Angabe des Zeitraums darauf, dass Ihr Zeitraum nur die Mindestanzahl von Zeilen enthält, die für eine genaue Berichterstellung erforderlich sind. Wenn Sie Richtlinien für mehrere Tabellen definieren, müssen Sie die gleichen RangeStart- und RangeEnd-Parameter verwenden, selbst wenn für die einzelnen Tabellen unterschiedliche Speicher- und Aktualisierungszeiträume definiert sind.

Optionale Einstellungen

Die Einstellung Abrufen der neuesten Daten in Echtzeit mit DirectQuery (nur Premium) ermöglicht das Abrufen der neuesten Änderungen aus der aktuellen Tabelle in der Datenquelle über den Zeitraum der inkrementellen Aktualisierung hinaus mithilfe von DirectQuery. Alle Zeilen, deren Datum/Uhrzeit nach dem inkrementellen Aktualisierungszeitraum liegt, werden in eine DirectQuery-Partition aufgenommen und mit jeder Modellabfrage aus der Datenquelle abgerufen.

Wenn diese Einstellung aktiviert ist, überschreibt der Dienst auch in diesem Fall bei jedem Aktualisierungsvorgang die Parameter RangeStart und RangeEnd und erstellt so jeweils eine aktuelle Abfrage nach Zeilen, deren Datum/Uhrzeit innerhalb des Aktualisierungszeitraums liegen – auch hier sind Beginn und Ende des Zeitraums vom aktuellen Datum und der aktuellen Uhrzeit abhängig. In die Aktualisierung eingeschlossen sind auch alle Zeilen, deren Datum/Uhrzeit nach dem aktuellen Aktualisierungszeitpunkt liegen. Mit diesem Typ von Richtlinie enthält die Modelltabelle „FactInternetSales“ im Dienst stets die neuesten Datenaktualisierungen.

Die Option Nur vollständige Tage aktualisieren stellt sicher, dass alle Zeilen eines Tags vollständig in den Aktualisierungsvorgang eingeschlossen werden. Diese Einstellung ist optional, sofern nicht die Einstellung Abrufen der neuesten Daten in Echtzeit mit DirectQuery (nur Premium) aktiviert ist. Nehmen wir beispielsweise an, Ihre Aktualisierung ist für 4:00 Uhr morgens geplant. Neue Datenzeilen, die innerhalb der vier Stunden zwischen Mitternacht und 4:00 Uhr morgens in der Datenquellentabelle erscheinen, müssen vermutlich nicht berücksichtigt werden. Bei einigen Geschäftsmetriken, z. B. Barrel pro Tag in der Öl- und Gasindustrie, ist eine Verwendung von Teiltagen nicht sinnvoll. Oder nehmen wir ein weiteres Beispiel, in dem die Daten eines Finanzsystems aktualisiert bzw. die Daten des Vormonats jeweils am zwölften Kalendertag des Monats freigegeben werden sollen. Sie könnten in diesem Fall den Aktualisierungszeitraum auf einen Monat und die Aktualisierung für den zwölften Tag des Monats festlegen. Wenn diese Option aktiviert ist, werden z. B. die Daten vom Januar am 12. Februar aktualisiert.

Berücksichtigen Sie in diesem Szenario, dass Aktualisierungsvorgänge im Dienst unter UTC-Zeit ausgeführt werden, sofern die geplante Aktualisierung nicht für eine Nicht-UTC-Zeitzone konfiguriert ist. Dies kann das effektive Datum bestimmen und sich auf abgeschlossene Zeiträume auswirken.

Die Einstellung Datenänderungen erkennen ermöglicht eine noch gezieltere Aktualisierung. Sie können eine Datums-/Uhrzeitspalte auswählen, um nur die Tage zu ermitteln und zu aktualisieren, an denen sich die Daten geändert haben. Dieses Szenario setzt voraus, dass eine solche Spalte in der Datenquelle vorhanden ist – was normalerweise zu Prüfzwecken der Fall ist. Es sollte sich hierbei nicht um die gleiche Spalte handeln, die zum Partitionieren der Daten mit den Parametern RangeStart und RangeEnd verwendet wird. Der Maximalwert dieser Spalte wird für jeden der Zeiträume im Inkrementbereich ausgewertet. Wenn sich die Spalte seit der letzten Aktualisierung nicht geändert hat, besteht kein Grund, den Zeitraum zu aktualisieren. Dadurch können sich die Tage, die inkrementell aktualisiert werden müssen, von drei auf einen Tag reduzieren.

Das aktuelle Design erfordert, dass die Spalte zur Erkennung von Datenänderungen beibehalten und im Arbeitsspeicher zwischengespeichert wird. Zum Reduzieren der Kardinalität und des Arbeitsspeicherverbrauchs können die folgenden Techniken verwendet werden:

  • Behalten Sie nur den Maximalwert der Spalte zum Zeitpunkt der Aktualisierung bei, z. B. mithilfe einer Power Query-Funktion.
  • Reduzieren Sie die Genauigkeit auf ein angesichts Ihrer Anforderungen an die Aktualisierungsfrequenz vertretbares Niveau.
  • Zu diesem Zweck können Sie über den XMLA-Endpunkt eine benutzerdefinierte Abfrage zum Erkennen von Datenänderungen definieren. Darüber hinaus sollten Sie die Beibehaltung des Spaltenwerts vermeiden.

In einigen Fällen kann der Mechanismus der Option Datenänderungen erkennen* weiter verbessert werden. Möglicherweise empfiehlt sich beispielsweise, das Beibehalten der Spalte „Letzte Aktualisierung“ im In-Memory-Cache zu vermeiden oder Szenarien zu ermöglichen, in denen eine Konfigurations-/Anweisungstabelle durch ETL-Prozesse (Extract-Transform-Load) so vorbereitet wird, dass die zu aktualisierenden Partitionen markiert werden. Bei Premium-Kapazitäten können Sie in solchen Fällen das Verhalten der Einstellung „Datenänderungen erkennen“ mit TMSL und/oder TOM überschreiben. Weitere Informationen finden Sie unter Erweiterte inkrementelle Aktualisierung – Benutzerdefinierte Abfragen zum Erkennen von Datenänderungen.

Veröffentlichen

Nachdem Sie die Richtlinie für die inkrementelle Aktualisierung konfiguriert haben, veröffentlichen Sie das Modell im Dienst. Sobald die Veröffentlichung abgeschlossen ist, können Sie den ersten Aktualisierungsvorgang für das Modell ausführen.

Hinweis

Semantikmodell, die über eine Richtlinie für die inkrementelle Aktualisierung verfügen, um mit DirectQuery die neuesten Daten in Echtzeit abzurufen, können nur in einem Premium-Arbeitsbereich veröffentlicht werden.

Wenn davon auszugehen ist, dass ein Modell, das in einem Arbeitsbereich mit Premium-Kapazität veröffentlicht wird, auf mehr als 1 GB anwächst, können Sie die Leistung des Aktualisierungsvorgangs verbessern und sicherstellen, dass das Modell die Größenbeschränkungen nicht überschreitet, indem Sie noch vor Ausführung des ersten Aktualisierungsvorgangs im Dienst das Speicherformat für große Modelle aktivieren. Weitere Informationen finden Sie unter Große Modelle in Power BI Premium.

Wichtig

Nachdem Power BI Desktop das Modell im Dienst veröffentlicht hat, können Sie diese .pbix-Datei nicht mehr zurückladen.

Aktualisieren

Nach der Veröffentlichung im Dienst führen Sie einen ersten Aktualisierungsvorgang für das Modell aus. Diese Aktualisierung sollte individuell (manuell) erfolgen, damit Sie den Fortschritt überwachen können. Der erste Aktualisierungsvorgang kann einige Zeit in Anspruch nehmen. Partitionen müssen erstellt, Verlaufsdaten geladen, Objekte wie Beziehungen und Hierarchien erstellt bzw. angepasst und berechnete Objekte neu berechnet werden.

Nachfolgende einzelne oder geplante Aktualisierungsvorgänge erfolgen danach wesentlich schneller, da nur die Partitionen der inkrementellen Aktualisierung aktualisiert werden müssen. Andere Verarbeitungsvorgänge, wie das Zusammenführen von Partitionen und die Neuberechnung, müssen zwar immer noch durchgeführt werden, benötigen im Vergleich zur ersten Aktualisierung jedoch wesentlich weniger Zeit.

Automatische Berichtsaktualisierung

Für Berichte, die ein Modell mit einer Richtlinie für die inkrementelle Aktualisierung verwenden, um die neuesten Daten in Echtzeit mit DirectQuery abzurufen, empfiehlt es sich, die automatische Seitenaktualisierung in einem festen Intervall oder auf Grundlage der Änderungserkennung zu aktivieren, damit in den Berichten die neuesten Daten ohne Verzögerung dargestellt werden. Weitere Informationen dazu finden Sie unter Automatische Seitenaktualisierung in Power BI.

Erweiterte inkrementelle Aktualisierung

Wenn Ihr Modell einer Premium-Kapazität mit aktiviertem XMLA-Endpunkt zugewiesen ist, kann die inkrementelle Aktualisierung für erweiterte Szenarien nochmals optimiert werden. Beispielsweise können Sie SQL Server Management Studio verwenden, um Partitionen anzuzeigen und zu verwalten, den anfänglichen Aktualisierungsvorgang per Bootstrap zu starten oder Verlaufspartitionen rückwirkend zu aktualisieren. Weitere Informationen finden Sie unter Erweiterte inkrementelle Aktualisierung mit dem XMLA-Endpunkt.

Community

Power BI wird von einer dynamischen Community unterstützt, in der MVPs, BI-Experten und Peers Fachwissen in Diskussionsgruppen, Videos, Blogs und mehr teilen. Ausführliche Informationen zur inkrementellen Aktualisierung finden Sie auch in den folgenden Ressourcen: