{"id":2012,"date":"2023-04-10T09:02:34","date_gmt":"2023-04-10T12:02:34","guid":{"rendered":"https:\/\/powertuning.com.br\/?p=2012"},"modified":"2023-04-10T09:06:23","modified_gmt":"2023-04-10T12:06:23","slug":"power-bi-saiba-tudo-que-esta-publicado-no-seu-ambiente","status":"publish","type":"post","link":"https:\/\/powertuning.com.br\/blog\/power-bi-saiba-tudo-que-esta-publicado-no-seu-ambiente\/","title":{"rendered":"Power BI  &#8211; Saiba tudo que est\u00e1 publicado no seu Ambiente"},"content":{"rendered":"<p>Uma das coisas necess\u00e1rias em muitos ambientes de Power BI \u00e9 analisar o crescimento do ambiente e entender aquilo que est\u00e1 sendo publicado e dispon\u00edvel pelos seus usu\u00e1rios.<\/p>\n<p>A Microsoft tem uma s\u00e9rie de API`s que possibilitam capturar dados do ambiente desde um scan completo dos elementos publicados (nosso caso de hoje), at\u00e9 o acesso de reports, publica\u00e7\u00f5es e etc por usu\u00e1rio.<\/p>\n<p>No nosso script de hoje eu vou mostrar pra voc\u00eas como com poucas linhas de c\u00f3digo \u00e9 poss\u00edvel gerar dados relevantes pra que voc\u00ea possa acompanhar o crescimento do seu ambiente em rela\u00e7\u00e3o ao numero de elementos publicados.<\/p>\n<p>Temos hoje na consultoria uma s\u00e9rie de scripts para capturar diferentes informa\u00e7\u00f5es do seu ambiente de Power BI voc\u00ea pode saber mais entrando em contato em <a href=\"mailto:comercial@powertuning.com.br\">comercial@powertuning.com.br<\/a> ou pelo nosso site no fale conosco<a href=\"https:\/\/powertuning.com.br\/#contato\">Power Tuning \u2013 Liberte o poder dos seus dados!<\/a><\/p>\n<p>O trecho de c\u00f3digo abaixo foi criado utilizando Power Shell e o Modulo MicrosoftPowerBIMgmt que j\u00e1 tem v\u00e1rios pacotes prontos para consultas no Power BI e pela facilidade pois qualquer m\u00e1quina windows j\u00e1 possui o PowerShell por padr\u00e3o instalado.<\/p>\n<p>\u00c9 importante alterar no inicio do codigo o local de retorno dos arquivos. Ser\u00e3o criados 5 arquivos diferentes um pra cada elemento (Workspaces, Datasets, Reports, Dashboards e Dataflows).<\/p>\n<pre class=\"lang:tsql decode:true\">######  Necess\u00e1rio Pacote MicrosoftPowerBIMgmt\r\n\r\n###### Ao Logar tenha certeza de utilizar um usu\u00e1rio com permiss\u00e3o de Administrador\r\n\r\n### Informar abaixo onde deseja salvar o arquivo de retorno \r\n\r\n$Pasta = \"c:\\temp\\\"\r\n\r\nConnect-PowerBIServiceAccount\r\n\r\n$Workspaces =  Invoke-PowerBIRestMethod -Url 'https:\/\/api.powerbi.com\/v1.0\/myorg\/admin\/groups?$filter=state eq ''Active''&amp;$top=1000' -Method Get | ConvertFrom-Json | Select value\r\n\r\n$tamanho = 30\r\n$linha = 0\r\n\r\n$DadosWorkspaces = @()\r\n\r\nwhile ($linha -lt $Workspaces.value.Count) {\r\n\r\n    $chunk = $Workspaces.value[$linha..($linha + $tamanho - 1)]\r\n\r\n    $Objeto = [PSCustomObject]@{\r\n        workspaces = $chunk.id\r\n    }\r\n    \r\n    $Body = $Objeto | ConvertTo-Json\r\n    \r\n    \r\n    \r\n    $API = 'https:\/\/api.powerbi.com\/v1.0\/myorg\/admin\/workspaces\/getInfo?lineage=False&amp;datasourceDetails=False&amp;datasetSchema=False&amp;datasetExpressions=False'\r\n    \r\n    $Retorno = Invoke-PowerBIRestMethod -Url $API -Body $Body -Method Post | ConvertFrom-Json\r\n    \r\n    Write-Host \"Verificando Status do Scan\"\r\n\r\n    $Status = Invoke-PowerBIRestMethod -Url \"admin\/workspaces\/scanStatus\/$($Retorno[0].id)\" -Method Get | ConvertFrom-Json\r\n\r\n    while ($Status.status -ne 'Succeeded') {\r\n    \r\n        $Status = Invoke-PowerBIRestMethod -Url \"admin\/workspaces\/scanStatus\/$($Retorno[0].id)\" -Method Get | ConvertFrom-Json\r\n    \r\n        Start-Sleep -Seconds 5\r\n    \r\n    }\r\n    \r\n    \r\n    $Info = Invoke-PowerBIRestMethod -Url \"admin\/workspaces\/scanResult\/$($Retorno[0].id)\" -Method Get  | ConvertFrom-Json\r\n\r\n    $DadosWorkspaces += $Info.workspaces\r\n\r\n    Write-host $linha\r\n\r\n    $linha += $tamanho\r\n\r\n}\r\n\r\n\r\n$Reports = $DadosWorkspaces | Select-Object -Property @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty reports\r\n$DataSets = $DadosWorkspaces | Select-Object @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty datasets\r\n$DataFlows = $DadosWorkspaces | Select-Object @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty dataflows\r\n$DataMarts = $DadosWorkspaces | Select-Object @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty datamarts\r\n$Workspaces = $DadosWorkspaces | Select-Object id, name, type, state, isOnDedicatedCapacity\r\n$DashBoards = $DadosWorkspaces | Select-Object @{N='WorkspaceName';E={$_.name}}, @{N='WorkspaceId';E={$_.id}} -ExpandProperty dashboards\r\n\r\n\r\n\r\n\r\n\r\nOut-File -FilePath $($Pasta + 'Reports.json') -InputObject ($Reports | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force\r\nOut-File -FilePath $($Pasta + 'DataSets.Json') -InputObject ($DataSets | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force\r\nOut-File -FilePath $($Pasta + 'DataFlows.Json') -InputObject ($DataFlows | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force\r\nOut-File -FilePath $($Pasta + 'DataMarts.Json') -InputObject ($DataMarts | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force\r\nOut-File -FilePath $($Pasta + 'Workspaces.Json') -InputObject ($Workspaces | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force\r\nOut-File -FilePath $($Pasta + 'DashBoards.Json') -InputObject ($DashBoards | ConvertTo-Json -Depth 10) -Encoding UTF8 -Force<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uma das coisas necess\u00e1rias em muitos ambientes de Power BI \u00e9 analisar o crescimento do ambiente e entender aquilo que est\u00e1 sendo publicado e dispon\u00edvel pelos seus usu\u00e1rios. A Microsoft tem uma s\u00e9rie de API`s que possibilitam capturar dados do ambiente desde um scan completo dos elementos publicados (nosso caso de hoje), at\u00e9 o acesso&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/powertuning.com.br\/blog\/power-bi-saiba-tudo-que-esta-publicado-no-seu-ambiente\/\">Leia mais<\/a><\/p>\n","protected":false},"author":7,"featured_media":2014,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[64,67],"tags":[68,69,27],"class_list":["post-2012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-power-bi","category-powershell","tag-administracao-power-bi","tag-api-power-bi","tag-power-bi"],"jetpack_featured_media_url":"https:\/\/powertuning.com.br\/blog\/wp-content\/uploads\/2023\/04\/transferir.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/2012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2012"}],"version-history":[{"count":1,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/2012\/revisions"}],"predecessor-version":[{"id":2013,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/posts\/2012\/revisions\/2013"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/media\/2014"}],"wp:attachment":[{"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/powertuning.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}