Google Data Studio 如何筛选超过50天未售出的产品
实现思路
核心逻辑:先获取全量去重的product_id列表,再筛选出「过去50天有过销售记录的product_id列表」,两个列表取差集就是超过50天无销售的产品,需要额外展示最后一次销售时间、累计销量等信息可以关联原表聚合查询。
1. SQL实现(适用于数据库表场景)
基础实现代码:
-- 第一步:获取所有去重的产品ID WITH all_products AS ( SELECT DISTINCT product_id FROM 你的表名 ), -- 第二步:获取过去50天有销售记录的产品ID recent_sold_products AS ( SELECT DISTINCT product_id FROM 你的表名 WHERE report_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 50 DAY) ) -- 第三步:取差集得到超过50天无销售的产品 SELECT a.product_id FROM all_products a LEFT JOIN recent_sold_products r ON a.product_id = r.product_id WHERE r.product_id IS NULL;
如果需要同时展示该产品最后一次销售时间、累计销量等信息,可以调整为:
SELECT p.product_id, MAX(t.report_date) AS last_sale_date, SUM(t.quantity) AS total_sale_quantity FROM ( SELECT DISTINCT product_id FROM 你的表名 ) p LEFT JOIN 你的表名 t ON p.product_id = t.product_id GROUP BY p.product_id HAVING last_sale_date < DATE_SUB(CURRENT_DATE(), INTERVAL 50 DAY) OR last_sale_date IS NULL;
2. Python Pandas实现(适用于本地csv/excel表格场景)
基础实现代码:
import pandas as pd from datetime import timedelta # 读取表格数据,excel格式换pd.read_excel即可 df = pd.read_csv('你的文件路径.csv', parse_dates=['report_date']) # 1. 取全量去重产品ID all_products = df['product_id'].drop_duplicates() # 2. 取过去50天有销售的产品ID,stat_date可替换为指定业务统计日期 stat_date = pd.to_datetime('today').normalize() recent_day_threshold = stat_date - timedelta(days=50) recent_sold = df[df['report_date'] >= recent_day_threshold]['product_id'].drop_duplicates() # 3. 取差集得到符合要求的产品 no_sale_products = all_products[~all_products.isin(recent_sold)] # 输出表格结果 print(no_sale_products.to_frame(name='product_id'))
如果需要附带产品最后销售时间等信息,可以调整为:
product_last_sale = df.groupby('product_id')['report_date'].max().reset_index(name='last_sale_date') no_sale_products_detail = product_last_sale[product_last_sale['last_sale_date'] < recent_day_threshold] print(no_sale_products_detail)
注意事项
- 如果你有单独的产品维度表(存储所有在售/待售产品的表),优先用产品维度表的全量product_id做基准,不要用销售表的去重ID,避免把从未有过销售记录的新品漏掉
- 统计日期如果不是取当天,而是固定的业务统计日期,记得替换代码里的
CURRENT_DATE()或者stat_date为你指定的日期,避免计算偏差 - 如果需要排除已经下架的产品,可以在全量product_id的筛选步骤加对应下架状态的过滤条件
内容的提问来源于stack exchange,提问作者Jhw_Trw
相关产品推荐
相关产品推荐

