Power BI – Saiba tudo que está publicado no seu Ambiente
Uma das coisas necessárias em muitos ambientes de Power BI é analisar o crescimento do ambiente e entender aquilo que está sendo publicado e disponível pelos seus usuários.
A Microsoft tem uma série de API`s que possibilitam capturar dados do ambiente desde um scan completo dos elementos publicados (nosso caso de hoje), até o acesso de reports, publicações e etc por usuário.
No nosso script de hoje eu vou mostrar pra vocês como com poucas linhas de código é possível gerar dados relevantes pra que você possa acompanhar o crescimento do seu ambiente em relação ao numero de elementos publicados.
Temos hoje na consultoria uma série de scripts para capturar diferentes informações do seu ambiente de Power BI você pode saber mais entrando em contato em comercial@powertuning.com.br ou pelo nosso site no fale conoscoPower Tuning – Liberte o poder dos seus dados!
O trecho de código abaixo foi criado utilizando Power Shell e o Modulo MicrosoftPowerBIMgmt que já tem vários pacotes prontos para consultas no Power BI e pela facilidade pois qualquer máquina windows já possui o PowerShell por padrão instalado.
É importante alterar no inicio do codigo o local de retorno dos arquivos. Serão criados 5 arquivos diferentes um pra cada elemento (Workspaces, Datasets, Reports, Dashboards e Dataflows).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
###### Necessário Pacote MicrosoftPowerBIMgmt ###### Ao Logar tenha certeza de utilizar um usuário com permissão de Administrador ### Informar abaixo onde deseja salvar o arquivo de retorno $Pasta = "c:\temp\" Connect-PowerBIServiceAccount $Workspaces = Invoke-PowerBIRestMethod -Url 'https://api.powerbi.com/v1.0/myorg/admin/groups?$filter=state eq ''Active''&$top=1000' -Method Get | ConvertFrom-Json | Select value $tamanho = 30 $linha = 0 $DadosWorkspaces = @() while ($linha -lt $Workspaces.value.Count) { $chunk = $Workspaces.value[$linha..($linha + $tamanho - 1)] $Objeto = [PSCustomObject]@{ workspaces = $chunk.id } $Body = $Objeto | ConvertTo-Json $API = 'https://api.powerbi.com/v1.0/myorg/admin/workspaces/getInfo?lineage=False&datasourceDetails=False&datasetSchema=False&datasetExpressions=False' $Retorno = Invoke-PowerBIRestMethod -Url $API -Body $Body -Method Post | ConvertFrom-Json Write-Host "Verificando Status do Scan" $Status = Invoke-PowerBIRestMethod -Url "admin/workspaces/scanStatus/$($Retorno[0].id)" -Method Get | ConvertFrom-Json while ($Status.status -ne 'Succeeded') { $Status = Invoke-PowerBIRestMethod -Url "admin/workspaces/scanStatus/$($Retorno[0].id)" -Method Get | ConvertFrom-Json Start-Sleep -Seconds 5 } $Info = Invoke-PowerBIRestMethod -Url "admin/workspaces/scanResult/$($Retorno[0].id)" -Method Get | ConvertFrom-Json $DadosWorkspaces += $Info.workspaces Write-host $linha $linha += $tamanho } $Reports = $DadosWorkspaces | Select-Object -Property @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty reports $DataSets = $DadosWorkspaces | Select-Object @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty datasets $DataFlows = $DadosWorkspaces | Select-Object @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty dataflows $DataMarts = $DadosWorkspaces | Select-Object @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty datamarts $Workspaces = $DadosWorkspaces | Select-Object id, name, type, state, isOnDedicatedCapacity $DashBoards = $DadosWorkspaces | Select-Object @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty dashboards Out-File -FilePath $($Pasta + 'Reports.json') -InputObject ($Reports | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force Out-File -FilePath $($Pasta + 'DataSets.Json') -InputObject ($DataSets | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force Out-File -FilePath $($Pasta + 'DataFlows.Json') -InputObject ($DataFlows | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force Out-File -FilePath $($Pasta + 'DataMarts.Json') -InputObject ($DataMarts | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force Out-File -FilePath $($Pasta + 'Workspaces.Json') -InputObject ($Workspaces | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force Out-File -FilePath $($Pasta + 'DashBoards.Json') -InputObject ($DashBoards | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force |