Snowflake, dbt: получаю ошибку invalid identifier

Делаю такой код в dbt, чтобы сделать запрос к Snowflake:

WITH cte_1 AS (
    SELECT
        {{ xdb.hash(['bumg.global_user_id']) }} AS global_user_id
        , fai.ad_impression_id AS ad_impression_id
        , TO_CHAR((
            CASE
                WHEN 'Ad Served Date' = 'Ad Requested Date' THEN fai.ad_requested_at
                WHEN 'Ad Served Date' = 'Ad Requested Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_requested_at') }}
                WHEN 'Ad Served Date' = 'Ad Requested Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_requested_at') }}
                WHEN 'Ad Served Date' = 'Ad Served Date' THEN fai.ad_served_at
                WHEN 'Ad Served Date' = 'Ad Served Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_served_at') }}
                WHEN 'Ad Served Date' = 'Ad Served Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_served_at') }}
                WHEN 'Ad Served Date' = 'Ad Downloaded Date' THEN fai.ad_downloaded_at
                WHEN 'Ad Served Date' = 'Ad Downloaded Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_downloaded_at') }}
                WHEN 'Ad Served Date' = 'Ad Downloaded Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_downloaded_at') }}
                WHEN 'Ad Served Date' = 'Ad Clicked Date' THEN fac.ad_clicked_at
                WHEN 'Ad Served Date' = 'Ad Clicked Month' THEN {{ dbt_utils.date_trunc('month', 'fac.ad_clicked_at') }}
                WHEN 'Ad Served Date' = 'Ad Clicked Week' THEN {{ dbt_utils.date_trunc('week', 'fac.ad_clicked_at') }}
                ELSE NULL
            END), 'YYYY-MM-DD') AS fact_ad_impressions_date
        , ods.prefix AS prefix
        , (
            CASE
                WHEN 'fac.ad_click_id' IS NOT NULL THEN 'Yes'
                ELSE 'No'
            END) AS impression_was_clicked
    FROM {{ source('prod', 'fact_ad_impressions') }} AS fai
    LEFT JOIN {{ source('prod', 'dim_ad_user') }} AS dau ON dau.ad_user_key = fai.ad_user_key
    LEFT JOIN {{ source('prod', 'bridge_user_model_gam') }} AS bumg ON dau.ad_user_key = bumg.ad_user_key
    LEFT JOIN {{ source('prod', 'dim_page_url') }} AS dpu ON dpu.page_url_key = fai.page_url_key
    LEFT JOIN {{ source('prod', 'outrigger_dim_site') }} AS ods ON ods.site_name = dpu.page_url_host
    LEFT JOIN {{ source('prod', 'fact_ad_clicks') }} AS fac ON fac.ad_impression_id = fai.ad_impression_id
    WHERE
        fai.ad_requested_at IS NOT NULL
        AND fai.ad_served_at IS NOT NULL
        AND fai.ad_downloaded_at IS NOT NULL
        AND (
            CASE
                WHEN 'Ad Served Date' = 'Ad Requested Date' THEN fai.ad_requested_at
                WHEN 'Ad Served Date' = 'Ad Requested Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_requested_at') }}
                WHEN 'Ad Served Date' = 'Ad Requested Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_requested_at') }}
                WHEN 'Ad Served Date' = 'Ad Served Date' THEN fai.ad_served_at
                WHEN 'Ad Served Date' = 'Ad Served Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_served_at') }}
                WHEN 'Ad Served Date' = 'Ad Served Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_served_at') }}
                WHEN 'Ad Served Date' = 'Ad Downloaded Date' THEN fai.ad_downloaded_at
                WHEN 'Ad Served Date' = 'Ad Downloaded Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_downloaded_at') }}
                WHEN 'Ad Served Date' = 'Ad Downloaded Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_downloaded_at') }}
                WHEN 'Ad Served Date' = 'Ad Clicked Date' THEN fac.ad_clicked_at
                WHEN 'Ad Served Date' = 'Ad Clicked Month' THEN {{ dbt_utils.date_trunc('month', 'fac.ad_clicked_at') }}
                WHEN 'Ad Served Date' = 'Ad Clicked Week' THEN {{ dbt_utils.date_trunc('week', 'fac.ad_clicked_at') }}
                ELSE NULL
            END) >= {{ dbt_date.n_months_ago(4, tz="America/New_York") }}
        AND (NOT (fac.ad_click_id IS NOT NULL) OR (fac.ad_click_id IS NOT NULL) IS NULL)
        AND ods.site_name IS NOT NULL
    {{ dbt_utils.group_by(5) }}
    ORDER BY ad_impression_id
)

