【问题标题】:Airflow "Variable is not defined"气流\“变量未定义\”
【发布时间】:2023-01-28 03:26:08
【问题描述】:

我正在处理一项从 URL 参数中剥离值的 Airflow 任务。

我使用了完全相同的格式 - 设置三个变量,使用模式,最后读取 $row_count 等。

这是唯一抛出错误的任务。

!set stop_on_error=True
!set exit_on_error=True
!set variable_substitution=True

USE schema myDatawarehouse;

/*
CREATE OR REPLACE TABLE web_page_views (
      anonymous_id VARCHAR(80),
      email VARCHAR(765),
      utm_campaign VARCHAR(765)
);
*/

BEGIN;

CREATE OR REPLACE TABLE marketing_digital_traffic AS
   SELECT   anonymous_id
            , email
            , split_part(split_part(url, 'utm_campaign=', 2), '&', 1) utm_campaign
   FROM     segment.pages;

SET row_count = &__rowcount;

INSERT INTO etl.load_table(
    table_name
,   rows_inserted
,   job_message
)
values (
           'web_page_views'
       ,   $row_count
       ,   'etl process finished successfully'
)
;

commit;

当我运行此任务时,出现错误 Variable is not defined

【问题讨论】:

    标签: airflow


    【解决方案1】:

    所以问题是 select 语句中的与号(“&”)。

    Airflow/python 将其解释为新变量的开始。

    为避免这种情况,请在 Airflow 任务中将 '&' 更改为 '&&',如下所示:

    CREATE OR REPLACE TABLE marketing_digital_traffic AS
       SELECT   anonymous_id
                , email
                , split_part(split_part(url, 'utm_campaign=', 2), '&&', 1) utm_campaign
       FROM     segment.pages;
    

    笔记: 你会得到这个错误即使你的 SQL 代码被注释掉了。我经过惨痛的教训才学到这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 2020-01-16
      • 2020-03-16
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      相关资源
      最近更新 更多