Добавлена пропущенная иллюстрация
This commit is contained in:
@@ -177,6 +177,43 @@ with TaskGroup("data_loading") as loading_group:
|
|||||||
|
|
||||||
Обратите внимание: при использовании TaskGroup последовательность задач указывается внутри группы после объявления всех задач, а в конце DAG описывается последовательность выполнения самих групп.
|
Обратите внимание: при использовании TaskGroup последовательность задач указывается внутри группы после объявления всех задач, а в конце DAG описывается последовательность выполнения самих групп.
|
||||||
|
|
||||||
|
Ниже приведена упрощённая схема зависимостей между тремя группами задач:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
|
||||||
|
%% group1
|
||||||
|
subgraph G1["group1"]
|
||||||
|
g1_t1["task1"]
|
||||||
|
g1_t2["task2"]
|
||||||
|
g1_t3["task3"]
|
||||||
|
|
||||||
|
g1_t1 --> g1_t2
|
||||||
|
g1_t1 --> g1_t3
|
||||||
|
end
|
||||||
|
|
||||||
|
%% group2
|
||||||
|
subgraph G2["group2"]
|
||||||
|
g2_t1["task1"]
|
||||||
|
g2_t2["task2"]
|
||||||
|
|
||||||
|
g2_t1 --> g2_t2
|
||||||
|
end
|
||||||
|
|
||||||
|
%% group3
|
||||||
|
subgraph G3["group3"]
|
||||||
|
g3_t1["task1"]
|
||||||
|
g3_t2["task2"]
|
||||||
|
|
||||||
|
g3_t1 --> g3_t2
|
||||||
|
end
|
||||||
|
|
||||||
|
%% зависимости между группами
|
||||||
|
g1_t2 --> g3_t1
|
||||||
|
g1_t3 --> g3_t1
|
||||||
|
g2_t2 --> g3_t1
|
||||||
|
```
|
||||||
|
|
||||||
Визуально в интерфейсе Airflow группы задач отображаются как один узел с небольшим индикатором. Клик по нему разворачивает или сворачивает вложенные задачи, что значительно улучшает восприятие DAG с большим количеством задач и связей, особенно когда в них десятки и сотни задач.
|
Визуально в интерфейсе Airflow группы задач отображаются как один узел с небольшим индикатором. Клик по нему разворачивает или сворачивает вложенные задачи, что значительно улучшает восприятие DAG с большим количеством задач и связей, особенно когда в них десятки и сотни задач.
|
||||||
|
|
||||||
TaskGroup — это удобный способ логической группировки задач, который помогает упростить код и представить сложные пайплайны более компактно.
|
TaskGroup — это удобный способ логической группировки задач, который помогает упростить код и представить сложные пайплайны более компактно.
|
||||||
@@ -312,8 +349,8 @@ def get_file_path(file_name):
|
|||||||
return os.path.join(os.path.expanduser('~/data'), file_name)
|
return os.path.join(os.path.expanduser('~/data'), file_name)
|
||||||
|
|
||||||
def load_customer_data():
|
def load_customer_data():
|
||||||
url = 'https://example.com/customer_data.csv'
|
file_path = get_file_path('customer_data.csv')
|
||||||
df = pd.read_csv(url)
|
df = pd.read_csv(file_path)
|
||||||
engine = create_engine(DATABASE_URL)
|
engine = create_engine(DATABASE_URL)
|
||||||
df.to_sql('customers', engine, index=False, if_exists='replace', schema='staging')
|
df.to_sql('customers', engine, index=False, if_exists='replace', schema='staging')
|
||||||
|
|
||||||
@@ -396,8 +433,8 @@ def get_file_path(file_name):
|
|||||||
return os.path.join(os.path.expanduser('~/data'), file_name)
|
return os.path.join(os.path.expanduser('~/data'), file_name)
|
||||||
|
|
||||||
def load_customer_data():
|
def load_customer_data():
|
||||||
url = 'https://example.com/customer_data.csv'
|
file_path = get_file_path('customer_data.csv')
|
||||||
df = pd.read_csv(url)
|
df = pd.read_csv(file_path)
|
||||||
engine = create_engine(DATABASE_URL)
|
engine = create_engine(DATABASE_URL)
|
||||||
df.to_sql('customers', engine, index=False, if_exists='replace', schema='staging')
|
df.to_sql('customers', engine, index=False, if_exists='replace', schema='staging')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user