sql - 对 bigquery 分区中复杂模式中的行进行重复数据删除
问题描述
我已经阅读了一些线程,但我知道的 sql 太少,无法解决我的问题。我有一个包含记录和嵌套字段的复杂模式的表。
下面你会看到一个查询,它找到了我需要去重的确切行。
SELECT *
FROM my-data-project-214805.rfid_data.rfid_data_table
WHERE DATE(_PARTITIONTIME) = "2020-02-07"
AND DetectorDataMessage.Header.MessageID ='478993053'
DetectorDataMessage.Header.MessageID 应该是唯一的。
如何删除这些行之一?(那里有两个)
如果可能的话,我想对整个表进行重复数据删除,但它是分区的,我无法正确处理。我尝试以下线程中的建议,但出现此错误Column DetectorDataMessage of type STRUCT cannot be used in...
感兴趣的话题: 删除 BigQuery 分区中的 重复行 从 BigQuery 表中删除重复的行
有什么建议么?你能指引我正确的方向吗?
解决方案
如果重复行中的所有值都相同,只需使用“SELECT distinct”。如果没有,我会使用 ROW_NUMBER() 函数为每个唯一索引创建一个排名,然后选择第一个排名。
我不知道你的专栏是什么,但这里有一个例子:
WITH subquery as
(select MessageId
ROW_NUMBER() OVER(partition by MessageID order by MessageId ASC) AS rank
)
select *
from subquery
where rank = 1
推荐阅读
- facebook - 如何授予合作伙伴商务管理器中的管理员系统用户对客户业务的权限?
- windows - Cygwin bash 和 vue-cli-service 服务未运行 Web 开发服务器
- apache-spark - Pyspark - 查找在过去项目中一起工作的员工
- c++ - 带 USB 集线器的 C++ 串行端口
- kubernetes - 是否可以将 pod 配置为优先使用“hostNetwork”但仍引用内部服务端点?
- html - 仅当 li 项中存在 dropend 时,如何从下拉菜单中删除边界右下角半径
- python - 将数据帧字典中的列转换为字符串
- chart.js - Chart.js - 向轴添加 1 个刻度步骤
- reactjs - React.js 无法使用 useEffect & fetch 在 UI 中显示 API 数据
- css - Material-UI Grid 同一行元素的高度