, cte_2 AS (
    SELECT
        {{ xdb.hash(['bumg.global_user_id']) }} AS global_user_id
        , fai.ad_impression_id AS ad_impression_id
        , TO_CHAR((
            CASE
                WHEN 'Ad Served Date' = 'Ad Requested Date' THEN fai.ad_requested_at
                WHEN 'Ad Served Date' = 'Ad Requested Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_requested_at') }}
                WHEN 'Ad Served Date' = 'Ad Requested Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_requested_at') }}
                WHEN 'Ad Served Date' = 'Ad Served Date' THEN fai.ad_served_at
                WHEN 'Ad Served Date' = 'Ad Served Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_served_at') }}
                WHEN 'Ad Served Date' = 'Ad Served Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_served_at') }}
                WHEN 'Ad Served Date' = 'Ad Downloaded Date' THEN fai.ad_downloaded_at
                WHEN 'Ad Served Date' = 'Ad Downloaded Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_downloaded_at') }}
                WHEN 'Ad Served Date' = 'Ad Downloaded Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_downloaded_at') }}
                WHEN 'Ad Served Date' = 'Ad Clicked Date' THEN fac.ad_clicked_at
                WHEN 'Ad Served Date' = 'Ad Clicked Month' THEN {{ dbt_utils.date_trunc('month', 'fac.ad_clicked_at') }}
                WHEN 'Ad Served Date' = 'Ad Clicked Week' THEN {{ dbt_utils.date_trunc('week', 'fac.ad_clicked_at') }}
                ELSE NULL
            END), 'YYYY-MM-DD') AS fact_ad_impressions_date
        , ods.prefix AS prefix
        , CASE
            WHEN 'fac.ad_click_id' IS NOT NULL THEN 'Yes'
            ELSE 'No'
        END AS impression_was_clicked
    FROM {{ source('prod', 'fact_ad_impressions') }} AS fai
    LEFT JOIN {{ source('prod', 'dim_ad_user') }} AS dau ON dau.ad_user_key = fai.ad_user_key
    LEFT JOIN {{ source('prod', 'bridge_user_model_gam') }} AS bumg ON dau.ad_user_key = bumg.ad_user_key
    LEFT JOIN {{ source('prod', 'dim_page_url') }} AS dpu ON dpu.page_url_key = fai.page_url_key
    LEFT JOIN {{ source('prod', 'outrigger_dim_site') }} AS ods ON ods.site_name = dpu.page_url_host
    LEFT JOIN {{ source('prod', 'fact_ad_clicks') }} AS fac ON fac.ad_impression_id = fai.ad_impression_id
    WHERE
        fai.ad_requested_at IS NOT NULL
        AND fai.ad_served_at IS NOT NULL
        AND fai.ad_downloaded_at IS NOT NULL
        AND (
            CASE
                WHEN 'Ad Served Date' = 'Ad Requested Date' THEN fai.ad_requested_at
                WHEN 'Ad Served Date' = 'Ad Requested Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_requested_at') }}
                WHEN 'Ad Served Date' = 'Ad Requested Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_requested_at') }}
                WHEN 'Ad Served Date' = 'Ad Served Date' THEN fai.ad_served_at
                WHEN 'Ad Served Date' = 'Ad Served Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_served_at') }}
                WHEN 'Ad Served Date' = 'Ad Served Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_served_at') }}
                WHEN 'Ad Served Date' = 'Ad Downloaded Date' THEN fai.ad_downloaded_at
                WHEN 'Ad Served Date' = 'Ad Downloaded Month' THEN {{ dbt_utils.date_trunc('month', 'fai.ad_downloaded_at') }}
                WHEN 'Ad Served Date' = 'Ad Downloaded Week' THEN {{ dbt_utils.date_trunc('week', 'fai.ad_downloaded_at') }}
                WHEN 'Ad Served Date' = 'Ad Clicked Date' THEN fac.ad_clicked_at
                WHEN 'Ad Served Date' = 'Ad Clicked Month' THEN {{ dbt_utils.date_trunc('month', 'fac.ad_clicked_at') }}
                WHEN 'Ad Served Date' = 'Ad Clicked Week' THEN {{ dbt_utils.date_trunc('week', 'fac.ad_clicked_at') }}
                ELSE NULL
            END) >= {{ dbt_date.n_months_ago(7, tz="America/New_York") }}
        AND fac.ad_click_id IS NOT NULL
        AND ods.site_name IS NOT NULL
    {{ dbt_utils.group_by(5) }}
    ORDER BY ad_impression_id
)

, cte_3 AS (
    SELECT
        *
    FROM cte_1

    UNION

    SELECT
        *
    FROM cte_2
)

SELECT
    global_user_id
    , ad_impression_id
    , fact_ad_impressions_date
    , prefix
    , impression_was_clicked
FROM cte_3

Получаю ошибку:

invalid identifier 'FAI.AD_IMPRESSION_ID'

Уже пару часов "курю" - не могу понять, где ошибся.

Можете кто-то свежим взглядом взглянуть?


Ответы (0 шт):