Sincronizar réplicas de expansão
Este artigo descreve como sincronizar réplicas de expansão de um modelo semântico usando o PowerShell na linha de comando ou por script.
Quando você estiver trabalhando com o modelo semântico primário de leitura-gravação e os usuários do modelo semântico estiverem usando as réplicas somente leitura, você poderá executar atualizações e atualizações de metadados do modelo semântico sem afetá-los. No entanto, as alterações no modelo semântico e as atualizações ocorrem no modelo semântico primário. Para copiar as alterações para as réplicas somente leitura, ele deve ser sincronizado com o modelo semântico de leitura-gravação.
Por padrão, o parâmetro é definido como true
- o autoSyncReadOnlyReplicas
Power BI sincroniza as réplicas automaticamente. Você pode desativar a sincronização automática definindo autoSyncReadOnlyReplicas
como false
. No entanto, você pode optar por sincronizar manualmente usando syncStatus
e sync
APIs REST.
Para verificar o status de sincronização de suas réplicas, use a SyncStatus
API REST. Este artigo descreve os comandos do PowerShell para usar essa API.
Verificar o status de sincronização da réplica
###
# 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 a API de status de sincronização retornar uma resposta vazia ou se scaleOutStatus estiver definido como "Indisponível", tente carregar a réplica de leitura-gravação do modelo semântico ou execute uma atualização no modelo para obter o status de sincronização mais recente.
Para saber mais, consulte Datasets - Get Query Scale out Sync Status In Group na referência da API REST do Power BI.
Desativar a sincronização automática de réplicas
###
# 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
}
}
Executar uma sincronização manual de réplica (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
Para saber mais, consulte Datasets - Trigger Query Scale out Sync In Group na referência da API REST do Power BI.
Executar uma sincronização manual de réplica (linha de comando)
Siga estas etapas para sincronizar as réplicas usando o Windows PowerShell:
Abra o PowerShell e faça logon no Power BI executando este comando:
Login-PowerBI
Obtenha as Ids do seu espaço de trabalho executando o comando abaixo. Substitua
<WorkspaceName>
pelo nome do seu espaço de trabalho.Get-PowerBIWorkspace -Name "<WorkspaceName>" # Replace <WorkspaceName> with the name of your workspace
Obtenha o ID do modelo semântico executando o comando abaixo. Substitua
<WorkspaceId>
pelo Id do seu espaço de trabalho.Get-PowerBIDataset -WorkspaceId "<WorkspaceId>" # Replace <WorkspaceId> with the Id of your workspace
Verifique o status de sincronização do seu modelo semântico usando o comando abaixo. Substitua os valores de
<WorkspaceId>
e<DatasetId>
em conformidade.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
Na saída, os
minActiveReadVersion
valores eminActiveReadTimestamp
referem-se à réplica somente leitura. OscommitVersion
valores ecommitTimestamp
referem-se ao modelo semântico de leitura-gravação. Uma diferença entre eles, indica que a réplica somente leitura representa uma versão mais antiga do modelo semântico.Sincronize o modelo semântico de leitura-gravação e as réplicas somente leitura usando o comando a seguir. Substitua os valores de
<WorkspaceId>
e<DatasetId>
em conformidade.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
As informações de status de sincronização na saída indicam que o modelo semântico de leitura-gravação e as réplicas somente leitura estão fora de sincronia, o que é esperado porque você acabou de acionar a sincronização.
Para verificar se a sincronização está concluída, execute o
syncStatus
comando na etapa 4 novamente. Talvez seja necessário executar o comando algumas vezes, dependendo do período de tempo necessário para sincronizar as cópias do modelo semântico. Quando a sincronização estiver concluída, verifique os valores desyncStartTime
esyncEndTime
para ver quanto tempo a sincronização levou.
Para saber mais, consulte Datasets - Trigger Query Scale out Sync In Group na referência da API REST do Power BI.