如何复制累积字段

Posted

技术标签:

【中文标题】如何复制累积字段【英文标题】:How to replicate a cumulative field 【发布时间】:2018-09-06 02:38:59 【问题描述】:

我正在尝试从我在 Datastudio 中准备的 XLS 中复制数据,

维度为 YYYYMM,输出为 MonthlyRate。 基本上 CumulativeResponse/CumulativeMeetings = MonthlyRate

我应该如何在 Datastudio 中准备计算字段和图表?

我当前使用的计算字段是 Sum(Response) / Count(Meetings) 并使用维度 YYYYMM(YearMonth)。 场上的平均水平,但最终导致数字略有偏差。 例如 201809 0.45 变为 0.47。

【问题讨论】:

【参考方案1】:

以下示例适用于 BigQuery 标准 SQL

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '201712' yyyymm, 4580 SumResponse, 6741 CountMeetings UNION ALL
  SELECT '201801', 3574, 6926 UNION ALL
  SELECT '201802', 2020, 6433 UNION ALL
  SELECT '201803', 1895, 6635 UNION ALL
  SELECT '201804', 2174, 6163 UNION ALL
  SELECT '201805', 3058, 7697 UNION ALL
  SELECT '201806', 3313, 7838 UNION ALL
  SELECT '201807', 4043, 8586 UNION ALL
  SELECT '201808', 5053, 9355 UNION ALL
  SELECT '201809', 1122, 1300 
)
SELECT 
  yyyymm, 
  SumResponse, 
  SUM(SumResponse) OVER(ORDER BY yyyymm) CumulativeResponse , 
  CountMeetings,
  SUM(CountMeetings) OVER(ORDER BY yyyymm) CumulativeMeetings,
  SUM(SumResponse) OVER(ORDER BY yyyymm)/SUM(CountMeetings) OVER(ORDER BY yyyymm) MonthlyRate 
FROM `project.dataset.table`
ORDER BY yyyymm   

结果:

Row yyyymm  SumResponse CumulativeResponse  CountMeetings   CumulativeMeetings  MonthlyRate  
1   201712  4580        4580                6741            6741                0.6794244177421748   
2   201801  3574        8154                6926            13667               0.596619594644033    
3   201802  2020        10174               6433            20100               0.5061691542288557   
4   201803  1895        12069               6635            26735               0.45143070880867775  
5   201804  2174        14243               6163            32898               0.4329442519302085   
6   201805  3058        17301               7697            40595               0.4261854908239931   
7   201806  3313        20614               7838            48433               0.4256188962071315   
8   201807  4043        24657               8586            57019               0.4324348024342763   
9   201808  5053        29710               9355            66374               0.4476150299816193   
10  201809  1122        30832               1300            67674               0.4555959452670154   

【讨论】:

以上是关于如何复制累积字段的主要内容,如果未能解决你的问题,请参考以下文章

c ++用移动而不是复制来累积

你能“累积”承诺结果形成一连串“那么”吗? [复制]

如果传递给它们的函数接受引用,STL 算法函数(如累积)是不是避免复制?

SQL 如何复制一条记录的指定字段的内容到另一条记录的指定字段?

任何逻辑在 36 次复制后冻结

oracle中如何将数据从一个表复制到另一个表(仅复制其中某些字段)