Konfigurieren der inkrementellen Aktualisierung und von Echtzeitdaten

In diesem Artikel erfahren Sie, wie Sie die inkrementelle Aktualisierung und Echtzeitdaten für Semantikmodelle konfigurieren. Informationen zum Konfigurieren der inkrementellen Aktualisierung für Dataflows finden Sie unter Premium-Features von Dataflows – Inkrementelle Aktualisierung.

Das Konfigurieren der inkrementellen Aktualisierung umfasst das Erstellen von RangeStart- und RangeEnd-Parametern, das Anwenden von Filtern und das Definieren einer Richtlinie für inkrementelle Aktualisierungen. Nach der Veröffentlichung im Power BI-Dienst führen Sie einen ersten Aktualisierungsvorgang für das Semantikmodell aus. Beim ersten Aktualisierungsvorgang und bei nachfolgenden Aktualisierungsvorgängen wird die von Ihnen definierte Richtlinie für inkrementelle Aktualisierungen angewendet. Bevor Sie diese Schritte ausführen, vergewissern Sie sich, dass Sie die unter Inkrementelle Aktualisierung und Echtzeitdaten für Semantikmodelle beschriebene Funktionalität vollständig verstanden haben.

Erstellen von Parametern

In dieser Aufgabe verwenden Sie den Power Query-Editor, um RangeStart- und RangeEnd-Parameter mit Standardwerten zu erstellen. Die Standardwerte gelten nur beim Filtern der Daten, die in das Modell geladen werden sollen, in Power BI Desktop. Die von Ihnen eingegebenen Werte sollten nur eine kleine Menge der neuesten Daten aus Ihrer Datenquelle enthalten. Wenn diese Zeitbereichswerte im Dienst veröffentlicht werden, werden sie von der Richtlinie für inkrementelle Aktualisierungen außer Kraft gesetzt. Das heißt, die Richtlinie erstellt nacheinander Fenster mit eingehenden Daten.

  1. Wählen Sie in Power BI Desktop im Menüband Start die Option Daten transformieren aus, um den Power Query-Editor zu öffnen.

  2. Wählen Sie die Dropdownliste Parameter verwalten und dann Neuer Parameter aus.

  3. Geben Sie im Feld Name den Namen RangeStart ein (Groß-/Kleinschreibung beachten). Wählen Sie im Feld Typ die Option Datum/Uhrzeit in der Dropdownliste aus. Geben Sie im Feld Aktueller Wert einen Wert für das Anfangsdatum und die Anfangsuhrzeit ein.

    Define the Range Start parameter in the Manage Parameters dialog.

  4. Wählen Sie Neu aus, um einen zweiten Parameter mit dem Namen RangeEnd zu erstellen. Wählen Sie im Feld Typ die Option Datum/Uhrzeit aus, und geben Sie dann im Feld Aktueller Wert einen Enddatums- und -uhrzeitwert ein. Klicken Sie auf OK.

    Define the Range End parameter in the Manage Parameters dialog.

Nachdem Sie nun die Parameter „RangeStart“ und „RangeEnd“ definiert haben, filtern Sie die Daten, die in das Modell geladen werden sollen, auf der Grundlage dieser Parameter.

Filtern von Daten

Hinweis

Bevor Sie mit dieser Aufgabe fortfahren, überprüfen Sie, ob die Quelltabelle eine Datumsspalte vom Datentyp Datum/Uhrzeit aufweist. Falls sie nicht über eine Spalte vom Typ Datum/Uhrzeit verfügt, aber eine Datumsspalte mit ganzzahligen Ersatzschlüsseln in der Form yyyymmdd vorhanden ist, folgen Sie den Schritten unter Konvertieren von DateTime in Integer weiter unten in diesem Artikel, um eine Funktion zu erstellen, die den Datums-/Uhrzeitwert in den Parametern so konvertiert, dass er mit dem ganzzahligen Ersatzschlüssel der Quelltabelle übereinstimmt.

