如何从Azure获取存储账户已用容量报告并对接Power BI实现自动月度报表
批量获取Azure存储账户容量并对接PowerBI自动化报表方案
1. 批量获取存储账户已用容量(解决单位识别问题)
直接用PowerShell或Azure CLI批量拉取数据并转换为纯数值,避免Excel/PowerBI识别单位字符串的问题。以下是PowerShell脚本示例:
# 登录Azure(自动化场景用服务主体,见下文说明) Connect-AzAccount # 遍历所有订阅 $subscriptions = Get-AzSubscription $results = @() foreach ($sub in $subscriptions) { Set-AzContext -Subscription $sub.Id | Out-Null # 获取当前订阅下所有存储账户 $storageAccounts = Get-AzStorageAccount foreach ($sa in $storageAccounts) { # 拉取近30天的日粒度已用容量数据,取最新值 $metrics = Get-AzMetric -ResourceId $sa.Id ` -MetricName "UsedCapacity" ` -TimeGrain 1d ` -StartTime (Get-Date).AddDays(-30) ` -EndTime (Get-Date) $latestData = $metrics.Data | Sort-Object Timestamp -Descending | Select-Object -First 1 # 转换单位:将原始字节数转为TiB(保留2位小数) $usedTiB = [math]::Round($latestData.Average / 1024 / 1024 / 1024 / 1024, 2) $results += [PSCustomObject]@{ 订阅名称 = $sub.Name 存储账户名 = $sa.StorageAccountName 资源组 = $sa.ResourceGroupName 已用容量(TiB) = $usedTiB 原始容量(字节) = $latestData.Average 报表日期 = Get-Date -Format "yyyy-MM-dd" } } } # 导出为纯数值CSV(无单位字符串) $results | Export-Csv -Path "StorageCapacityReport.csv" -NoTypeInformation -Encoding UTF8
自动化执行配置:
如果要每月自动生成,用Azure Automation Runbook:
- 创建自动化账户,导入Az.Storage和Az.Monitor模块
- 创建服务主体,赋予其Monitor Reader和Storage Account Reader权限
- 在Runbook中替换登录命令为服务主体登录:
$appId = "你的服务主体ID" $tenantId = "租户ID" $thumbprint = "证书指纹" Connect-AzAccount -ServicePrincipal -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint $thumbprint - 设置Runbook的每月触发计划,将导出的CSV上传到Azure Blob存储
2. 对接PowerBI生成自动化报表
方式一:从CSV文件导入(适合已导出数据)
- 在PowerBI Desktop中选择「获取数据」→「文本/CSV」,导入生成的CSV文件
- 直接使用数值列创建可视化报表(比如柱状图、表格)
- 发布报表到PowerBI Service,设置数据集刷新计划:
- 如果CSV存在本地:安装本地数据网关,配置网关连接
- 如果CSV在Azure Blob:直接连接Blob存储,使用托管身份或存储密钥验证,设置每月刷新
方式二:直接拉取Azure Monitor数据(更高效)
跳过导出步骤,PowerBI直接对接Azure指标:
- PowerBI Desktop中选择「获取数据」→「Azure」→「Azure Monitor」
- 选择订阅、资源类型「存储账户」,勾选「UsedCapacity」指标,设置时间范围
- 数据加载后直接生成报表,发布到PowerBI Service后配置刷新计划(需确保PowerBI服务有权限访问Azure资源)
内容的提问来源于stack exchange,提问作者Bansari Maharaja
相关产品推荐
相关产品推荐

