FROM DATA TO DIRECTION

BIVIET

Đối Tác Tin Cậy

Hơn 15 năm kinh nghiệm BI tại Nhật Bản
Đối tác tin cậy cho doanh nghiệp Việt và Nhật
日本で15年以上のBI導入経験
日本とベトナムの企業を支える、信頼のデータパートナー
Cách thiết lập và nhận return value của Pipeline và Notebook trên Data Factory
4.9
(24)

① Mục Đích

Khi làm việc với pipeline của Data Factory (trên Azure hay Fabric) hoặc Azure Synapse Analytic. Đôi khi chúng ta cần truyền giá trị thực thi lại cho những tác vụ sữ lý khác.
Bài viết này mình chia sẻ cách trả giá trị là kết quả thực thi của Pipeline và Notebook về lại pipeline gốc và sử dụng cho tác vụ sau.
Bài viết chỉ là ví dụ trên kết quả trả về là chuỗi ký tự string hay array (json). Nên tuy theo yêu cầu và thiết kế, các bạn có thể mở rộng ra để sử dụng

② Thiết lập và sử dụng

2-1. Đối với pipeline

Đối với pipeline, các bạn sử dụng “Set variable” Activity để truyền dữ liệu trả về cho pipeline gốc.

2-1-1. Ví dụ

Ví dụ ta thiết lập cấu trúc pipeline như sau:
■ Main pipeline: Nhận giá trị trả về từ sub pipeline và lưu giá trị trả về vào biến (variable) main_pp_return_value
■ Sub pipeline: Thực hiện xử lý và trả kết quả xử lý về return_value (variable) từ đó trả return_value variable thành 1 result cho main pipeline

2-1-2: Thực hiện

Thiết lập Sub Pipeline với variable: là return_value
(Việc đặt tên cho varible là không quy định)

Mình bỏ qua nội dung sử lý của sub pipeline và giả định kết quả trả về là 1 chuối ký tự.
Bỏ chuỗi ký tự kết quả vào biến return_value bằng “Set Variable” Activity như sau

1. Variable Type: Pipeline Variable
2. Name: Chọn variable giữ kết quả trả về.
  ➡Ở đây mình chọn “return_value” variable
3. Value: Thiết lập kết quả trả về là kết quả sử lý của bước xữ lý trước đó.
  ➡Ở đây mình bỏ qua và cố định giá trị trả về là 1 chuỗi “Đây là kết quả trả về”

Tiếp theo, cũng dùng “Set Variable” Activity để trả return_value ra khỏi pipeline

1. Variable Type: Đê truyền giá trị ra khỏi pipieline chọn “Pipeline return value
2. Value: Chọn “+New” để thiết lập các giá trị trả về
  +Name: Thiết lập tên cho giá trị trả về. Ở đây mình set “result” (Lưu ý: không có quy định cố định cho việc đặt tên)
  +Type: Khi giá trị trả về là cố định các bạn có thể chọn các kiểu trả về có sẵn (string, int, array…) và thiết lập value trả về.
   ★Nhưng khi cần trả về là 1 biến, hay 1 giá trị chưa xác định, các bạn dùng “Expression” để thiết lập

Tại Main Pipeline, Các bạn dùng “Excute Pipeline” Activity để khởi động sử lý Sub pipeline
Và sử dụng “Set Variable” Activity để nhận giá trị sau khi Excute Pipeline thực thi xong

  1. Variable Type: Chọn “Pipeline variable”
  2. Name: Chọn variable sẽ chứa giá trị trả về. Ở đây mình tạo và sử dụng variable tên “main_pp_return_value”
  3. Value: Các bạn thiết lập như cấu trúc sau.
    <đối tượng excute pipeline activity có giá trị trả về>.output.pipelineReturnValue.<tên giá trị trả về được thiết lập trong sub pipeline>
    Ở ví dụ mình thiết lập như sau: @activity(‘Sub Pipeline’).output.pipelineReturnValue.result

