我正在生成包含应用程序日志数据的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
做我想要的吗?这种方法仍然需要我创建一个新表,而不是每次要加载新数据时都附加表,但是如果没有其他选择,那就可以了。
您建议的第一种方法通常是最佳选择。如果您有大量数据,则可能需要用aGROUP EACH BY
代替GROUP BY
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句