Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается синхронизация масштабируемых реплик семантической модели с помощью PowerShell в командной строке или по скрипту.
При работе с основной семантической моделью для операций чтения и записи, пользователи семантической модели используют реплики с доступом только для чтения. Вы можете выполнять обновления метаданных и семантической модели, не затрагивая их. Однако изменения в семантической модели и обновления происходят в основной семантической модели. Чтобы скопировать изменения в реплики только для чтения, его необходимо синхронизировать с семантической моделью чтения и записи.
По умолчанию для параметра autoSyncReadOnlyReplicas задано значение true — Power BI автоматически синхронизирует реплики. Вы можете отключить автоматическую синхронизацию, установив autoSyncReadOnlyReplicas в false. Однако вы можете синхронизировать вручную, используя syncStatus и sync REST API.
Чтобы проверить состояние синхронизации реплик, используйте SyncStatus REST API. В этой статье описываются команды PowerShell для использования этого API.
Проверка состояния синхронизации реплики
###
# 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
}
Если API состояния синхронизации возвращает пустой ответ или если для scaleOutStatus задано значение "Недоступно", попробуйте загрузить реплику записи семантической модели или обновить модель, чтобы получить последнее состояние синхронизации.
Дополнительные сведения см. в статье " Наборы данных— получение состояния синхронизации масштабирования запросов в группе" в справочнике по REST API Power BI.
Отключение автоматической синхронизации реплики
###
# 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
}
}
Синхронизация реплик вручную (скрипт)
###
# 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
Дополнительные сведения см. в разделе "Наборы данных — запуск синхронизации масштабирования запросов в группе" в справочнике по REST API Power BI.
Синхронизация реплик вручную (командная строка)
Выполните следующие действия, чтобы синхронизировать реплики с помощью Windows PowerShell:
Откройте PowerShell и войдите в Power BI, выполнив следующую команду:
Login-PowerBIПолучите идентификаторы рабочей области, выполнив приведенную ниже команду. Замените
<WorkspaceName>именем своей рабочей области.Get-PowerBIWorkspace -Name "<WorkspaceName>" # Replace <WorkspaceName> with the name of your workspaceПолучите идентификатор семантической модели, выполнив приведенную ниже команду. Замените
<WorkspaceId>идентификатором рабочей области.Get-PowerBIDataset -WorkspaceId "<WorkspaceId>" # Replace <WorkspaceId> with the Id of your workspaceПроверьте состояние синхронизации семантической модели с помощью приведенной ниже команды. Замените значения
<WorkspaceId>и<DatasetId>соответствующим образом.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В выходных данных значения
minActiveReadVersionиminActiveReadTimestampотносятся к реплике только для чтения.commitVersionИcommitTimestampзначения относятся к семантической модели чтения и записи. Разница между ними указывает, что реплика только для чтения представляет старую версию семантической модели.Синхронизируйте семантическую модель чтения и записи и реплики только для чтения, используя следующую команду. Замените значения
<WorkspaceId>и<DatasetId>соответствующим образом.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Сведения о состоянии синхронизации в выходных данных указывают на то, что семантическая модель для операций чтения и записи и реплики, доступные только для чтения, не синхронизированы, что ожидаемо, поскольку вы только что инициировали синхронизацию.
Чтобы убедиться, что синхронизация завершена, выполните
syncStatusкоманду на шаге 4 еще раз. Может потребоваться выполнить команду несколько раз в зависимости от времени, необходимого для синхронизации копий семантической модели. По завершении синхронизации проверьте значенияsyncStartTimeиsyncEndTimeузнайте, сколько времени занимает синхронизация.
Дополнительные сведения см. в разделе "Наборы данных — запуск синхронизации масштабирования запросов в группе" в справочнике по REST API Power BI.