Kết quả thực thi như sau.
main_pp_return_value nhận được giá trị “Đây là kết quả trả về” như sau

2-2. Đối với Notebook

Đối với notebook, các bạn sử dụng “mssparkutils.notebook.exit(<Giá trị trả về>)” của pyspark. Để trả trả trị về cho Pipeline Root

2-2-1. Ví dụ

Ví dụ ta thiết lập cấu trúc pipeline như sau:
■ Main pipeline: Nhận giá trị trả về từ xử lý Notebook và lưu giá trị trả về vào biến (variable) main_nb_return_value
■ Notebook: Thực hiện xử lý và trả kết quả xử lý về cho pipeline theo dạng json.

2-2-2: Thực hiện

Thiết lập Notebook sử dụng pyspark nên mình dùng mssparkutils.notebook.exit(<kết quả trả về>) để trả kết quả về. Trong ví dụ mình bỏ quả nội dung xử lý của notebook, chỉ tập ví dụ về phần thiết lập giá trị trả về.
Dưới đây là code thực hiện:

# Khai báo biến
nb_var_return_value = []

#print kiểm tra biến
print(nb_var_return_value)

# Kết thúc xử lý và trả kết quả về là 1 json

# import json để xử lý dữ liệu json
import json

# Tạo giá trị trả về cho biến như 1 cấu trúc json
nb_var_return_value = [{"result":"Đây là kết quả trả về từ notebook"}]
# Các bạn có thể dùng json.dumps để có thể chuyển đổi dữ liệu qua định dạng json như sau
result = json.dumps(nb_var_return_value, ensure_ascii = False, indent = 0)
# Trả kết quả json được lưu trong result khi kết thúc notebook
mssparkutils.notebook.exit(result)

Tại Main Pipeline,
Các bạn dùng “Excute Notebook” Activity để khởi động sử lý Notebook
Và sử dụng “Set Variable” Activity để nhận giá trị sau khi Excute Notebook thực thi xong

  1. Variable Type: Chọn “Pipeline variable”
  2. Name: Chọn variable sẽ chứa giá trị trả về. Ở đây mình tạo và sử dụng variable tên “main_nb_return_value”
  3. Value: Vì excute Notebook sẽ trả kết quả về là 1 định dạng json. Các bạn dùng cách sau để lấy kết quả
    @json(
     activity(‘<Tên activity thực thi notebook>’).output.result.exitValue
    )[0].<tên tag json giữ giá trị>
    Ví dụ như sau:
@json(
    activity('Notebook').output.result.exitValue
)[0].result

Kết quả thực thi như sau.
main_nb_return_value nhận được giá trị “Đây là kết quả trả về” như sau

Ghi chú: Vì kết quả thực thi notebook là 1 kết quả json, nên chúng ta dùng json để lấy dữ liệu.
Dưới đây là kết quả notebook trả về khi thực thi trên pipeline.

Ghi chú 2:
Đối với kết quả json gồm nhiều phần tử, các bạn cần dùng Array varriable để lưu trữ kết quả.

Tùy vào kết quả cần trả về mà cách xử lý có khác nhau, nhưng với ví dụ mẫu trên hi vọng sẽ giúp các bạn khi làm việc với pipeline và notebook để có thể mở rộng tùy theo yêu cầu công việc.

How useful was this post?

Click on a star to rate it!

Average rating 4.9 / 5. Vote count: 24

No votes so far! Be the first to rate this post.

Summary

Khi làm việc với pipeline của Data Factory (trên Azure hay Fabric) hoặc Azure Synapse Analytic. Đôi khi chúng ta cần truyền giá trị thực thi lại cho những tác vụ sữ lý khác.
Bài viết này mình chia sẻ cách trả giá trị là kết quả thực thi của Pipeline và Notebook về lại pipeline gốc và sử dụng cho tác vụ sau.

Cách thiết lập và nhận return value của Pipeline và Notebook trên Data Factory
6

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Chuyển lên trên