在 Redshift 中,有一个STL_QUERY
存储过去 5 天运行的查询的表。我正在尝试找到一种方法来保存超过 5 天的记录。以下是我考虑过的一些事情:
- 有红移设置吗?看来不是。
- 我可以使用触发器吗? Redshift 中不提供触发器,因此这是不行的。
- 我可以创建一个 Amazon Data Pipeline 作业来定期“抓取”
STL_QUERY
桌子?我可以,所以这是一个选择。不幸的是,我必须为管道提供一些 EC2 实例来运行这项工作。让一个实例每天坐在那里刮擦这张桌子似乎是一种浪费。
- 我可以使用 Amazon Simple Work Flow 作业来抓取表吗?我可以,但它遇到了与 3 相同的问题。
我还缺少其他选择/想法吗?我更喜欢一些不涉及我专用 EC2 实例的其他选项,即使这意味着支付额外的服务费用(前提是它比我使用的 EC2 实例便宜)。
保持简单,一切都在 Redshift 中完成。
首先,使用“CREATE TABLE … AS”将所有当前历史记录保存到永久表中。
CREATE TABLE admin.query_history AS SELECT * FROM stl_query;
二、使用psql
要运行它,请在您控制的计算机上安排一个作业每天运行它。
INSERT INTO admin.query_history SELECT * FROM stl_query WHERE query > (SELECT MAX(query) FROM admin.query_history);
完毕。 :)
Notes:
- 您需要 8.x 版本
psql
如果你还没有设置这个。
- 即使您的作业几天没有运行,stl_query 也会保留足够的历史记录来覆盖您。
- 根据您的评论,使用开始时间而不是查询作为条件可能更安全。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)