Уменьшить параллелизм при обработке табличной модели SSAS с использованием TOM

Я обрабатываю наши табличные модели (уровень совместимости 1200), используя Табличную объектную модель и скрипт powershell. Сценарий использует некоторые метаданные, чтобы определить, какие разделы должны быть обработаны для данной таблицы, а затем выполняет process full на этих разделах. В некоторых случаях скрипт будет делать Process Full на всю таблицу (например, после первого развертывания модели на сервере)

Когда сценарий обрабатывает всю таблицу, я хочу иметь возможность контролировать количество одновременных запросов к источнику данных в любой момент времени, поэтому в своем сценарии я создаю новый экземпляр Microsoft.AnalysisServices.Tabular.SaveOptions и установите для свойства MaxParallelism значение от 1 до 10. Затем я сохраняю изменения в модели на сервере и жду завершения обработки.

$serverTable.RequestRefresh([Microsoft.AnalysisServices.Tabular.RefreshType]::Full)
$db.Update( "ExpandFull")
$saveOptions = New-Object Microsoft.AnalysisServices.Tabular.SaveOptions
$saveOptions.MaxParallelism = $maxParallelism   
$result = $db.Model.SaveChanges($saveOptions)

Если я наблюдаю за сервером SQL, к которому подключается таблица, я вижу несколько запросов (в большинстве случаев 8) из своего ящика SSAS независимо от того, на что я установил MaxParallelism. Читая документацию по этому свойству, это значение не гарантирует параллелизма, поскольку сервер может применять другие ограничения. Я не вижу никаких свойств сервера, которые упоминают параллелизм. Каковы другие ограничения / почему это свойство не влияет на количество запросов, выполняемых одновременно?

1 ответ

Сценарий вызывает методы в неправильном порядке, поэтому $maxParallelism значение не устанавливается на сервере до окончания обработки!

--Call the SaveChanges method with the SaveOptions before you RequestRefresh
$saveOptions = New-Object Microsoft.AnalysisServices.Tabular.SaveOptions
$saveOptions.MaxParallelism = $maxParallelism  
$result = $db.Model.SaveChanges($saveOptions)
$db.Update( "ExpandFull")
$serverTable.RequestRefresh([Microsoft.AnalysisServices.Tabular.RefreshType]::Full)

Тестирование это с разными значениями для $maxParallelism Я вижу, что теперь SSAS запускает то же количество запросов, что и значение, которое я передал. (Максимум до 8)

Другие вопросы по тегам