什么是基于列子集避免BigQuery中重复数据的方法?

时间:2014-12-21 23:20:25

标签: google-bigquery

我正在生成包含应用程序日志数据的CSV文件。 CSV文件中的列为timestamp, source_address, destination_url, request_type。当我将CSV文件加载到BigQuery时,它只是将CSV中的数据附加到BigQuery中的现有表中。我想避免重复的source_address, destination_url, request_type集,只需跟踪此类集的最新时间戳。

我想到这样做的一种方法是GROUP BY source_address, destination_url, request_type并获取MAX(timestamp),但这意味着我必须将该查询保存到一个新表中,然后我可以随后查询然后将其复制回我定期将CSV文件加载到原始表中。

有没有更好的方法来做到这一点?重复是没有问题的,除了Google收取查询完成数据的事实。

----编辑#1 ----

我也完全愿意在加载到BiqQuery之前对CSV数据进行重复数据删除,所以如果有人对如何使用命令行工具有任何很好的想法,可以根据某些列索引来管理CSV文件或我喜欢听到他们之类的东西。

----编辑#2 ----

好的,所以我一直在用sort命令修补一下,我我可能会做些什么,但我希望别人的意见得到证实。 sort -t, -k1,1 -r logfile.csv | sort -u -t, -k2,4正在做我想做的事吗?这种方法仍然需要我创建一个新表,而不是每次我想加载新数据时附加,但如果没有其他选项,那就没关系。

1 个答案:

答案 0 :(得分:2)

您建议的第一种方式通常是最佳选择。如果您有大量数据,则可能需要GROUP EACH BY而不是GROUP BY