Sincronización de réplicas de escalado horizontal
En este artículo se describe cómo sincronizar réplicas de escalado horizontal de modelos semánticos mediante PowerShell en la línea de comandos o mediante script.
Cuando trabaja con el modelo semántico de lectura y escritura principal, y los usuarios del modelo semántico usan las réplicas de solo lectura, puede realizar actualizaciones y actualizaciones de metadatos del modelo semántico sin afectarlos. Sin embargo, los cambios en el modelo semántico y las actualizaciones tienen lugar en el modelo semántico principal. Para copiar los cambios en las réplicas de solo lectura, debe sincronizarse con el modelo semántico de lectura y escritura.
De forma predeterminada, el parámetro autoSyncReadOnlyReplicas
se establece en true
: Power BI sincroniza automáticamente las réplicas. Puede deshabilitar la sincronización automática estableciendo autoSyncReadOnlyReplicas
en false
. Sin embargo, puede optar por sincronizarla manualmente mediante las API de REST syncStatus
y sync
.
Para comprobar el estado de sincronización de las réplicas, use la API de REST SyncStatus
. En este artículo, se describen los comandos de PowerShell para usar esta API.
Comprobación del estado de las réplicas
###
# 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
}
Si la API de estado de sincronización devuelve una respuesta vacía o si scaleOutStatus está establecida en "No disponible", intente cargar la réplica de lectura y escritura del modelo semántico o realice una actualización en el modelo para obtener el estado de sincronización más reciente.
Para más información, consulte Conjuntos de datos: obtener el estado de sincronización de la consulta de escalado horizontal en un grupo en la referencia de la API de REST de Power BI.
Deshabilitación de la sincronización 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
}
}
Realizar una sincronización manual de réplicas (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 más información, consulte Conjuntos de datos: desencadenar la sincronización de la consulta de escalado horizontal en un grupo en la referencia de la API de REST de Power BI.
Realizar una sincronización manual de réplicas (línea de comandos)
Siga estos pasos para sincronizar las réplicas al usar Windows PowerShell:
Abra PowerShell e inicie sesión en Power BI ejecutando este comando:
Login-PowerBI
Para obtener los identificador del área de trabajo, ejecute el comando siguiente. Reemplace
<WorkspaceName>
por el nombre del área de trabajo.Get-PowerBIWorkspace -Name "<WorkspaceName>" # Replace <WorkspaceName> with the name of your workspace
Para obtener el identificador de modelo semántico, ejecute el comando siguiente. Reemplace
<WorkspaceId>
por el identificador del área de trabajo.Get-PowerBIDataset -WorkspaceId "<WorkspaceId>" # Replace <WorkspaceId> with the Id of your workspace
Compruebe el estado de sincronización del modelo semántico mediante el comando siguiente. Reemplace los valores de
<WorkspaceId>
y<DatasetId>
en consecuencia.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
En la salida, los valores
minActiveReadVersion
yminActiveReadTimestamp
hacen referencia a la réplica de solo lectura. Los valorescommitVersion
ycommitTimestamp
hacen referencia al modelo semántico de lectura y escritura. Una diferencia entre ellos indica que la réplica de solo lectura representa una versión anterior del modelo semántico.Sincronice el modelo semántico de lectura y escritura y las réplicas de solo lectura mediante el siguiente comando. Reemplace los valores de
<WorkspaceId>
y<DatasetId>
en consecuencia.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
La información de estado de sincronización de la salida indica que el modelo semántico y las réplicas de lectura y escritura y solo lectura no están sincronizadas, lo que se espera porque recién acaba de desencadenar la sincronización.
Para comprobar que la sincronización esté completa, vuelva a ejecutar el comando en el
syncStatus
paso 4. Es posible que deba ejecutar el comando varias veces, dependiendo del tiempo necesario para sincronizar las copias del modelo semántico. Una vez completada la sincronización, compruebe los valores desyncStartTime
ysyncEndTime
para ver cuánto tiempo ha tardado la sincronización.
Para más información, consulte Conjuntos de datos: desencadenar la sincronización de la consulta de escalado horizontal en un grupo en la referencia de la API de REST de Power BI.