使用Pandas按saleforce_id分组并获取非NaN字段值的实现方案
合并Salesforce变更记录解决方案
Pandas 实现方案
如果使用Python的pandas库处理,核心逻辑是先统一空值格式,再分组取非空值:
- 先将表中空字符串转换为pandas可识别的空值类型,避免空字符串被判定为有效值
import pandas as pd # 替换空字符串/None为pandas标准空值 df = df.replace(["", None], pd.NA)
- 按
salesforce_id分组,取每列第一个非空值,若需要取最新更新的有效值,将first()替换为last()即可
# 分组合并,保留所有字段的非空值 merged_df = df.groupby("salesforce_id", as_index=False).first()
SQL 实现方案
如果在数据库中处理,使用聚合函数忽略空值的特性实现:
SELECT salesforce_id, MAX(field_a) AS field_a, MAX(field_b) AS field_b, -- 其余需要保留的字段依次使用MAX聚合即可 MAX(field_n) AS field_n FROM salesforce_change_log GROUP BY salesforce_id
如果需要按变更时间取最新的非空值,可以结合窗口函数实现:
WITH ranked_changes AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY salesforce_id ORDER BY change_time DESC) AS rn FROM salesforce_change_log ) SELECT * FROM ranked_changes WHERE rn = 1
注:如果你的数据表中同一字段同一ID存在多个不同的非空值,以上方案会优先取第一个/最新的有效值,可根据业务需要调整排序逻辑。
内容的提问来源于stack exchange,提问作者codr
相关产品推荐
相关产品推荐

