Automatizando Start/Stop Power BI Embedded

Ezequiel Santos
13/06/2021

O que é o Power BI Embedded

O Power BI Embedded forneçe, de forma rápida e fácil, relatórios, análises e dashboards voltados para o cliente nos seus próprios aplicativos ao usar e marcar o Power BI como seu, assim reduzindo recursos do desenvolvedor ao automatizar o gerenciamento e a implantação de análises, enquanto obtém controle total dos recursos e das análises inteligentes do Power BI.

  • Praticidade

O desenvolvedor não necessita criar nenhuma linha de codigo para gerar os relatórios e telas ou filtrar e cruzar dados.

  • Segurança

O Power BI Embeded permite gerenciamento de segurança a nível de linha, onde é possivel restringir o acesso do usuário aos dados dentro de painéis, blocos, relatórios e conjuntos de dados em que usuários diferentes podem trabalhar com os mesmos artefatos ao mesmo tempo que veem dados diferentes.

  • Preço

Na data desse artigo o modelo de cobrança para o Power BI Embedded é mensal ou por hora.

pbi pricing0 pbi pricing1

O processo

Suponhamos que temos uma solução onde utilizamos o Power BI e o período de utilização é apenas o horário comercial. Verificado que entre as 23:00 e 07:00 não há acesso ao sistema. Nesse caso temos um periodo ocioso de 8h/dia onde podemos pausar o recurso.
Para isso precisaremos criar uma Automation Account, instalar os modulos para conectar ao Azure e executar os cmdlets específicos, importar o script powershell e criar o schedule de execução.

1. Criando a Automation Account

  • Clique em "Criar recurso" e em seguida procure por "Automation"

create automation

  • Insira o nome do recurso, grupo de recursos e subscription e crie o recurso.

create automation1

2. Instalando os modulos Az

  • Com o recurso criado iremos instalar os modulos necessários para executar o script powershell.

install modules

  • Clique em "Navegar para a Galeria"
  • Será necessário instalar 2 modules: Az.Accounts e Az.PowerBIEmbedded

install modules1

  • Clique em "Importar"

install modules2 install modules4

  • Aguarte até que os modulos estejam "Disponíveis"

install modules5

3. Criando o script powershell

  • Em "Processos de automação" Clique em "Runbooks"

create script1 1

  • E em seguida "Criar um runbook"

create script1 2

  • Adicione um nome ao arquivo, selecione a linguagem do script e clique em "Criar"

create script1 3

  • Copie o código abaixo e insira no runbook criado.
Param(
 [Parameter(Mandatory=$true)] 
 [string]$PBIName,
 [Parameter(Mandatory=$true)] 
 [string]$PBIRg,

 [Parameter(Mandatory=$true,
 HelpMessage="Enter 'Start' or 'Stop' action.")]
 [ValidateSet("Start", "Stop")]
 [string]$Action
)
 
# Authenticate with your Automation Account
Write-Output "Connecting to Azure..."
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID `
-ApplicationID $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
 
# Startup PBI
IF ($Action -eq "Start") {
    Write-Output "Starting the Power BI $PBIName"
    Resume-AzPowerBIEmbeddedCapacity -Name $PBIName -ResourceGroupName $PBIRg -PassThru
}
 
# Pause PBI
IF ($Action -eq "Stop") {
    Write-Output "Ending the Power BI $PBIName"
    Suspend-AzPowerBIEmbeddedCapacity -Name $PBIName -ResourceGroupName $PBIRg -PassThru
}
  • E publique nosso runbook.

create script1 5


Explicando o codigo

Solicitamos 3 parametros:

  • Nome do recurso do Power BI
  • Nome do grupo de recursos que está o Power BI
  • Ação que o runbook irá executar

Em seguida realizamos a autenticação no azure para conseguimos executar comantos Powershel na assinatura, por ultimo verificamos a ação solicitada e executamos o cmdlet powershell referente.


4.Criação do agendamento

  • Clique em "Link para a agenda"

create schedule1 1

  • Clique em "Vincule seu runbook com uma agenda"

create schedule1 2
create schedule1 3

  • Preencha as informações, indicando Nome do agendamento, horário e recorrencia e clique em "Criar".

create schedule1 4 create schedule1 5

  • Em seguida adicionaremos os parametros solicitados pelo runbook

create schedule1 7

  • Com todas as informações preenchidas vamos criar o agendamento.

create schedule1 8

  • Repita o mesmo processo alterando a ação para "Stop" e com isso teremos nosso agendamento completo

create schedule1 9

Com isso atingimos a missão de um dos pilares da nuvem -pague o que usar :)