Comando Refresh (TMSL)

Si applica a: SQL Server 2016 e versioni successive Analysis Services Azure Analysis Services 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 dati:

  • Modificare la proprietà QueryDefinition di un oggetto Partition per importare i dati usando un'espressione di filtro in tempo reale.

  • 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, in quanto le credenziali vengono fornite e usate temporaneamente per la durata dell'operazione, anziché archiviate.

  • Eseguire l'override dei Power BI di aggiornamento incrementale del set di dati.

Per un'illustrazione di questi override di 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

Refresh accetta un parametro di tipo e una definizione di 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 di tipo imposta un ambito per l'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:

Oggetti di 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"  
      }  
    ]  
  }  
}  

Oggetti 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 Power BI set di dati, è 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 illustra l'impatto quando applyRefreshPolicy è true (impostazione predefinita) su ognuno dei tipi di aggiornamento per una tabella che contiene criteri 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, un riepilogo è descritto qui:
- Se necessario, vengono aggiunte nuove partizioni all'intervallo incrementale.
- Se non viene definito alcun pollingExpression per il rilevamento delle modifiche ai dati, tutte le partizioni nell'intervallo incrementale vengono aggiornate per intero.
- Se è definito un oggetto 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 per intero.
- Le partizioni cronologiche non vengono aggiornate indipendentemente dal fatto che siano state cancellate o meno.
- Le partizioni cronologiche che non rientrano nell'intervallo vengono eliminate.
- Ricalcolo delle partizioni e dei dipendenti interessati.
clearValues applyRefreshPolicy non influisce sul comportamento.
Calcolare applyRefreshPolicy non influisce sul comportamento.
dataOnly Uguale a type=full, ma senza ricalcolo delle partizioni e dei dipendenti interessati.
automatic Come 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 di ConnectionString e 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 di override particolari impostando il parametro di tipo su un aggiornamento dataOnly, i metadati rimangono invariati.

{
  "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 della chiamata al metodo Execute (XMLA) su un endpoint XMLA, esposto nei modi seguenti:

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

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

  • Come input per un'attività SSIS o un 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 .