Condividi tramite


Comando Refresh (TMSL)

Si applica a: SQL Server 2016 e versioni successive di Analysis Services Azure Analysis Services Fabric/Power BI Premium

Elabora gli oggetti nel database corrente.
L'aggiornamento viene sempre eseguito in parallelo, a meno che non venga limitato con il comando Sequence (TMSL).

È possibile eseguire l'override di alcune proprietà di alcuni oggetti durante un'operazione di aggiornamento dei dati:

  • Modificare la proprietà QueryDefinition di un oggetto Partition per importare i dati usando un'espressione di filtro a comparsa.

  • Specificare le credenziali dell'origine dati come parte di un comando Refresh nella proprietà ConnectionString di un oggetto DataSource . Questo approccio può essere considerato più sicuro, poiché le credenziali vengono fornite e usate temporaneamente per la durata dell'operazione, anziché archiviate.

  • Eseguire l'override dei criteri di aggiornamento incrementale del modello semantico di Power BI predefinito.

Per un'illustrazione di queste proprietà, vedere gli esempi in questo argomento.

Nota

A differenza dell'elaborazione multidimensionale, non esiste una gestione speciale degli errori di elaborazione per l'elaborazione tabulare.

Richiesta

L'aggiornamento accetta un parametro di tipo e una definizione dell'oggetto.

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

Il parametro type imposta un ambito nell'operazione di elaborazione.

Tipo di aggiornamento Si applica a Descrizione
completi Database
Tavolo
Partition
Per tutte le partizioni della partizione, della tabella o del database specificati, aggiornare i dati e ricalcolare tutti i dipendenti. Per una partizione di calcolo, ricalcolare la partizione e tutti i relativi dipendenti.
clearValues Database
Tavolo
Partition
Cancellare i valori in questo oggetto e tutti i relativi dipendenti.
Calcolare Database
Tavolo
Partition
Ricalcolare questo oggetto e tutti i relativi dipendenti, ma solo se necessario. Questo valore non forza il ricalcolo, se non per le formule volatili.
dataOnly Database
Tavolo
Partition
Aggiornare i dati in questo oggetto e cancellare tutti i dipendenti.
automatic Database
Tavolo
Partition
Se l'oggetto deve essere aggiornato e ricalcolato, eseguire l'operazione richiesta sia per l'oggetto che per tutti i dipendenti. Si applica se la partizione è in uno stato diverso da pronta.
add Partition Aggiungere i dati alla partizione e ricalcolare tutti i dipendenti. Questo comando è valido solo per le partizioni regolari e non per le partizioni di calcolo.
Deframmentare Database
Tabella
Deframmentare i dati nella tabella specificata. Man mano che vengono aggiunti o rimossi dati in una tabella, i dizionari di ogni colonna possono risultare contaminati da valori che non esistono più tra i valori di colonna effettivi. L'opzione defragment consentirà di pulire i valori non più usati nei dizionari.

È possibile aggiornare gli oggetti seguenti:

Oggetto database (TMSL) Elaborare un database.

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

Oggetto Tables (TMSL) Elaborare una singola tabella.

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

Oggetto Partitions (TMSL) Elaborare una singola partizione all'interno di una tabella.

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

Parametri facoltativi

Per i modelli semantici di Power BI, è possibile aggiungere i parametri seguenti a un comando di aggiornamento TMSL per eseguire l'override del comportamento di aggiornamento incrementale predefinito:

  • applyRefreshPolicy: se per una tabella è definito un criterio di aggiornamento incrementale, applyRefreshPolicy determina se il criterio deve essere applicato o meno. Se il criterio non viene applicato, un'operazione di elaborazione completa lascerà invariate le definizioni delle partizioni e tutte le partizioni nella tabella verranno aggiornate completamente. Il valore predefinito è true.

  • effectiveDate: se viene applicato, un criterio di aggiornamento incrementale deve conoscere la data corrente per determinare gli intervalli delle finestre temporali per l'intervallo cronologico e l'intervallo incrementale. Il parametro effectiveDate consente di eseguire l'override della data corrente. Questo è utile per gli scenari di test, demo e aziendali in cui i dati vengono aggiornati in modo incrementale fino a una data precedente o futura (ad esempio, per i budget previsti per il futuro). Il valore predefinito è la data corrente.

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

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

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

La tabella seguente mostra l'impatto quando applyRefreshPolicy è true (impostazione predefinita) per ogni tipo di aggiornamento per una tabella che contiene un criterio di aggiornamento incrementale:

Tipo di aggiornamento Impatto
completi I criteri vengono applicati come descritto in Aggiornamento incrementale in Power BI. Supponendo che le partizioni cronologiche siano già state create da un'operazione di aggiornamento precedente, viene descritto un riepilogo qui:
- Le nuove partizioni vengono aggiunte all'intervallo incrementale se necessario.
- Se non viene definito alcun pollingExpression per il rilevamento delle modifiche ai dati, tutte le partizioni nell'intervallo incrementale vengono aggiornate in modo completo.
- Se viene definito un pollingExpression, viene valutato per ogni partizione nell'intervallo incrementale. Solo quelli che restituiscono un risultato di polling diverso rispetto all'operazione di aggiornamento precedente vengono aggiornati in modo completo.
- Le partizioni storiche non vengono aggiornate indipendentemente dal fatto che siano state cancellate dei dati.
- Le partizioni cronologiche che rientrano nell'intervallo vengono eliminate.
- Ricalcolo di partizioni interessate e dipendenti.
clearValues applyRefreshPolicy non influisce sul comportamento.
Calcolare applyRefreshPolicy non influisce sul comportamento.
dataOnly Uguale a type=full, ma senza ricalcolo di partizioni interessate e dipendenti.
automatic Uguale a type=full, ma le partizioni nell'intervallo incrementale vengono aggiornate usando type=automatic.
add applyRefreshPolicy non influisce sul comportamento.
Deframmentare applyRefreshPolicy non influisce sul comportamento.

Risposta

Restituisce un risultato vuoto quando il comando ha esito positivo. In caso contrario, viene restituita un'eccezione XMLA.

Esempio

Eseguire l'override sia di ConnectionString che di QueryDefinition di una partizione.

{
  "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]"
            }
          }
        ]
      }
    ]
  }
}

L'ambito particolare esegue l'override impostando il parametro di tipo su un aggiornamento dataOnly , i metadati rimangono intatti.

{
  "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"
          }
        ]
      }
    ]
  }
}

Utilizzo (endpoint)

Questo elemento di comando viene usato in un'istruzione del metodo Execute (XMLA) chiamata su un endpoint XMLA esposto nei modi seguenti:

  • Come finestra XMLA in SQL Server Management Studio (SSMS)

  • Come file di input per il cmdlet invoke-ascmd di PowerShell

  • Come input per un'attività SSIS o un processo SQL Server Agent

È possibile generare uno script pronto per questo comando da SSMS. Ad esempio, è possibile fare clic su Script in una finestra di dialogo Elaborazione.