Compartir a través de


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/dataset/$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:

  1. Abra PowerShell e inicie sesión en Power BI ejecutando este comando:

    Login-PowerBI
    
  2. 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
    
  3. 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
    
  4. 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 y minActiveReadTimestamp hacen referencia a la réplica de solo lectura. Los valores commitVersion y commitTimestamp 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.

  5. 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.

  6. Para comprobar que la sincronización esté completa, vuelva a ejecutar el comando en el syncStatuspaso 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 de syncStartTime y syncEndTime 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.