Nhập dữ liệu CSV (Giá trị được phân tách bằng dấu phẩy) vào BigQuery bằng Cloud Data Fusion – Nhập dữ liệu theo thời gian thực

1. Giới thiệu

509db33558ae025.png

Lần cập nhật gần đây nhất: ngày 28 tháng 2 năm 2020

Lớp học lập trình này minh hoạ một mẫu nhập dữ liệu để nhập dữ liệu chăm sóc sức khoẻ có định dạng CSV vào BigQuery theo thời gian thực. Chúng ta sẽ sử dụng quy trình dữ liệu theo thời gian thực của Cloud Data Fusion cho phòng thí nghiệm này. Dữ liệu kiểm thử thực tế về dịch vụ chăm sóc sức khoẻ đã được tạo và cung cấp cho bạn trong bộ chứa Google Cloud Storage (gs://hcls_testing_data_fhir_10_patients/csv/).

Trong lớp học lập trình này, bạn sẽ tìm hiểu:

  • Cách nhập dữ liệu CSV (tải theo thời gian thực) từ Pub/Sub vào BigQuery bằng Cloud Data Fusion.
  • Cách tạo trực quan một quy trình tích hợp dữ liệu trong Cloud Data Fusion để tải, chuyển đổi và che giấu dữ liệu chăm sóc sức khoẻ theo thời gian thực.

Bạn cần làm gì để chạy bản minh hoạ này?

  • Bạn cần có quyền truy cập vào một dự án trên Google Cloud Platform.
  • Bạn phải được chỉ định vai trò Chủ sở hữu cho dự án trên Google Cloud Platform.
  • Dữ liệu chăm sóc sức khoẻ ở định dạng CSV, bao gồm cả tiêu đề.

Nếu bạn chưa có dự án GCP, hãy làm theo các bước này để tạo một dự án GCP mới.

Dữ liệu chăm sóc sức khoẻ ở định dạng CSV đã được tải sẵn vào bộ chứa GCS tại gs://hcls_testing_data_fhir_10_patients/csv/. Mỗi tệp tài nguyên CSV đều có một cấu trúc giản đồ riêng. Ví dụ: Patients.csv có một giản đồ khác với Providers.csv. Bạn có thể tìm thấy các tệp lược đồ được tải sẵn tại gs://hcls_testing_data_fhir_10_patients/csv_schemas.

Nếu cần một tập dữ liệu mới, bạn luôn có thể tạo tập dữ liệu đó bằng SyntheaTM. Sau đó, hãy tải tệp này lên GCS thay vì sao chép tệp từ vùng lưu trữ ở bước Sao chép dữ liệu đầu vào.

2. Thiết lập dự án GCP

Khởi tạo các biến shell cho môi trường của bạn.

Để tìm PROJECT_ID, hãy tham khảo phần Xác định dự án.

<!-- CODELAB: Initialize shell variables ->
<!-- Your current GCP Project ID ->
export PROJECT_ID=<PROJECT_ID>
<!-- A new GCS Bucket in your current Project  - INPUT ->
export BUCKET_NAME=<BUCKET_NAME>
<!-- A new BQ Dataset ID - OUTPUT ->
export DATASET_ID=<DATASET_ID>

Tạo một vùng lưu trữ GCS để lưu trữ dữ liệu đầu vào và nhật ký lỗi bằng công cụ gsutil.

gsutil mb -l us gs://$BUCKET_NAME

Truy cập vào tập dữ liệu tổng hợp.

  1. Từ địa chỉ email mà bạn đang dùng để đăng nhập vào Cloud Console, hãy gửi email đến hcls-solutions-external+subscribe@google.com để yêu cầu tham gia.
  2. Bạn sẽ nhận được email hướng dẫn cách xác nhận hành động này.
  3. Sử dụng lựa chọn trả lời email để tham gia nhóm. KHÔNG nhấp vào nút 525a0fa752e0acae.png.
  4. Sau khi nhận được email xác nhận, bạn có thể chuyển sang bước tiếp theo trong lớp học lập trình.

Sao chép dữ liệu đầu vào.

gsutil -m cp -r gs://hcls_testing_data_fhir_10_patients/csv gs://$BUCKET_NAME

Tạo một tập dữ liệu BigQuery.

bq mk --location=us --dataset $PROJECT_ID:$DATASET_ID

Cài đặt và khởi chạy Google Cloud SDK, đồng thời tạo Chủ đề và gói thuê bao Pub hoặc Sub.

gcloud init
gcloud pubsub topics create your-topic
gcloud pubsub subscriptions create --topic your-topic your-sub

3. Thiết lập môi trường Cloud Data Fusion

Hãy làm theo các bước sau để bật Cloud Data Fusion API và cấp các quyền cần thiết:

Bật API.

  1. Chuyển đến Thư viện API của Bảng điều khiển GCP.
  2. Trong danh sách dự án, hãy chọn dự án của bạn.
  3. Trong Thư viện API, hãy chọn API mà bạn muốn bật ( Cloud Data Fusion API,Cloud Pub/Sub API). Nếu bạn cần trợ giúp tìm API, hãy sử dụng trường tìm kiếm và bộ lọc.
  4. Trên trang API, hãy nhấp vào BẬT.

Tạo một phiên bản Cloud Data Fusion.

  1. Trong Bảng điều khiển GCP, hãy chọn ProjectID của bạn.
  2. Chọn Data Fusion trong trình đơn bên trái, sau đó nhấp vào nút TẠO MỘT THỰC THỂ ở giữa trang (tạo lần đầu) hoặc nhấp vào nút TẠO THỰC THỂ trong trình đơn trên cùng (tạo thêm).

a828690ff3bf3c46.png

e8ffacaba8e61be5.png

  1. Cung cấp tên phiên bản. Chọn Doanh nghiệp.

5af91e46917260ff.png

  1. Nhấp vào nút TẠO.

Thiết lập quyền cho phiên bản.

Sau khi tạo một phiên bản, hãy làm theo các bước sau để cấp cho tài khoản dịch vụ được liên kết với phiên bản đó các quyền đối với dự án của bạn:

  1. Chuyển đến trang chi tiết phiên bản bằng cách nhấp vào tên phiên bản.

76ad691f795e1ab3.png

  1. Sao chép tài khoản dịch vụ.

6c91836afb72209d.png

  1. Chuyển đến trang IAM của dự án.
  2. Trên trang quyền IAM, hãy cấp cho tài khoản dịch vụ vai trò Đơn vị hỗ trợ dịch vụ Cloud Data Fusion API bằng cách nhấp vào nút Thêm. Dán "tài khoản dịch vụ" vào trường Thành viên mới rồi chọn vai trò Quản lý dịch vụ -> Tác nhân máy chủ Cloud Data Fusion API.

36f03d11c2a4ce0.png

  1. Nhấp vào + Thêm vai trò khác (hoặc Chỉnh sửa tác nhân dịch vụ API Cloud Data Fusion) để thêm vai trò Người đăng ký Pub/Sub.

b4bf5500b8cbe5f9.png

  1. Nhấp vào Lưu.

Sau khi hoàn tất các bước này, bạn có thể bắt đầu sử dụng Cloud Data Fusion bằng cách nhấp vào đường liên kết Xem phiên bản trên trang phiên bản Cloud Data Fusion hoặc trang thông tin chi tiết của một phiên bản.

Thiết lập quy tắc tường lửa.

  1. Chuyển đến Bảng điều khiển GCP -> Mạng VPC -> Quy tắc về tường lửa để kiểm tra xem quy tắc default-allow-ssh có tồn tại hay không.

102adef44bbe3a45.png

  1. Nếu không, hãy thêm một quy tắc tường lửa cho phép tất cả lưu lượng truy cập SSH đầu vào vào mạng mặc định.

Sử dụng dòng lệnh:

gcloud beta compute --project={PROJECT_ID} firewall-rules create default-allow-ssh --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0 --enable-logging

Sử dụng giao diện người dùng: Nhấp vào Create Firewall Rule (Tạo quy tắc cho tường lửa) rồi điền thông tin:

d9c69ac10496b3d9.png

2dc4971594b82a1f.png

4. Tạo các nút cho quy trình

Bây giờ chúng ta đã có môi trường Cloud Data Fusion trong GCP, hãy bắt đầu xây dựng quy trình dữ liệu trong Cloud Data Fusion bằng các bước sau:

  1. Trong cửa sổ Cloud Data Fusion, hãy nhấp vào đường liên kết Xem phiên bản trong cột Thao tác. Bạn sẽ được chuyển hướng đến một trang khác. Nhấp vào url được cung cấp để mở phiên bản Cloud Data Fusion. Lựa chọn của bạn khi nhấp vào nút "Bắt đầu tham quan" hoặc "Không, cảm ơn" trên cửa sổ bật lên Chào mừng.
  2. Mở rộng trình đơn "hamburger", chọn Pipeline (Quy trình) -> List (Danh sách)

317820def934a00a.png

  1. Nhấp vào nút + màu xanh lục ở góc trên cùng bên phải, sau đó chọn Tạo quy trình. Hoặc nhấp vào "Tạo" một đường liên kết đến đường ống.

711975bb2c2416d7.png

3ec0a71409657fb8.png

  1. Sau khi studio quy trình xuất hiện, ở phía trên bên trái, hãy chọn Data Pipeline - Realtime (Quy trình dữ liệu – Theo thời gian thực) trong trình đơn thả xuống.

372a889a81da5e66.png

  1. Trong giao diện người dùng Data Pipelines, bạn sẽ thấy các mục khác nhau trên bảng điều khiển bên trái như Bộ lọc, Nguồn, Biến đổi, Phân tích, bồn lưu trữ dữ liệu, trình xử lý lỗi và Google Alerts. Tại đây, bạn có thể chọn một hoặc nhiều nút cho quy trình.

c63de071d4580f2f.png

Chọn một nút Nguồn.

  1. Trong phần Nguồn của bảng điều khiển Trình bổ trợ ở bên trái, hãy nhấp đúp vào nút Google Cloud PubSub xuất hiện trong giao diện người dùng của Data Pipelines.
  2. Trỏ vào nút nguồn PubSub rồi nhấp vào Properties (Thuộc tính).

ed857a5134148d7b.png

  1. Điền vào trường bắt buộc. Đặt các trường sau:
  • Nhãn = {mọi văn bản}
  • Tên tham chiếu = {any text}
  • Mã dự án = tự động phát hiện
  • Subscription = Gói thuê bao được tạo trong phần Tạo chủ đề Pub/Sub (ví dụ: your-sub)
  • Topic = Chủ đề được tạo trong phần Tạo chủ đề Pub/Sub (ví dụ: your-topic)
  1. Nhấp vào Tài liệu để xem nội dung giải thích chi tiết. Nhấp vào nút Xác thực để xác thực tất cả thông tin đầu vào. Màu xanh lục "Không tìm thấy lỗi" cho biết bạn đã thành công.

5c2774338b66bebe.png

  1. Để đóng phần Pub/Sub Properties (Thuộc tính Pub/Sub), hãy nhấp vào nút X.

Chọn nút Biến đổi.

  1. Trong mục Transform (Biến đổi) trong bảng điều khiển Plugin (Trình bổ trợ) ở bên trái, hãy nhấp đúp vào nút Projection (Phép chiếu) xuất hiện trong giao diện người dùng Data Pipelines (Quy trình dữ liệu). Kết nối nút nguồn Pub/Sub với nút biến đổi Phép chiếu.
  2. Trỏ đến nút Projection (Phép chiếu) rồi nhấp vào Properties (Thuộc tính).

b3a9a3878879bfd7.png

  1. Điền vào trường bắt buộc. Đặt các trường sau:
  • Convert = chuyển đổi message từ loại byte sang loại chuỗi.
  • Các trường cần loại bỏ = {bất kỳ trường nào}
  • Các trường cần giữ lại = {message, timestampattributes} (ví dụ: attributes: key=‘filename':value=‘patients' được gửi từ Pub/Sub)
  • Các trường cần đổi tên = {message, timestamp}
  1. Nhấp vào Tài liệu để xem nội dung giải thích chi tiết. Nhấp vào nút Xác thực để xác thực tất cả thông tin đầu vào. Màu xanh lục "Không tìm thấy lỗi" cho biết thành công.

b8c2f8efe18234ff.png

  1. Trong mục Transform (Biến đổi) trong bảng Plugin (Trình bổ trợ) ở bên trái, hãy nhấp đúp vào nút Wrangler (Người sắp xếp) xuất hiện trong giao diện người dùng Data Pipelines (Quy trình dữ liệu). Kết nối nút Projection transform (Biến đổi phép chiếu) với nút Wrangler transform (Biến đổi Wrangler). Trỏ đến nút Wrangler rồi nhấp vào Properties (Thuộc tính).

aa44a4db5fe6623a.png

  1. Nhấp vào trình đơn thả xuống Hành động rồi chọn Nhập để nhập một giản đồ đã lưu (ví dụ: gs://hcls_testing_data_fhir_10_patients/csv_schemas/ schema (Patients).json).
  2. Thêm trường TIMESTAMP vào Output Schema (nếu trường này chưa tồn tại) bằng cách nhấp vào nút + bên cạnh trường cuối cùng và đánh dấu vào ô "Null".
  3. Điền vào trường bắt buộc. Đặt các trường sau:
  • Nhãn = {mọi văn bản}
  • Tên trường nhập dữ liệu = {*}
  • Điều kiện tiên quyết = {attributes.get("filename") != "patients"} để phân biệt từng loại bản ghi hoặc thông báo (ví dụ: bệnh nhân, nhà cung cấp, dị ứng, v.v.) được gửi từ nút nguồn PubSub.
  1. Nhấp vào Tài liệu để xem nội dung giải thích chi tiết. Nhấp vào nút Xác thực để xác thực tất cả thông tin đầu vào. Màu xanh lục "Không tìm thấy lỗi" cho biết thành công.

3b8e552cd2e3442c.png

  1. Đặt tên cột theo thứ tự ưu tiên và thả các trường bạn không cần. Sao chép đoạn mã sau và dán vào hộp Công thức.
drop attributes
parse-as-csv :body ',' false
drop body
set columns TIMESTAMP,Id,BIRTHDATE,DEATHDATE,SSN,DRIVERS,PASSPORT,PREFIX,FIRST,LAST,SUFFIX,MAIDEN,MARITAL,RACE,ETHNICITY,GENDER,BIRTHPLACE,ADDRESS,CITY,STATE,ZIP
mask-number SSN xxxxxxx####

b93cb9952ca2de73.png

  1. Tham khảo Batch-Codelab – CSV sang BigQuery thông qua CDF để biết cách che giấu và loại bỏ thông tin nhận dạng dữ liệu. Hoặc thêm đoạn mã mask-number SSN xxxxxxx#### này vào hộp Công thức
  2. Để đóng cửa sổ Transform Properties (Thuộc tính biến đổi), hãy nhấp vào nút X.

Chọn nút Sink.

  1. Trong phần Sink (Nguồn nhận) trong bảng điều khiển Plugin (Trình bổ trợ) ở bên trái, hãy nhấp đúp vào nút BigQuery xuất hiện trong giao diện người dùng Data Pipeline (Quy trình dữ liệu). Kết nối nút biến đổi Wrangler với nút đích BigQuery.
  2. Trỏ đến nút đích BigQuery rồi nhấp vào Properties (Thuộc tính).

1be711152c92c692.png

  1. Điền thông tin vào các trường bắt buộc:
  • Nhãn = {mọi văn bản}
  • Tên tham chiếu = {any text}
  • Mã dự án = tự động phát hiện
  • Tập dữ liệu = Tập dữ liệu BigQuery được dùng trong dự án hiện tại (ví dụ: DATASET_ID)
  • Table = {table name}
  1. Nhấp vào Tài liệu để xem nội dung giải thích chi tiết. Nhấp vào nút Xác thực để xác thực tất cả thông tin đầu vào. Màu xanh lục "Không tìm thấy lỗi" cho biết thành công.

bba71de9f31e842a.png

  1. Để đóng BigQuery Properties, hãy nhấp vào nút X.

5. Xây dựng quy trình truyền dữ liệu theo thời gian thực

Trong phần trước, chúng ta đã tạo các nút cần thiết để xây dựng quy trình dữ liệu trong Cloud Data Fusion. Trong phần này, chúng ta sẽ kết nối các nút để tạo quy trình thực tế.

Kết nối tất cả các nút trong một quy trình

  1. Kéo một mũi tên kết nối > trên cạnh phải của nút nguồn và thả vào cạnh trái của nút đích.
  2. Một quy trình có thể có nhiều nhánh nhận thông báo được xuất bản từ cùng một nút Nguồn PubSub.

b22908cc35364cdd.png

  1. Đặt tên cho quy trình.

Vậy là xong. Bạn vừa tạo quy trình dữ liệu theo thời gian thực đầu tiên để triển khai và chạy.

Gửi tin nhắn thông qua Cloud Pub/Sub

Sử dụng giao diện người dùng Pub/Sub:

  1. Chuyển đến bảng điều khiển GCP -> Pub/Sub -> Topics (Chủ đề), chọn your-topic (chủ đề của bạn), sau đó nhấp vào PUBLISH MESSAGE (XUẤT BẢN THÔNG BÁO) ở trình đơn trên cùng.

d65b2a6af1668ecd.png

  1. Mỗi lần, bạn chỉ đặt một hàng bản ghi vào trường Message (Tin nhắn). Nhấp vào nút +THÊM MỘT THUỘC TÍNH. Cung cấp Khoá = filename, Giá trị = <type of record> (ví dụ: bệnh nhân, nhà cung cấp dịch vụ, dị ứng, v.v.).
  2. Nhấp vào nút Xuất bản để gửi thông báo.

Sử dụng lệnh gcloud:

  1. Cung cấp thông báo theo cách thủ công.
gcloud pubsub topics publish <your-topic> --attribute <key>=<value> --message \
"paste one record row here"
  1. Cung cấp thông báo bán tự động bằng cách sử dụng các lệnh unix catsed. Bạn có thể chạy lệnh này nhiều lần với các tham số khác nhau.
gcloud pubsub topics publish <your-topic> --attribute <key>=<value> --message \
"$(gsutil cat gs://$BUCKET_NAME/csv/<value>.csv | sed -n '#p')"

6. Định cấu hình, triển khai và chạy quy trình

Giờ đây, sau khi phát triển quy trình dữ liệu, chúng ta có thể triển khai và chạy quy trình đó trong Cloud Data Fusion.

1bb5b0b8e2953ffa.png

  1. Giữ nguyên chế độ mặc định Định cấu hình.
  2. Nhấp vào Xem trước để xem trước dữ liệu**.** Nhấp lại vào **Xem trước** để chuyển về cửa sổ trước đó. Bạn cũng có thể chạy quy trình ở chế độ Xem trước bằng cách nhấp vào **CHẠY**.

b3c891e5e1aa20ae.png

  1. Nhấp vào Nhật ký để xem nhật ký.
  2. Nhấp vào Lưu để lưu tất cả thay đổi.
  3. Nhấp vào Nhập để nhập cấu hình quy trình đã lưu khi tạo quy trình mới.
  4. Nhấp vào Xuất để xuất cấu hình quy trình.
  5. Nhấp vào Triển khai để triển khai quy trình.
  6. Sau khi triển khai, hãy nhấp vào Chạy và đợi quy trình chạy xong.

f01ba6b746ba53a.png

  1. Nhấp vào Dừng để dừng quá trình chạy quy trình bất cứ lúc nào.
  2. Bạn có thể sao chép quy trình bằng cách chọn Sao chép trong nút Thao tác.
  3. Bạn có thể xuất cấu hình quy trình bằng cách chọn Xuất trong nút Hành động.

28ea4fc79445fad2.png

  1. Nhấp vào Tóm tắt để hiện biểu đồ về Nhật ký chạy, bản ghi, nhật ký lỗi và cảnh báo.

7. Xác thực

Trong phần này, chúng ta sẽ xác thực việc thực thi quy trình dữ liệu.

  1. Xác thực rằng quy trình đã được thực thi thành công và đang chạy liên tục.

1644dfac4a2d819d.png

  1. Xác thực rằng các bảng BigQuery được tải bằng các bản ghi đã cập nhật dựa trên DẤU THỜI GIAN. Trong ví dụ này, 2 bản ghi hoặc thông báo về bệnh nhân và 1 bản ghi hoặc thông báo về dị ứng đã được xuất bản vào chủ đề Pub/Sub vào ngày 25/06/2019.
bq query --nouse_legacy_sql 'select (select count(*) from \
'$PROJECT_ID.$DATASET_ID.Patients'  where TIMESTAMP > "2019-06-25 \
01:29:00.0000 UTC" ) as Patients, (select count(*) from \
'$PROJECT_ID.$DATASET_ID.Allergies' where TIMESTAMP > "2019-06-25 \
01:29:00.0000 UTC") as Allergies;'
Waiting on bqjob_r14c8b94c1c0fe06a_0000016b960df4e1_1 ... (0s) Current status: DONE  
+----------+-----------+
| Patients | Allergies |
+----------+-----------+
|        2 |         1 |
+----------+-----------+
  1. Xác thực rằng người đăng ký <your-sub> đã nhận được các thông báo được xuất bản cho <your-topic>.
gcloud pubsub subscriptions pull --auto-ack <your-sub>

4cae99a9e4f2ec9f.png

Xem kết quả

Để xem kết quả sau khi thông báo được xuất bản lên chủ đề Pub/Sub trong khi quy trình Thời gian thực đang chạy, hãy làm như sau:

  1. Truy vấn bảng trong giao diện người dùng BigQuery. CHUYỂN ĐẾN GIAO DIỆN NGƯỜI DÙNG BIGQUERY
  2. Cập nhật truy vấn bên dưới thành tên dự án, tập dữ liệu và bảng của riêng bạn.

6a1fb85bd868abc9.png

8. Dọn dẹp

Để tránh bị tính phí cho tài khoản Google Cloud Platform đối với các tài nguyên được dùng trong hướng dẫn này, hãy làm như sau:

Sau khi hoàn thành hướng dẫn, bạn có thể dọn dẹp các tài nguyên mà bạn đã tạo trên GCP để chúng không chiếm hạn mức và bạn sẽ không bị tính phí cho các tài nguyên đó trong tương lai. Các phần sau đây mô tả cách xoá hoặc tắt các tài nguyên này.

Xoá tập dữ liệu BigQuery

Hãy làm theo các hướng dẫn này để xoá tập dữ liệu BigQuery mà bạn đã tạo trong hướng dẫn này.

Xoá bộ chứa GCS

Làm theo hướng dẫn sau để xoá vùng chứa GCS mà bạn đã tạo trong hướng dẫn này.

Xoá phiên bản Cloud Data Fusion

Hãy làm theo hướng dẫn này để xoá phiên bản Cloud Data Fusion.

Xoá dự án

Cách dễ nhất để không bị tính phí là xoá dự án mà bạn đã tạo cho hướng dẫn này.

Cách xoá dự án:

  1. Trong Bảng điều khiển của GCP, hãy chuyển đến trang Dự án. CHUYỂN ĐẾN TRANG DỰ ÁN
  2. Trong danh sách dự án, hãy chọn dự án bạn muốn xoá rồi nhấp vào Xoá.
  3. Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.

9. Xin chúc mừng

Xin chúc mừng, bạn đã hoàn tất thành công lớp học lập trình về cách nhập dữ liệu chăm sóc sức khoẻ vào BigQuery bằng Cloud Data Fusion.

Bạn đã xuất bản dữ liệu CSV vào chủ đề Pub/Sub rồi tải vào BigQuery.

Bạn đã tạo trực quan một quy trình tích hợp dữ liệu để tải, chuyển đổi và che giấu dữ liệu chăm sóc sức khoẻ theo thời gian thực.

Giờ đây, bạn đã biết các bước chính cần thiết để bắt đầu hành trình Phân tích dữ liệu y tế bằng BigQuery trên Google Cloud Platform.