当我对按特定关键字过滤的核心报告 API 进行查询时,它会以块的形式返回数据。我相信它这样做是因为查询使用了一年的延长时间段。这是一个完全的痛苦,因为一些数据total_value
需要求和并且revenue_per_transaction
需要平均。
有没有办法防止这种“分块”?如果没有,克服这个问题的最佳方法是什么?
示例响应:
{keyword="KEYWORD_A", visits="2", total_value="20192.75", revenue_per_transaction="20192.75", transactions="1", day="31", month="05"},
{keyword="KEYWORD_A", visits="1", total_value="5789.8", revenue_per_transaction="2894.9", transactions="2", day="12", month="07"}
total_value
这是我目前对属性求和的解决方案。由于revenue_per_transaction
需要平均,我想我会尝试解决问题的根源,即分块响应。
sum_keys = [:total_value, :revenue_per_transaction]
data.group_by{ |h| h[:keyword] }
.map{ |keyword, related|
tmp = {keyword: keyword}
tmp.merge! Hash[sum_keys.zip Array.new(sum_keys.size, 0)]
related.reduce(tmp) { |summed, h|
sum_keys.each { |key| summed[key] += h[key].to_f }
summed
}
}