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:
Spuštěním tohoto příkazu otevřete PowerShell a přihlaste se k Power BI:
Login-PowerBI
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
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
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í hodnotyminActiveReadTimestamp
na repliku jen pro čtení. HodnotycommitVersion
acommitTimestamp
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.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.
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 hodnotysyncStartTime
asyncEndTime
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.