Hormash / PowerBI

Power Bi scripts

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PowerBI

Power Bi scripts

Puropse: Puropse of this script is to get all refresh times for all workspaces in dedicated capacity. As we know, at the momnet, there is no easy tool to present at what time, what dataset is refreshing and at what time. With this script we can get a list of workspaces, datasets and time when it's set to refresh.

Requirements:

What scrip will give you:

1. List of workspaces on the node
2. List of datasets in a workspaces
3. List of reports in workspace
4. List of refreshes per dataser

Connect to PowerBI

Connect-PowerBIServiceAccount

Capacity

$capacityID = 'abcdefgh-0000-0000-0000-abcdefgh'

List of workspaces on the node

$CapacityWorkspace = Get-PowerBIWorkspace -All -Scope Organization | Where-Object {$_.CapacityId -eq $capacityID} write-Host "Number of workspaces in capacity:" $CapacityWorkspace.Count

List of datasets in a workspaces

$AllDatasets = "" $i=0 foreach($workspace in $CapacityWorkspace) { $i++ Write-Host "Working on Workspace:" $workspace.name " | Count:" $i "from:" $CapacityWorkspace.count $result = Get-PowerBIDataSet -WorkspaceId $workspace.Id foreach($rst in $result) { $line = "" | Select WorkspaceID,WorkspaceName,DatasetId,DatasetName,IsRefreshable,IsOnPremGatewayRequired,ConfiguredBy $line.WorkspaceID = $workspace.Id $line.WorkspaceName = $workspace.Name $line.DatasetId = $rst.Id $line.DatasetName = $rst.Name $line.IsRefreshable = $rst.IsRefreshable $line.IsOnPremGatewayRequired = $rst.IsOnPremGatewayRequired $line.ConfiguredBy = $rst.ConfiguredBy [array]$AllDatasets += $line } }

List of reports in workspace

$AllReports = "" $i=0 foreach($workspace in $CapacityWorkspace) { $i++ Write-Host "Working on Workspace:" $workspace.name " | Count:" $i "from:" $CapacityWorkspace.count $result = Get-PowerBIReport -WorkspaceId $workspace.Id foreach($rst in $result) { $line = "" | Select WorkspaceID,WorkspaceName,DatasetId,ReportId,ReportName $line.WorkspaceID = $workspace.Id $line.WorkspaceName = $workspace.Name $line.ReportId = $rst.id $line.ReportName = $rst.Name $line.DatasetId = $rst.DatasetId [array]$AllReports += $line } }

List of refreshes per dataset

$i=0 $Datasets_WithoutMetrics = $AllDatasets | Where-Object {$_.DatasetName -notlike 'Usage Metrics'} foreach ($dataset in $Datasets_WithoutMetrics) { $i++ Write-Host "Dataset:" $dataset.DatasetName Write-Host "Count:" $i "of" $Datasets_WithoutMetrics.Count $grp = $dataset.WorkspaceID.Guid $dset = $dataset.DatasetId.Guid $uri = "https://api.powerbi.com/v1.0/myorg/groups/$grp/datasets/$dset/refreshSchedule" $Invoke_Result = Invoke-PowerBIRestMethod -Url $uri –Method GET | ConvertFrom-Json | Select days,times $days = ($Invoke_Result | Select days).days $times = ($Invoke_Result | Select times).times

                foreach($day in $days){
                                            Write-Host "Day:" $day
                            foreach ($time in $times){
                                            Write-Host "Time:" $time
                                            $result = "" | Select workspaceName,workspaceID,datasetName,datasetID,RefreshDate,RefreshTime
                                            $result.workspaceName = $dataset.WorkspaceName
                                            $result.WorkspaceID = $dataset.WorkspaceID
                                            $result.DatasetName = $dataset.DatasetName
                                            $result.DatasetID = $dataset.DatasetId
                                            $result.RefreshDate = $day
                                            $result.RefreshTime = $time
                                            $result | Export-Csv refreshes.csv -Append -NoTypeInformation
                                                    }
                                          }
        }

Write-Host "Script is finished"

About

Power Bi scripts


Languages

Language:PowerShell 100.0%