Sdílet prostřednictvím


Synchronizace replik se škálováním na více instancí

Tento článek popisuje, jak synchronizovat sémantické repliky modelu se škálováním na více instancí pomocí PowerShellu na příkazovém řádku nebo pomocí skriptu.

Když pracujete s primárním sémantickým modelem pro čtení i zápis a uživatelé sémantických modelů používají repliky jen pro čtení, můžete provádět aktualizace a aktualizace sémantických modelů, aniž by to mělo vliv na ně. Změny modelu sémantického modelu a aktualizace se však provádí v primárním sémantickém modelu. Pokud chcete zkopírovat změny replik jen pro čtení, musí se synchronizovat s sémantickým modelem pro čtení i zápis.

Ve výchozím nastavení autoSyncReadOnlyReplicas je parametr nastavený na true – Power BI synchronizuje repliky automaticky. Automatickou synchronizaci můžete zakázat nastavením autoSyncReadOnlyReplicas na false. Synchronizaci ale můžete provést ručně pomocí syncStatus rozhraní REST API.sync

Pokud chcete zkontrolovat stav synchronizace replik, použijte SyncStatus rozhraní REST API. Tento článek popisuje příkazy PowerShellu pro použití tohoto rozhraní API.

Kontrola stavu synchronizace repliky

###
# 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
}

Pokud rozhraní API stavu synchronizace vrátí prázdnou odpověď nebo pokud je parametr scaleOutStatus nastavený na Nedostupný, zkuste načíst repliku sémantického modelu pro čtení a zápis nebo provést aktualizaci modelu, abyste získali nejnovější stav synchronizace.

Další informace najdete v tématu Datové sady – Získání stavu synchronizace horizontálního navýšení kapacity dotazů ve skupině v referenčních informacích k rozhraní REST API Power BI.

Zakázání automatické synchronizace replik

###
# 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
        }
     }

Provedení ruční synchronizace repliky (skript)

###
# 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

Další informace najdete v tématu Datové sady – Aktivace synchronizace horizontálního navýšení kapacity dotazů ve skupině v referenčních informacích k rozhraní REST API Power BI.

Provedení ruční synchronizace repliky (příkazový řádek)

Pokud chcete synchronizovat repliky pomocí Windows PowerShellu, postupujte takto:

  1. Spuštěním tohoto příkazu otevřete PowerShell a přihlaste se k Power BI:

    Login-PowerBI
    
  2. Id pracovního prostoru získáte spuštěním následujícího příkazu. Nahraďte <WorkspaceName> názvem pracovního prostoru.

    Get-PowerBIWorkspace -Name "<WorkspaceName>"  # Replace <WorkspaceName> with the name of your workspace
    
  3. Id sémantického modelu získáte spuštěním následujícího příkazu. Nahraďte <WorkspaceId> ID pracovního prostoru.

    Get-PowerBIDataset -WorkspaceId "<WorkspaceId>"  # Replace <WorkspaceId> with the Id of your workspace
    
  4. Pomocí následujícího příkazu zkontrolujte stav synchronizace sémantického modelu. Nahraďte hodnoty <WorkspaceId> a <DatasetId> odpovídajícím způsobem.

    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
    

    Ve výstupu minActiveReadVersion odkazují hodnoty minActiveReadTimestamp na repliku jen pro čtení. Hodnoty commitVersion a commitTimestamp hodnoty odkazují na sémantický model pro čtení i zápis. Rozdíl mezi nimi znamená, že replika jen pro čtení představuje starší verzi sémantického modelu.

  5. Pomocí následujícího příkazu synchronizujte sémantický model pro čtení a repliky jen pro čtení. Nahraďte hodnoty <WorkspaceId> a <DatasetId> odpovídajícím způsobem.

    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
    

    Informace o stavu synchronizace ve výstupu indikují sémantický model pro čtení i zápis a repliky jen pro čtení se nesynchronizují, což se očekává, protože jste synchronizaci právě aktivovali.

  6. Pokud chcete ověřit, že je synchronizace dokončená, spusťte syncStatus příkaz v kroku 4 znovu. V závislosti na době potřebné k synchronizaci kopií sémantického modelu možná budete muset příkaz spustit několikrát. Po dokončení synchronizace zkontrolujte hodnoty syncStartTime a syncEndTime zjistěte, jak dlouho synchronizace trvala.

Další informace najdete v tématu Datové sady – Aktivace synchronizace horizontálního navýšení kapacity dotazů ve skupině v referenčních informacích k rozhraní REST API Power BI.