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

如何在Bing Ads API中获取CSV格式的字符串或流

直接将Bing Ads报表CSV下载到内存处理的实现方案

当然可以!完全不需要绕文件系统这一步,直接把报表数据下载到内存流中处理就行——这样既能提升流程效率,还能避免文件IO的额外开销,也不用操心临时文件的创建、清理问题。

核心思路

Bing Ads SDK的ReportingServiceManager其实提供了DownloadAsync方法(区别于你现在用的DownloadFileAsync),这个方法会直接返回承载CSV数据的Stream对象,我们可以基于这个内存流直接用CsvHelper解析数据,全程不需要落地到磁盘。

改写后的代码示例

// 先定义CSV配置(和你原来的一致)
var csvConfig = new CsvHelper.Configuration.CsvConfiguration() 
{ 
    Delimiter = ",", 
    HasHeaderRecord = true, 
    Quote = '"' 
};

// 直接下载到内存流,跳过文件系统
using (var reportStream = await manager.DownloadAsync(new ReportingDownloadParameters() 
{ 
    ReportRequest = request,
    // 这里不再需要指定ResultFileDirectory和ResultFileName参数
}))
using (var textReader = new StreamReader(reportStream))
using (var csvReader = new CsvHelper.CsvReader(textReader, csvConfig))
{
    // 更简洁的方式:直接用GetRecords批量映射实体,替代手动循环Read
    var returnList = csvReader.GetRecords<BingDailyCampaignPerformance>().ToList();
}

额外说明

  • 效率提升:省去了磁盘写入和读取的步骤,对于中小规模的报表,响应速度会有明显提升;
  • 内存考量:如果你的报表数据量极大(比如百万级行),内存流可能会占用较多内存,这种情况可以考虑分块读取,但一般仪表盘场景下的数据量不会达到这个量级;
  • SDK版本:确保你使用的是较新版本的Microsoft.BingAds.SDK,DownloadAsync方法在新版本中才会提供,如果是旧版本建议升级NuGet包。

内容的提问来源于stack exchange,提问作者Menno van den Heuvel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:39:05