使用导出功能定期检索大型成本数据集
本文帮助你使用成本管理中的导出功能定期导出大量数据。 建议通过导出的方式来检索未聚合的成本数据。 特别是当使用情况文件太大而无法使用成本详细信息 API 可靠地调用和下载时。 导出的数据置于你所选择的 Azure 存储帐户中。 因此,可以将其加载到你自己的系统中,并按需对其进行分析。 若要在 Azure 门户中配置导出,请参阅导出数据。
如果要在不同范围自动执行导出,可以首先了解下一部分的示例 API 请求。 可以使用导出 API 创建自动导出,作为常规环境配置的一部分。 自动导出有助于确保你拥有所需的数据。 扩展 Azure 用途时,可以在自己组织的系统中使用。
在创建第一个导出之前,请考虑你的方案和启用该方案所需的配置选项。 请考虑以下导出选项:
- 定期 - 确定导出作业的运行频率以及何时将文件放入 Azure 存储帐户。 你可以选择“每天”、“每周”和“每月”。 尝试配置定期,使其与组织内部系统使用的数据导入作业匹配。
- 定期间隔 - 确定导出有效期。 文件仅在定期间隔内导出。
- 时间范围 - 确定在给定运行中由导出生成的数据量。 常用选项是 MonthToDate 和 WeekToDate。
- StartDate - 配置何时开始导出计划。 将在 StartDate 上创建一个导出,然后根据周期创建导出。
- 类型 - 导出类型分为以下三种:
- ActualCost - 显示指定时间段内的总使用量和费用,这些总使用量和费用已累积显示在帐单上。
- AmortizedCost - 显示指定时间段内的总使用量和成本,并均摊适用的预留购买成本。
- 用法 - 2020 年 7 月 20 日之前创建的所有导出均为“用法”类型。 将所有计划的导出更新为 ActualCost 或 AmortizedCost。
- 列 - 定义要包含在导出文件中的数据字段。 它们与成本详细信息 API 中可用的字段相对应。
- 分区 - 如果数据集较大,并且希望将其分解为多个文件,请将此选项设置为 true。 这使得数据引入更快、更轻松。 有关分区的详细信息,请参阅大型数据集的文件分区。
请求 URL:PUT https://management.chinacloudapi.cn/{scope}/providers/Microsoft.CostManagement/exports/{exportName}?api-version=2020-06-01
{
"properties": {
"schedule": {
"status": "Active",
"recurrence": "Daily",
"recurrencePeriod": {
"from": "2020-06-01T00:00:00Z",
"to": "2020-10-31T00:00:00Z"
}
},
"format": "Csv",
"deliveryInfo": {
"destination": {
"resourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MYDEVTESTRG/providers/Microsoft.Storage/storageAccounts/{yourStorageAccount} ",
"container": "{yourContainer}",
"rootFolderPath": "{yourDirectory}"
}
},
"definition": {
"type": "ActualCost",
"timeframe": "MonthToDate",
"dataSet": {
"granularity": "Daily",
"configuration": {
"columns": [
"Date",
"MeterId",
"ResourceId",
"ResourceLocation",
"Quantity"
]
}
}
}
}
可以使用成本管理在 Azure 存储帐户中计划以 Blob 形式导出 Azure 使用情况详细信息。 生成的 Blob 大小可能超过数 GB。 成本管理团队已与 Azure 存储团队协作测试了大型 Azure 存储 Blob 的复制。 以下部分说明了这些结果。 将存储 Blob 从一个 Azure 区域复制到另一个 Azure 区域预期会产生类似的结果。
下面是与 DML 配合使用的服务端同步传输的一些特征,这些特征与该传输形式的用法有关:
- DML 可以传输单个 Blob 或目录。 传输目录时,可以使用搜索模式来匹配 Blob 前缀。
- 块 Blob 传输并行发生。 除非传输过程结束,否则所有传输不会停止。 各个 Blob 块以并行方式传输。
- 传输在客户端上以异步方式执行。 可以通过方法回调(可在 TransferContext 对象中定义)定期获取传输状态。
- 传输功能在传输过程中将创建检查点,并公开 TransferCheckpoint 对象。 该对象通过 TransferContext 对象表示最新的检查点。 如果在取消/中止传输之前保存了 TransferCheckpoint,则传输可以从最多七天内的检查点恢复。 传输可以从任何检查点(而不仅仅是最新检查点)恢复。
- 如果在未实施检查点功能的情况下终止再重启传输客户端进程:
- 在完成任何 Blob 传输之前,传输将重启。
- 在完成一些 Blob 之后,只对未完成的 Blob 重启传输。
- 暂停客户端执行会暂停传输。
- 发生暂时性故障时,Blob 传输功能可使客户端独善其身。 例如,发生存储帐户限制一般不会导致传输失败,而只会减慢传输速度。
- 服务端传输使用的 CPU 和内存客户端资源较少,且只会消耗一部分网络带宽和连接。
可以结合 CopyMethod.ServiceSideAsyncCopy 选项调用 TransferManager.CopyDirectoryAsync() 方法。 从客户端角度看,异步传输的工作原理与同步传输机制类似,不过操作时存在以下差异:
- 传输速率要比类似的同步传输慢(通常为 10 MB/s 或更慢)。
- 即使客户端进程终止,传输也仍会继续。
- 尽管支持检查点,但使用 TransferCheckpoint 恢复传输并不会在检查点时间进行恢复,而是从当前传输状态恢复。
Azure Blob 存储凭借其服务端同步传输功能支持较高的全局传输速率。 在 .NET 应用程序中使用该功能的方法就是直截了当地使用数据移动库。 成本管理导出能够在一小时内,将数百 GB 的数据可靠地复制到位于任何位置的存储帐户。
- 参阅 Azure 存储数据移动库源。
- 使用数据移动库传输数据。
- 参阅 AzureDmlBackup 示例应用程序源代码示例。
- 参阅使用 Azure Blob 存储实现高吞吐量。