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

Google Data Studio:如何按产品计算每日过去7天平均销售额?

按产品计算每日过去7天平均销售额的实现方案

完全可以实现,下面针对不同常用工具给出具体实现方法:

1. 数据库SQL实现

如果数据存储在数据库中,利用窗口函数可以高效完成计算。假设你的表名为sales_data,字段分别为date(日期)、product(产品)、sales(销售额),执行以下SQL语句:

SELECT 
    date,
    product,
    sales,
    -- 按产品分组,取当前日期之前7天的销售额平均值
    AVG(sales) OVER (
        PARTITION BY product 
        ORDER BY date 
        ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING
    ) AS past_7d_avg_sales
FROM sales_data;

说明:

  • PARTITION BY product:确保只计算同一产品的历史数据
  • ORDER BY date:按日期顺序处理数据
  • ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING:限定计算范围为当前行的前7行到前1行(即过去7天,不含当天)
    如果存在日期缺失的情况,需要先补全每个产品的每日数据,再执行上述计算。

2. Excel实现

假设数据在A列(日期)、B列(产品)、C列(销售额),在D2单元格输入以下公式后下拉填充:

=AVERAGEIFS($C:$C, $B:$B, B2, $A:$A, ">="&A2-7, $A:$A, "<"&A2)

说明:

  • AVERAGEIFS用于多条件求平均,依次匹配:销售额列、当前行对应产品、日期在当前日期前7天范围内(不含当天)
  • 确保A列日期为Excel可识别的日期格式,否则需要先转换格式。

3. Python Pandas实现

用Pandas处理时,先将数据转为DataFrame,再按产品分组计算滚动平均:

import pandas as pd

# 读取数据(假设数据来自CSV文件,可根据实际调整)
df = pd.read_csv('sales_data.csv')
# 将日期列转为datetime类型,适配示例中的dd/mm格式
df['日期'] = pd.to_datetime(df['日期'], format='%d/%m')

# 按产品分组,计算过去7天(不含当天)的平均销售额
df['过去7天平均销售额'] = df.groupby('产品')['销售额'].transform(
    lambda x: x.shift(1).rolling(window=7, min_periods=1).mean()
)

说明:

  • shift(1):将销售额数据下移一行,避免包含当天数据
  • rolling(window=7):设置7天的滚动窗口
  • min_periods=1:保证即使不足7天(如产品的前几条数据)也能计算平均

内容的提问来源于stack exchange,提问作者Tal Orbach

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:20:26