Sie wenden nun einen Filter auf der Grundlage von Bedingungen in den RangeStart- und RangeEnd-Parametern an.

  1. Wählen Sie im Power Query-Editor die Datumsspalte aus, nach der Sie filtern möchten, und wählen Sie dann den Dropdownpfeil >Datumsfilter>Benutzerdefinierter Filter aus.

  2. Wählen Sie in Zeilen filtern zum Angeben der ersten Bedingung ist nach oder ist nach oder gleich aus, wählen Sie Parameter und dann RangeStart aus.

    Wählen Sie zum Angeben der zweiten Bedingung, falls Sie in der ersten Bedingung ist nach ausgewählt haben, ist vor oder gleich aus, oder falls Sie in der ersten Bedingung ist nach oder gleich ausgewählt haben, ist vor für die zweite Bedingung aus, wählen Sie Parameter und dann RangeEnd aus.

    Filter rows dialog showing Range Start and Range End conditions.

    Wichtig: Achten Sie darauf, dass in den Abfragen ein „ist gleich“ (=) bei RangeStart oder RangeEnd vorkommt, aber nicht bei beiden. Wenn das Gleichheitszeichen („=“) bei beiden Parametern vorhanden ist, könnte eine Zeile die Bedingungen beider Abfragen erfüllen, was wiederum zu doppelten Daten im Modell führen könnte. Beispielsweise könnte = Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) zu doppelt vorhandenen Daten führen, wenn ein OrderDate sowohl mit RangeStart als auch mit RangeEnd übereinstimmt.

    Wählen Sie zum Schließen OK aus.

  3. Wählen Sie im Power Query-Editor im Menüband StartSchließen und übernehmen aus. Power Query lädt dann Daten auf der Grundlage der in den Parametern „RangeStart“ und „RangeEnd“ definierten Parameter und aller weiteren von Ihnen definierten Filter.

    Power Query lädt nur Daten zwischen den Angaben für die Parameter „RangeStart“ und „RangeEnd“. Abhängig von der Datenmenge in diesem Zeitraum sollte das Laden schnell gehen. Wenn es langsam und verarbeitungsintensiv erscheint, funktioniert wahrscheinlich das Query Folding der Abfrage nicht.

Definieren einer Richtlinie

Nachdem Sie die RangeStart- und RangeEnd-Parameter definiert und die Daten auf der Grundlage dieser Parameter gefiltert haben, definieren Sie eine Richtlinie für die inkrementelle Aktualisierung. Diese Richtlinie wird erst angewendet, nachdem das Modell im Dienst veröffentlicht und ein manueller oder geplanter Aktualisierungsvorgang ausgeführt wurde.

  1. Klicken Sie in der Datenansicht im Bereich Daten mit der rechten Maustaste auf eine Tabelle, und wählen Sie Inkrementelle Aktualisierung aus.

    Data view showing Table context menu with Incremental refresh selected.

  2. Bestätigen Sie die unter Inkrementelle Aktualisierung und Echtzeitdaten>Tabelle auswählen ausgewählte Tabelle, oder wählen Sie die gewünschte Tabelle aus. Der Standardwert des Listenfelds Tabelle auswählen ist die Tabelle, die Sie in der Datenansicht ausgewählt haben.

  3. Geben Sie die erforderlichen Einstellungen an:

    Bewegen Sie den Schieberegler unter Import- und Aktualisierungsbereiche festlegen>Diese Tabelle inkrementell aktualisieren auf Ein. Wenn der Schieberegler deaktiviert ist, bedeutet dies, dass der Power Query-Ausdruck für die Tabelle keinen Filter enthält, der auf den RangeStart- und RangeEnd-Parametern basiert.

    Geben Sie unter Archivdaten, beginnend den historischen Speicherzeitraum an, den Sie in das Modell einschließen möchten. Alle Zeilen mit Datumswerten in diesem Zeitraum werden in das Modell im Dienst geladen, sofern keine anderen Filter zutreffen.

    Geben Sie unter Daten werden inkrementell aktualisiert, beginnend den Aktualisierungszeitraum an. Alle Zeilen mit einem Datum in diesem Zeitraum werden jedes Mal im Modell aktualisiert, wenn vom Power BI-Dienst ein manueller oder geplanter Aktualisierungsvorgang ausgeführt wird.

  4. Geben Sie optionale Einstellungen an:

    Wählen Sie unter 3. Optionale Einstellungen auswählen die Option Abrufen der neuesten Daten in Echtzeit mit DirectQuery (nur Premium) aus, um die neuesten Datenänderungen einzubeziehen, die nach dem letzten Aktualisierungszeitraum in der Datenquelle aufgetreten sind. Diese Einstellung bewirkt, dass der Tabelle durch die Richtlinie für die inkrementelle Aktualisierung eine DirectQuery-Partition hinzugefügt wird.

    Wählen Sie Nur vollständige Tage aktualisieren aus, um nur vollständige Tage zu aktualisieren. Wenn der Aktualisierungsvorgang erkennt, dass ein Tag nicht abgeschlossen ist, werden die Zeilen für diesen ganzen Tag nicht aktualisiert. Diese Option wird automatisch aktiviert, wenn Sie Abrufen der neuesten Daten in Echtzeit mit DirectQuery (nur Premium) auswählen.

    Wählen Sie Datenänderungen erkennen, um eine Datum-/Uhrzeit-Spalte anzugeben, die dazu verwendet wird, nur die Tage zu erkennen und zu aktualisieren, an denen die Daten geändert wurden. In der Datenquelle muss eine Datums-/Uhrzeitspalte vorhanden sein, normalerweise zu Überwachungszwecken. Diese Spalte sollte nicht die gleiche Spalte sein, die zum Partitionieren der Daten mit den RangeStart- und RangeEnd-Parametern verwendet wird. Der Maximalwert dieser Spalte wird für jeden der Zeiträume im Inkrementbereich ausgewertet. Wenn er sich seit der letzten Aktualisierung nicht geändert hat, wird der aktuelle Zeitraum nicht aktualisiert. Für Modelle, die in Premium-Kapazitäten veröffentlicht wurden, können Sie auch eine benutzerdefinierte Abfrage angeben. Weitere Informationen finden Sie unter Erweiterte inkrementelle Aktualisierung – Benutzerdefinierte Abfragen zum Erkennen von Datenänderungen.

    Abhängig von Ihren Einstellungen sollte Ihre Richtlinie in etwa wie folgt aussehen:

    Incremental refresh and real-time data policy dialog showing incremental refresh range.

  5. Überprüfen Sie Ihre Einstellungen, und wählen Sie dann Anwenden aus, um die Aktualisierungsrichtlinie fertig zu stellen. In diesem Schritt werden keine Daten geladen.

