Sincronizzare le repliche con scale-out
Questo articolo descrive come sincronizzare le repliche con scale-out di un modello semantico usando PowerShell nella riga di comando o tramite script.
Quando si lavora con il modello semantico di lettura/scrittura primario e gli utenti del modello semantico usano le repliche di sola lettura, è possibile eseguire refresh e aggiornamenti dei metadati del modello semantico senza influire su di essi. Tuttavia, le modifiche apportate al modello semantico e i refresh avvengono nel modello semantico primario. Per copiare le modifiche apportate alle repliche di sola lettura, è necessario sincronizzarlo con il modello semantico di lettura/scrittura.
Per impostazione predefinita, il parametro autoSyncReadOnlyReplicas
è impostato su true
: Power BI sincronizza automaticamente le repliche. È possibile disabilitare la sincronizzazione automatica impostando autoSyncReadOnlyReplicas
su false
. È tuttavia possibile scegliere di eseguire la sincronizzazione manualmente usando le API REST syncStatus
e sync
.
Per controllare lo stato di sincronizzazione delle repliche, usare l'API REST SyncStatus
. Questo articolo descrive i comandi di PowerShell per l'uso di questa API.
Controllare lo stato di sincronizzazione della replica
###
# Check the scale-out replica sync status
###
Login-PowerBI | Out-Null
$workspaceId = '<enter workspaceId>'
$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
| Where{$_.Name -match "<enter semantic model name>"} `
| Select-Object -ExpandProperty Id -First 1 `
| ForEach-Object {$_.Guid}
$response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId/queryScaleOut/syncStatus" -Method Get | ConvertFrom-Json
$response | Format-List
if ($response.commitVersion -eq $response.minActiveReadVersion)
{
Write-Host "Semantic model read-write and read-only replicas are in sync."
}
else
{
Write-Host "Semantic model read-write and read-only replicas are not in sync." -ForegroundColor Red
}
Se l'API dello stato di sincronizzazione restituisce una risposta vuota o se scaleOutStatus è impostato su "Non disponibile", provare a caricare la replica di lettura/scrittura del modello semantico o eseguire un refresh sul modello per ottenere lo stato di sincronizzazione più recente.
Per altre informazioni, vedere Set di dati - Ottenere lo stato della sincronizzazione con scale out delle query nel gruppo nella guida di riferimento all'API REST di Power BI.
Disabilitare la sincronizzazione automatica delle repliche
###
# Disable automatic scale-out replica sync
###
Login-PowerBI | Out-Null
$workspaceId = '<enter workspaceId>'
$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
| Where{$_.Name -match "<enter semantic model name>"} `
| Select-Object -ExpandProperty Id -First 1 `
| ForEach-Object {$_.Guid}
Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId" `
-Method Patch -Body '{ "queryScaleOutSettings": { "autoSyncReadOnlyReplicas": false }}'
Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId" -Method Get `
| ConvertFrom-Json | Select-Object -ExpandProperty queryScaleOutSettings `
| ForEach {
if($_.autoSyncReadOnlyReplicas -eq $false)
{
Write-Host "Success! Automatic replica synchronization has been disabled."
} else
{
Write-Host "Something went wrong! Automatic replica synchronization is still enabled." -ForegroundColor Red
}
}
Eseguire una sincronizzazione manuale della replica (script)
###
# Perform a manual replica sync
###
Login-PowerBI | Out-Null
$workspaceId = '<enter workspaceId>'
$datasetId = Get-PowerBIDataset -WorkspaceId $workspaceId `
| Where{$_.Name -match "<enter semantic model name>"} `
| Select-Object -ExpandProperty Id -First 1 `
| ForEach-Object {$_.Guid}
$response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId/queryScaleOut/sync" -Method Post -Body "" | ConvertFrom-Json
Write-Host 'Synchronizing the scale-out replicas...' -NoNewLine
while ($response.commitVersion -ne $response.minActiveReadVersion)
{
Write-Host '.' -NoNewLine
Start-Sleep -Seconds 10
$response = Invoke-PowerBIRestMethod -Url "groups/$workspaceId/datasets/$datasetId/queryScaleOut/syncStatus" -Method Get | ConvertFrom-Json
}
Write-Host 'Completed'
$response
Per altre informazioni, vedere Set di dati - Attivare la sincronizzazione con scale out delle query nel gruppo nella guida di riferimento all'API REST di Power BI.
Eseguire una sincronizzazione manuale della replica (riga di comando)
Seguire questa procedura per sincronizzare le repliche usando Windows PowerShell:
Aprire PowerShell e accedere a Power BI eseguendo questo comando:
Login-PowerBI
Ottenere gli ID dell'area di lavoro eseguendo il comando seguente. Sostituire
<WorkspaceName>
con il nome dell'area di lavoro.Get-PowerBIWorkspace -Name "<WorkspaceName>" # Replace <WorkspaceName> with the name of your workspace
Ottenere l'ID del modello semantico eseguendo il comando seguente. Sostituire
<WorkspaceId>
con l'ID dell'area di lavoro.Get-PowerBIDataset -WorkspaceId "<WorkspaceId>" # Replace <WorkspaceId> with the Id of your workspace
Controllare lo stato di sincronizzazione del modello semantico usando il comando seguente. Sostituire i valori di
<WorkspaceId>
e<DatasetId>
di conseguenza.Invoke-PowerBIRestMethod -Url 'groups/<WorkspaceId>/datasets/<DatasetId>/queryScaleOut/syncStatus' -Method Get | ConvertFrom-Json | Format-List # Replace <WorkspaceId> with the Id of your workspace and <DatasetId> with the Id of your semantic model
Nell'output, i valori di
minActiveReadVersion
eminActiveReadTimestamp
fanno riferimento alla replica di sola lettura. I valoricommitVersion
ecommitTimestamp
fanno riferimento al modello semantico di lettura/scrittura. Una differenza tra di esse indica che la replica di sola lettura rappresenta una versione precedente del modello semantico.Sincronizzare il modello semantico di lettura/scrittura e le repliche di sola lettura usando il comando seguente. Sostituire i valori di
<WorkspaceId>
e<DatasetId>
di conseguenza.Invoke-PowerBIRestMethod -Url 'groups/<WorkspaceId>/datasets/<DatasetId>/queryScaleOut/sync' -Method Post -Body "" | ConvertFrom-Json | Format-List # Replace <WorkspaceId> with the Id of your workspace and <DatasetId> with the Id of your semantic model
Le informazioni sullo stato di sincronizzazione nell'output indicano che il modello semantico di lettura/scrittura e le repliche di sola lettura non sono sincronizzate, il che è previsto perché è stata appena attivata la sincronizzazione.
Per verificare che la sincronizzazione sia stata completata, eseguire di nuovo il comando
syncStatus
del passaggio 4. Potrebbe essere necessario eseguire il comando alcune volte a seconda del periodo di tempo necessario per sincronizzare le copie del modello semantico. Al termine della sincronizzazione, controllare i valori disyncStartTime
esyncEndTime
per verificare il tempo impiegato dalla sincronizzazione.
Per altre informazioni, vedere Set di dati - Attivare la sincronizzazione con scale out delle query nel gruppo nella guida di riferimento all'API REST di Power BI.