Python/Alteryx:满足特定条件时删除行的技术实现需求
数据库调整后数据清理解决方案
一、SQL 通用实现方案
核心逻辑
先找出所有带Adj的月份,提取对应的基础月份并转换成数字序号,定位最大的调整月份序号。之后删掉所有不带Adj、且月份序号小于等于这个最大值的行——自动实现“有Feb Adj就删Jan和Feb的未调整行,有Jan Adj就删Jan的未调整行”的需求,同时保留所有Adj行和调整月份之后的未调整行。
具体代码
-- 先找出所有调整月份的序号,再取最大的那个 WITH adj_months AS ( SELECT LEFT(Month, CHARINDEX(' ', Month) - 1) AS base_month, CASE LEFT(Month, 3) WHEN 'Jan' THEN 1 WHEN 'Feb' THEN 2 WHEN 'Mar' THEN 3 WHEN 'Apr' THEN 4 WHEN 'May' THEN 5 WHEN 'Jun' THEN 6 WHEN 'Jul' THEN 7 WHEN 'Aug' THEN 8 WHEN 'Sep' THEN 9 WHEN 'Oct' THEN 10 WHEN 'Nov' THEN 11 WHEN 'Dec' THEN 12 END AS month_num FROM your_table WHERE Month LIKE '% Adj' ), max_adj_month AS ( SELECT MAX(month_num) AS max_month_num FROM adj_months ) -- 删除不需要的未调整行 DELETE FROM your_table WHERE Month NOT LIKE '% Adj' AND CASE LEFT(Month, 3) WHEN 'Jan' THEN 1 WHEN 'Feb' THEN 2 WHEN 'Mar' THEN 3 WHEN 'Apr' THEN 4 WHEN 'May' THEN 5 WHEN 'Jun' THEN 6 WHEN 'Jul' THEN 7 WHEN 'Aug' THEN 8 WHEN 'Sep' THEN 9 WHEN 'Oct' THEN 10 WHEN 'Nov' THEN 11 WHEN 'Dec' THEN 12 END <= (SELECT max_month_num FROM max_adj_month) -- 没有任何Adj行的话,这条DELETE不会删任何数据
优势
不管产品类型、区域组合多复杂,也不管部分月份有没有数据,只要存在Adj行,就能精准匹配要删除的范围,完全适配你的场景。
二、Alteryx 改进工作流方案
调整后的逻辑
放弃之前“拆Adj后删N-1行”的思路,改成基于月份属性的精准筛选,步骤如下:
- 拆分月份标识:用
Text to Columns工具按空格拆分Month列,得到基础月份和是否调整两列(比如Jan Adj拆成Jan和Adj,普通Jan的是否调整为空)。 - 生成月份序号:用
Formula工具给每个基础月份分配数字序号(Jan=1,Feb=2…Dec=12),方便比较月份先后。 - 获取最大调整月份:用
Filter筛出是否调整为Adj的行,再用Summarize取月份序号的最大值,记为max_adj_num。 - 筛选保留数据:用
Join把原数据和max_adj_num关联,然后用Filter保留两类数据:- 所有
是否调整为Adj的行; 是否调整为空,且月份序号>max_adj_num的行(如果没有Adj行,就保留所有数据)。
- 所有
- 清理临时字段:用
Select工具删掉基础月份、是否调整等临时字段,还原原表结构。
关键节点配置
- Formula工具生成月份序号:
CASE [基础月份] WHEN "Jan" THEN 1 WHEN "Feb" THEN 2 WHEN "Mar" THEN 3 WHEN "Apr" THEN 4 WHEN "May" THEN 5 WHEN "Jun" THEN 6 WHEN "Jul" THEN 7 WHEN "Aug" THEN 8 WHEN "Sep" THEN 9 WHEN "Oct" THEN 10 WHEN "Nov" THEN 11 WHEN "Dec" THEN 12 ELSE 0 END - Filter工具保留规则:
([是否调整] == "Adj") OR (IsNull([max_adj_num]) OR [月份序号] > [max_adj_num])
优势
不依赖行的顺序,不管产品、区域怎么组合,也不管部分月份有没有数据,都能准确筛选出要保留的内容,解决之前方案失效的问题。
内容的提问来源于stack exchange,提问作者Ritchie
相关产品推荐
相关产品推荐

