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
如果应用于您问题中的示例数据 - 输出为
我需要一些帮助来清理我的数据。我有一个 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
如果应用于您问题中的示例数据 - 输出为