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
相关产品推荐
相关产品推荐

