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.