Forum Discussion
Autoscaling Power BI Embedded Gen 2
- 5 years ago
Sadly there is no very good advice or best practices. We thought a lot about how to solve this best. Our Solution are two alert rules on the Power BI Embedded Capacity:
Rule 1: "Whenever the maximum overload (gen2) is greater than or equal to 1000m" and "Whenever the maximum cpu (gen2) is greater than 85%"
Rule 2: "Whenever the maximum cpu (gen2) is lower than 40%"
Depending on the rule which gets activated we fire a PowerShell Runbook with parameter "up" or "down"which scales our embedded instance.
I'm a bit disappointed that a very nice feature like "autoscale" is activated and promoted on Power BI Premium but not Power BI Embedded. - 2 years ago
We had some issues with alert rules: sometimes they didn't resolve (we couldn't figure out why) and therefore didn't fire again.
Sadly our script disappered while we moved to a new repro. I tried to recap it from my mind, please try it in testing enviroment.
# Enable Managed Identity Enable-AzContextAutosave -Scope Process Connect-AzAccount -Identity # Set the resource group and the name of the Power BI Embedded resource $resourceGroupName = "<YourResourceGroupName>" $resourceName = "<YourResourceName>" $maxSKU = "A7" # Read the current SKU of the Power BI Embedded resource $pbiResource = Get-AzResource -ResourceGroupName $resourceGroupName -ResourceName $resourceName # Extract the current SKU and increment it by 1 if it's below the maximum allowed SKU $currentSku = $pbiResource.Sku.Name $skuNumber = [regex]::Match($currentSku, "\d+").Value $newSkuNumber = [int]$skuNumber + 1 $maxSkuNumber = [int][regex]::Match($maxSKU, "\d+").Value # Ensure the new SKU does not exceed the maximum SKU if ($newSkuNumber -le $maxSkuNumber) { $newSku = $currentSku -replace "\d+", $newSkuNumber.ToString() # Update the SKU of the Power BI Embedded resource $updatedConfig = @{ "sku" = @{ "name" = $newSku "tier" = "PBIE_Azure" } } Set-AzResource -ResourceGroupName $resourceGroupName -ResourceName $resourceName -ResourceType "Microsoft.PowerBIDedicated/capacities" -Sku $updatedConfig.sku -Force # Output the new SKU Write-Host "Power BI Embedded resource has been updated to SKU $newSku." } else { Write-Host "The current SKU is already at or above the maximum permissible SKU ($maxSKU). No action taken." }Update: I'm sorry, I can't choose "powershell" as language, therefore the script looks like this.
Embedded Gen2 does not provide an out-of-the-box vertical autoscale feature. Instead, customers can configure autoscale using the following methods in conjunction:
Power BI Embedded Azure Resource Manager REST APIs , for example Capacities - Update .
Power BI Embedded Gen2 capacity metrics such as CPU and Overload.
Azure alerts .
This option is cheeper than Premium autoscale (flexible, no 24 hours commitment, cheeper v-core price)
See also Autoscaling in Embedded Gen2