Speichern und im Dienst veröffentlichen

Jetzt, da die Parameter „RangeStart“ und „RangeEnd“, die Filter und die Einstellungen der Aktualisierungsrichtlinie vollständig sind, speichern Sie Ihr Modell, und veröffentlichen Sie es dann im Dienst. Wenn Ihr Modell groß wird, aktivieren Sie unbedingt das Speicherformat für große Modellebevor Sie die erste Aktualisierung im Dienst aufrufen.

Aktualisieren des Modells

Aktualisieren Sie das Modell im Dienst. Bei der ersten Aktualisierung werden sowohl neue als auch aktualisierte Daten im Aktualisierungszeitraum sowie Verlaufsdaten für den gesamten Speicherzeitraum geladen. Je nach Datenmenge kann diese Aktualisierung ziemlich lange dauern. Nachfolgende Aktualisierungen, seien sie manuell oder geplant, erfolgen in der Regel viel schneller, da die Richtlinie für inkrementelle Aktualisierung angewendet wird und nur Daten für den in der Aktualisierungsrichtlinieneinstellung angegebenen Zeitraum aktualisiert werden.

Konvertieren von DateTime in Integer

Dieser Schritt ist nur erforderlich, wenn in der Datumsspalte Ihrer Tabelle anstelle von Datums-/Uhrzeitwerten Integer-Ersatzschlüssel verwendet werden, die Sie für die RangeStart-/RangeEnd-Filterdefinition verwenden möchten.

Der Datentyp der Parameter „RangeStart“ und „RangeEnd“ muss „Date/Time“ (Datum/Uhrzeit) sein. Dies gilt unabhängig vom Datentyp der Datumsspalte. In vielen Datenquellen weisen die Tabellen jedoch keine Spalte mit einem Datums-/Uhrzeitdatentyp auf, sondern besitzen stattdessen eine Datumsspalte mit ganzzahligen Ersatzschlüsseln der Form yyyymmdd. In der Regel können Sie diese Integer-Ersatzschlüssel nicht in den Datentyp „Date/Time“ (Datum/Uhrzeit) konvertieren, da das Ergebnis ein Abfrageausdruck ohne Folding wäre. Sie können aber eine Funktion erstellen, die den Datums-/Uhrzeitwert in den Parametern so konvertiert, dass er dem Integer-Ersatzschlüssel der Datenquellentabelle entspricht, ohne die Eignung zur Faltung zu verlieren. Die Funktion wird dann in einem Filterschritt aufgerufen. Dieser Konvertierungsschritt ist erforderlich, wenn die Datenquellentabelle nur einen Ersatzschlüssel als Integerdatentyp enthält.

  1. Wählen Sie im Menüband Start im Power Query-Editor die Dropdownliste Neue Quelle und dann Leere Abfrage aus.

  2. Geben Sie unter Abfrageeinstellungen einen Namen ein, beispielsweise DateKey, und geben Sie dann im Formel-Editor die folgende Formel ein:

    = (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)

    Power BI function editor showing the integer surrogate DateKey function.

  3. Geben Sie zum Testen der Formel unter Parameter eingeben einen Datums-/Uhrzeitwert ein, und wählen Sie dann Aufrufen aus. Wenn die Formel richtig ist, wird ein ganzzahliger Wert für das Datum zurückgegeben. Löschen Sie nach dem Überprüfen diese neue Abfrage Aufgerufene Funktion.

  4. Wählen Sie unter Abfragen die Tabelle aus, und bearbeiten Sie dann die Abfrageformel, um die Funktion mit den RangeStart- und RangeEnd-Parametern aufzurufen.

    = Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))

    Power BI table showing DateKey filter.