Refresh-Befehl (TMSL)

Gilt für: SQL Server 2016 und höher Analysis Services Azure Analysis Services Fabric/Power BI Premium

Verarbeitet Objekte in der aktuellen Datenbank.
Aktualisierung wird immer parallel ausgeführt, es sei denn, Sie drosseln sie mit dem Sequence-Befehl (TMSL).

Sie können einige Eigenschaften einiger Objekte während eines Datenaktualisierungsvorgangs überschreiben:

  • Ändern Sie die QueryDefinition-Eigenschaft eines Partition-Objekts , um Daten mithilfe eines on-the-fly-Filterausdrucks zu importieren.

  • Geben Sie als Teil eines Refresh-Befehls in der ConnectionString-Eigenschaft eines DataSource-Objekts Datenquellenanmeldeinformationen an. Dieser Ansatz könnte als sicherer angesehen werden, da Anmeldeinformationen für die Dauer des Vorgangs bereitgestellt und vorübergehend verwendet werden, anstatt gespeichert zu werden.

  • Überschreiben Sie die standardmäßige inkrementelle Aktualisierungsrichtlinie für das semantische Power BI-Modell.

Eine Abbildung dieser Eigenschaftsüberschreibungen finden Sie in den Beispielen in diesem Thema.

Hinweis

Im Gegensatz zur mehrdimensionalen Verarbeitung gibt es bei der tabellarischen Verarbeitung keine spezielle Behandlung von Verarbeitungsfehlern.

Anforderung

Refresh benötigt einen Typparameter und eine Objektdefinition.

    {  
        "refresh": {  
            "description": "Parameters of Refresh command of Analysis Services JSON API",  
            "properties": {  
            "type": {  
                "enum": [  
                "full",  
                "clearValues",  
                "calculate",  
                "dataOnly",  
                "automatic",  
                "add",  
                "defragment"  
                ]  
            },  
            "objects": [  

Der Type-Parameter legt einen Bereich für den Verarbeitungsvorgang fest.

Aktualisierungstyp Gilt für: BESCHREIBUNG
Voll Datenbank
Tabelle
Partition
Hiermit werden für alle Partitionen in der angegebenen Partition, Tabelle oder Datenbank die Daten aktualisiert und alle abhängigen Elemente neu berechnet. Hiermit werden für eine Berechnungspartition die Partition und alle abhängigen Elemente neu berechnet.
clearValues Datenbank
Tabelle
Partition
Hiermit werden Werte in diesem Objekt und allen abhängigen Elementen gelöscht.
Berechnen Datenbank
Tabelle
Partition
Hiermit werden dieses Objekt und alle abhängigen Elemente neu berechnet, aber nur, wenn erforderlich. Dieser Wert erzwingt keine Neuberechnung, mit Ausnahme von veränderlichen Formeln.
dataOnly Datenbank
Tabelle
Partition
Hiermit werden Daten in diesem Objekt aktualisiert und alle abhängigen Objekte gelöscht.
automatic Datenbank
Tabelle
Partition
Wenn das Objekt aktualisiert und neu berechnet werden muss, werden hiermit das Objekt und alle abhängigen Elemente aktualisiert und neu berechnet. Gilt, wenn die Partition in einem anderen Zustand als „bereit“ ist.
add Partition Hiermit werden Daten an diese Partition angehängt, und alle abhängigen Elemente werden neu berechnet. Dieser Befehl gilt nur für reguläre Partitionen, nicht für Berechnungspartitionen.
Defragmentieren Datenbank
Tabelle
Hiermit werden die Daten in der angegebenen Tabelle defragmentiert. Beim Hinzufügen oder Entfernen von Daten zu bzw. aus einer Tabelle verbleiben in den Wörterbüchern für jede Spalte Werte, die nicht mehr in den tatsächlichen Spaltenwerten vorhanden sind. Die Defragmentierung bereinigt die Werte in den Wörterbüchern, die nicht mehr verwendet werden.

Sie können die folgenden Objekte aktualisieren:

Datenbankobjekt (TMSL) Verarbeiten einer Datenbank.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200"  
      }  
    ]  
  }  
}  

Tabellenobjekt (TMSL) Verarbeiten einer einzelnen Tabelle.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "Date"  
      }  
    ]  
  }  
}  

Partitions-Objekt (TMSL) Verarbeiten einer einzelnen Partition innerhalb einer Tabelle.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "FactSalesQuota",  
        "partition": "FactSalesQuota"  
      },  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "FactSalesQuota",  
        "partition": "FactSalesQuota - 2011"  
      }  
    ]  
  }  
}  

Optionale Parameter

Für Power BI-Semantikmodelle können einem TMSL-Aktualisierungsbefehl die folgenden Parameter hinzugefügt werden, um das Standardverhalten der inkrementellen Aktualisierung zu überschreiben:

  • applyRefreshPolicy: Wurde für eine Tabelle eine Richtlinie für die inkrementelle Aktualisierung definiert, wird mit „applyRefreshPolicy“ festgelegt, ob die Richtlinie angewendet wird. Wird die Richtlinie nicht angewendet, bleiben bei einem vollständigen Verarbeitungsvorgang die Partitionsdefinitionen unverändert, und alle Partitionen in der Tabelle werden vollständig aktualisiert. Der Standardwert ist true.

  • effectiveDate: Wird eine Richtlinie für die inkrementelle Aktualisierung angewendet, muss das aktuelle Datum bekannt sein, damit Gleitfensterbereiche für den historischen und den inkrementellen Bereich bestimmt werden können. Mit dem Parameter „effectiveDate“ können Sie das aktuelle Datum überschreiben. Dies ist nützlich für Tests, Demos und Geschäftsszenarios, in denen Daten inkrementell bis zu einem Datum in der Vergangenheit oder in der Zukunft aktualisiert werden (z. B. für künftige Budgets). Der Standardwert ist das aktuelle Datum.

