列不存在或架构不存在AWS Redshift中的错误

时间:2019-04-05 18:39:18

标签: sql amazon-redshift

一个有效的查询需要更改,以包含另一个表中的列。左加入后,出现“列不存在”错误。在ON语句中使用列而不是列别名,第一个错误变成“不存在模式”错误。

这会产生“列“ a.audience_id”不存在错误“

        select
            criteria,
            trim(split_part(criteria, ':', 3))  as audience_id,
            t.category as audience_name,
            row_number() OVER (PARTITION BY trim(split_part(criteria, ':', 3)) ORDER BY date desc) as rownumber
        from
            client.adwords_insights_audience a
            left join core.googleads_inmarketaudience_xref x
            on a.audience_id = x.criterion_id
        group by
        criteria,
           trim(split_part(criteria, ':', 3)),
            t.category

然后将ON子句更改为以下内容会产生“模式“ a”不存在”错误

        select
            criteria,
            trim(split_part(criteria, ':', 3))  as audience_id,
            t.category as audience_name,
            row_number() OVER (PARTITION BY trim(split_part(criteria, ':', 3)) ORDER BY date desc) as rownumber
        from
            client.adwords_insights_audience a
            left join core.googleads_inmarketaudience_xref x
            on a.trim(split_part(criteria, ':', 3)) = x.criterion_id
        group by
        criteria,
           trim(split_part(criteria, ':', 3)),
            t.category

原始查询(如下)工作正常。只有当我左加入时才会出现错误。

        select
            criteria,
            trim(split_part(criteria, ':', 3))  as audience_id,
            row_number() OVER (PARTITION BY trim(split_part(criteria, ':', 3)) ORDER BY date desc) as rownumber
        from
            client.adwords_insights_audience a
        group by
        criteria,
           trim(split_part(criteria, ':', 3))

“日期”列也可以,为了清晰起见,我将其与其他几本一起从这篇文章中删除。我希望在最终输出中找到t.category列。

1 个答案:

答案 0 :(得分:0)

我怀疑如果修复表别名,则查询可能会起作用。以下是我对这些列的来源的最佳猜测:

select x.criteria,
       trim(split_part(x.criteria, ':', 3))  as audience_id,
       a.category as audience_name,
       row_number() over (partition by trim(split_part(x.criteria, ':', 3)) order by  ?.date desc) as rownumber
from client.adwords_insights_audience a left join 
     core.googleads_inmarketaudience_xref x
     on a.audience_id = x.criterion_id
group by x.criteria,
         trim(split_part(x.criteria, ':', 3)),
         a.category;

?是因为我不知道date的来源。