You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:45:23