{
  "refresh": {
    "type": "full",

    "applyRefreshPolicy": true,
    "effectiveDate": "12/31/2013",

    "objects": [
      {
        "database": "IR_AdventureWorks", 
        "table": "FactInternetSales" 
      }
    ]
  }
}

Die folgende Tabelle zeigt die Auswirkungen, wenn applyRefreshPolicy auf jeden der Aktualisierungstypen für eine Tabelle, die eine Richtlinie für inkrementelle Aktualisierungen enthält, true (Standard) ist:

Aktualisierungstyp Auswirkung
Voll Die Richtlinie wird wie unter Inkrementelle Aktualisierung in Power BI beschrieben angewendet. Vorausgesetzt, verlaufsbezogene Partitionen wurden bereits durch einen vorherigen Aktualisierungsvorgang erstellt, wird hier eine Zusammenfassung beschrieben:
– Neue Partitionen werden bei Bedarf dem inkrementellen Bereich hinzugefügt.
- Wenn kein PollingExpression zur Erkennung von Datenänderungen definiert ist, werden alle Partitionen im inkrementellen Bereich vollständig aktualisiert.
- Wenn ein PollingExpression definiert ist, wird es für jede Partition im inkrementellen Bereich ausgewertet. Nur diejenigen, die im Vergleich zum vorherigen Aktualisierungsvorgang ein anderes Abfrageergebnis zurückgeben, werden vollständig aktualisiert.
– Historische Partitionen werden nicht aktualisiert, unabhängig davon, ob sie von Daten gelöscht wurden.
– Historische Partitionen, die aus dem Bereich fallen, werden gelöscht.
- Neuberechnung betroffener Partitionen und abhängiger Partitionen.
clearValues applyRefreshPolicy wirkt sich nicht auf das Verhalten aus.
Berechnen applyRefreshPolicy wirkt sich nicht auf das Verhalten aus.
dataOnly Identisch mit type=full, aber ohne Neuberechnung betroffener Partitionen und abhängiger Elemente.
automatic Identisch mit type=full, aber Partitionen im inkrementellen Bereich werden mithilfe von type=automatic aktualisiert.
add applyRefreshPolicy wirkt sich nicht auf das Verhalten aus.
Defragmentieren applyRefreshPolicy wirkt sich nicht auf das Verhalten aus.

Antwort

Gibt ein leeres Ergebnis zurück, wenn der Befehl erfolgreich ist. Andernfalls wird eine XMLA-Ausnahme zurückgegeben.

Beispiele

Überschreiben Sie sowohl connectionString als auch QueryDefinition einer Partition.

{
  "refresh": {
    "type": "dataOnly",
    "objects": [
      {
        "database": "AdventureWorksDW2017",
        "table": "DimCustomer"
      }
    ],
    "overrides": [
      {
        "dataSources": [ // Bindings for DataSources​
          {
            "originalObject": {
              "database": "AdventureWorksDW2017",
              "dataSource": "SqlServer localhost"
            },
            "connectionString": "Provider=SQLNCLI11.1;Data Source=.;Persist Security Info=True;User ID=YourSQLLogin;Password=YourPassword;Initial Catalog=AdventureWorksDW2017"
          }
        ],
        "partitions": [ // Bindings for Partitions​
          {
            "originalObject": {
              "database": "AdventureWorksDW2017",
              "table": "DimCustomer",
              "partition": "DimCustomer"
            },
            "source": {
              "query": "SELECT * FROM [dbo].[DimCustomer]"
            }
          }
        ]
      }
    ]
  }
}

Legen Sie bestimmte Außerkraftsetzungen fest, indem Sie den type-Parameter auf eine dataOnly-Aktualisierung festlegen. Metadaten bleiben intakt.

{
  "refresh": {
    "type": "dataOnly",
    "objects": [
      {
        "database": "TMTestDB",
        "table": "Customer"
      },
      {
        "database": "TMTestDB",
        "table": "Sales"
      }
    ],
    "overrides": [
      {
        "scope": {
          "database": "TMTestDB",
          "table": "Sales"
        },
        "dataSources": [
          {
            "originalObject": {
              "dataSource": "SqlServer sqlcldb2 AS_foodmart_2000"
            },
            "connectionString": "Provider=SQLNCLI11;Data Source=sqlcldb2;Initial Catalog=AS_foodmart_2000;Integrated Security=SSPI;Persist Security Info=false"
          }
        ]
      }
    ]
  }
}

Verwendung (Endpunkte)

Dieses Befehlselement wird in einer Anweisung des Aufrufs der Execute-Methode (XMLA) über einen XMLA-Endpunkt verwendet und auf folgende Weise verfügbar gemacht:

  • Als XMLA-Fenster in SQL Server Management Studio (SSMS)

  • Als Eingabedatei für das PowerShell-Cmdlet invoke-ascmd

  • Als Eingabe für einen SSIS-Task oder SQL Server-Agent Auftrag

Sie können ein vorgefertigtes Skript für diesen Befehl von SSMS generieren. Sie können beispielsweise in einem Verarbeitungsdialogfeld auf das Skript klicken.