Size: a a a

2018 January 08

МС

Максим Сёмочкин in Airflow
О каком скрипте речь?
источник

П

Павел Максимов in Airflow
Максим Сёмочкин
О каком скрипте речь?
для удаления дага
источник

МС

Максим Сёмочкин in Airflow
Тебе надо создать нормальный connection airflow_db. Верного типа
источник

МС

Максим Сёмочкин in Airflow
Да, в том интерфейсе
источник

П

Павел Максимов in Airflow
ура, получилось, спасибо большое.
источник

МС

Максим Сёмочкин in Airflow
На самом деле можешь забить на скрипт. Вон запрос, коннекты к базе знаешь.
источник

П

Павел Максимов in Airflow
Максим Сёмочкин
На самом деле можешь забить на скрипт. Вон запрос, коннекты к базе знаешь.
кстати, да, не додумался)
источник
2018 January 10

OI

Oleg Ilinsky in Airflow
Добрый вечер!
Подскажите, пожалуйста, насчет template_ext в BaseOperator (ну и во всех, которые от него наследуются).
Я правильно понимаю, что в него добавляется маска типа ".sql" (ну или что-нибудь еще), по которой потом в файлах или директориях словаря content этого таска ищутся файлы с таким расширением  и найденное добро рендерится?

    def render_template(self, attr, content, context):
       """
       Renders a template either from a file or directly in a field, and returns
       the rendered result.
       """
       jinja_env = self.dag.get_template_env() \
           if hasattr(self, 'dag') \
           else jinja2.Environment(cache_size=0)

       exts = self.__class__.template_ext
       if (
               isinstance(content, six.string_types) and
               any([content.endswith(ext) for ext in exts])):
           return jinja_env.get_template(content).render(**context)
       else:
           return self.render_template_from_field(attr, content, context, jinja_env)
источник

SS

Sergey Sheremeta in Airflow
да
источник

OI

Oleg Ilinsky in Airflow
А это как-то можно использовать, чтобы, например, передавать оператору файл с sql для выполнения через content?
источник

SS

Sergey Sheremeta in Airflow
так, что вы понимаете под "рендериться"?
источник

OI

Oleg Ilinsky in Airflow
ну как обычно в jinja template подставляются всякие параметры
в случае операторов {{ ds }}, {{ params.<param_name }} и прочее
источник

SS

Sergey Sheremeta in Airflow
у Airflow есть набор макросов (например, execution_date для исполняемого в данный момент dag'а), вот значения этих макросов и передаются через рендеринг jinja в тело файла с указанным в template_ext расширением
источник

SS

Sergey Sheremeta in Airflow
возможно, я не понимаю вопроса...
вы видели этот гит-реп?
https://github.com/gtoonstra/etl-with-airflow/
источник
2018 January 11

OI

Oleg Ilinsky in Airflow
Нет)

Я  немного другое имел ввиду.
Например, я хочу сделать кастомный оператор, который будет выполнять sql в БД, для которой у Airflow нет стандартного оператора. Самое простое - передать sql через параметр в этот операторо. Для этого надо определить соответствующий параметр в __init__ и добавить название этого параметра в template_fields.
А как то же самое сделать с файликом? Мне тут подсказали, что, например, в BashOperator можно просто написать что-то вроде bash_command='templated_command.sh'.
И я правильно понимаю, что т.к. в template_ext есть ".sh", а файлик оканчивается как раз на ".sh", то он открывается и в параметр bash_command кладется содержимое файла templated_command.sh с уже отрендерреными макросами?
источник

OI

Oleg Ilinsky in Airflow
И, соответственно, если при создании оператора указать .sql, а в передаваемый параметр вместо кода запроса передать путь к файлу, то в итоге в этом параметре мы получим отрендеренный sql?
источник

OI

Oleg Ilinsky in Airflow
Вроде понял)
источник

SS

Sergey Sheremeta in Airflow
да, все верно
источник

OI

Oleg Ilinsky in Airflow
Спасибо)
источник

SS

Sergey Sheremeta in Airflow
только надо еще не забыть подсказать Дагу в какой именно папке искать sql-файлы
источник