BigQuery中的数据清理:当session_id同时存在null和有效find_term时,只保留具有有效find_term的记录

Data cleaning in BigQuery: When session_id has both null and valid find_term, only keeping the records that have valid find_terms

我需要一些帮助来清理我的数据。我有一个 table 如下所示:

session_id find_term
11111 null
11111 candy
11111 chocolate
22811 null
11145 null
333222 dark chocolate

当session_id同时具有空值和有效find_term时,我想保留仅具有有效find_term的记录(例如:对于session_id 11111,我想在 find_term 为 null 时排除第一条记录并在 find_term 为糖果和巧克力时保留。对于 session_id 22811、11145,我想保留所有现有记录,因为它们只有 null如 find_term)。我希望输出为:

session_id find_term
11111 candy
11111 chocolate
22811 null
11145 null
333222 dark chocolate

到目前为止,我已经尝试使用同一组记录 row_num 来区分它们,但这并没有太大帮助。请分享您的想法!谢谢!

下面使用

select * from your_table
qualify ((find_term is null ) and countif(not find_term is null) over(partition by session_id) = 0)
or not find_term is null             

如果应用于您问题中的示例数据 - 输出为