Azure Python SDK获取使用详情:拉取范围及每日/月度拉取问题
Azure消费数据拉取问题解答
一、能否每日拉取使用详情?
可以每日拉取,但需注意以下细节:
- 数据延迟:Azure使用数据通常存在24-48小时的同步延迟,当日的使用记录无法实时获取。若要拉取前一天的完整数据,建议在次日下午或晚上执行拉取操作。
- 代码调整:需动态设置单日的日期范围,示例代码如下:
from datetime import datetime, timedelta yesterday = datetime.now() - timedelta(days=1) startDate = datetime(yesterday.year, yesterday.month, yesterday.day).isoformat() endDate = startDate # 单日拉取时,起始与结束日期设为同一天 # 修正过滤条件,确保只拉取指定日期范围的数据 filters = f'usageStart ge {startDate} and usageEnd le {endDate}' - 去重处理:可通过记录已拉取日期或
FetchDate字段去重,避免重复数据存入DataFrame。
二、月度拉取何时能获取整月使用详情?
Azure月度账单数据通常在次月5-10日完成最终对账,具体时间取决于计费周期和平台处理进度。若要确保拉取到上月完整数据,建议:
- 在次月10日之后执行拉取操作,此时所有延迟的使用记录、调整项(如退款、折扣)均已同步完成。
- 代码中设置月度日期范围,示例如下:
startDate = datetime(2023, 12, 1).isoformat() endDate = datetime(2023, 12, 31).isoformat() filters = f'usageStart ge {startDate} and usageEnd le {endDate}'
原代码关键修正点
- 过滤条件错误:原代码仅设置
usageEnd le {endDate},会拉取所有截止到该日期的历史数据,需补充usageStart ge {startDate}限定起始范围。 - 字段硬编码问题:
"Start": "2023-01-01"和"End": "2023-01-31"为固定值,应替换为动态日期字符串:"Start": startDate.split('T')[0], "End": endDate.split('T')[0], - 分页处理:若订阅数据量较大,
usage_details.list()会返回分页结果,需添加分页循环避免数据遗漏:usage_details = consumption_client.usage_details.list(scope, filter=filters) while usage_details: for detail in usage_details: # 数据处理逻辑 pass # 获取下一页数据 usage_details = consumption_client.usage_details.list_next(usage_details)
内容的提问来源于stack exchange,提问作者Enigma
相关产品推荐
相关产品推荐

