首页 > 解决方案 > redshift 是否存储失败的查询?

问题描述

我希望分析在某些 redshift 仓库(不是我的)上执行的查询。为了做到这一点,我使用了一个在 stl_querytext 和 stl_query 上连接的查询。

我的问题是我怎么还会收到非法查询(使用错误 sql 语法的 IE 查询)?当我在当地的红移中尝试过时,我还没有看到那些。另外,找不到相关文档。

这是配置问题吗?如果我应该进行这些查询,有没有办法知道那些是非法的?

谢谢,尼尔。

标签: sqlamazon-redshift

解决方案


因此 stl_querytext 将长查询分成由序列号标识的部分。作为第一步,我希望您将这些部分重建为原始查询。这可以使用 listagg() 函数来完成,只要结果查询不超过 max tex 字段(大约 320 个部分)。

现在这还不足以在所有情况下都返回有效的 SQL,因为您需要根据查询的部分是在查询中的文本字符串内部还是外部,对组合部分进行不同的处理。(部件之间是否需要空白)

我已经完成了很多这个确切的过程,所以这是可行的。我在空白问题上没有完美的过程,我接近了。也许其他人知道从 stl_querytext 获得查询的精确再现的表达式。


推荐阅读