1. Giới thiệu

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 hàng loạt. Chúng ta sẽ sử dụng quy trình xử lý dữ liệu hàng loạt 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 lịch theo lô) từ GCS 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 hàng loạt dữ liệu chăm sóc sức khoẻ.
Bạn cần những gì để chạy lớp học lập trình này?
- Bạn cần có quyền truy cập vào một Dự án trên Google Cloud Platform (GCP).
- Bạn phải được chỉ định vai trò Chủ sở hữu cho Dự án GCP.
- 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 CSV tài nguyên có 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ừ nhóm ở bước Sao chép dữ liệu đầu vào.
2. Thiết lập dự án GCP
Khởi chạy 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 vùng chứa 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.
- 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.
- Bạn sẽ nhận được email hướng dẫn cách xác nhận hành động này.

- Sử dụng lựa chọn trả lời email để tham gia nhóm. KHÔNG nhấp vào nút đó.
- 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
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.
- Chuyển đến Thư viện API của Bảng điều khiển GCP.
- Trong danh sách dự án, hãy chọn dự án của bạn.
- Trong Thư viện API, hãy chọn API mà bạn muốn bật. Nếu bạn cần trợ giúp tìm API, hãy sử dụng trường tìm kiếm và/hoặc bộ lọc.
- Trên trang API, hãy nhấp vào BẬT.
Tạo một phiên bản Cloud Data Fusion.
- Trong Bảng điều khiển GCP, hãy chọn ProjectID của bạn.
- 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).


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

- 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:
- 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.

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

- Chuyển đến trang IAM của dự án.
- Trên trang quyền IAM, giờ đây, chúng ta sẽ thêm tài khoản dịch vụ làm thành viên mới và cấp cho tài khoản đó vai trò Tài khoản dịch vụ API Cloud Data Fusion. Nhấp vào nút Thêm, sau đó 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.

- 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.
- 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.

- 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:


4. Tạo một giản đồ để chuyển đổi
Giờ đây, khi đã có môi trường Cloud Fusion trong GCP, hãy tạo một giản đồ. Chúng tôi cần giản đồ này để chuyển đổi dữ liệu CSV.
- 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.
- Mở rộng trình đơn "hamburger", chọn Pipeline (Quy trình) -> Studio

- 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. Nút này sẽ xuất hiện trong giao diện người dùng Data Pipelines (Quy trình dữ liệu).

- Trỏ đến nút Wrangler rồi nhấp vào Properties (Thuộc tính). Nhấp vào nút Wrangle (Sắp xếp), sau đó chọn một tệp nguồn .csv (ví dụ: patients.csv). Tệp này phải có tất cả các trường dữ liệu để tạo lược đồ mong muốn.
- Nhấp vào Mũi tên xuống (Biến đổi cột) bên cạnh mỗi tên cột (ví dụ: nội dung).

- Theo mặc định, lần nhập ban đầu sẽ giả định rằng tệp dữ liệu của bạn chỉ có một cột. Để phân tích cú pháp dưới dạng tệp CSV, hãy chọn Phân tích cú pháp → CSV, sau đó chọn dấu phân cách và đánh dấu vào hộp "Đặt hàng đầu tiên làm tiêu đề" nếu thích hợp. Nhấp vào nút Áp dụng.
- Nhấp vào mũi tên xuống bên cạnh trường Nội dung, chọn Xoá cột để xoá trường Nội dung. Ngoài ra, bạn có thể thử các phép biến đổi khác, chẳng hạn như xoá cột, thay đổi kiểu dữ liệu cho một số cột (mặc định là kiểu "chuỗi"), chia cột, đặt tên cột, v.v.

- Thẻ "Cột" và "Các bước chuyển đổi" cho biết lược đồ đầu ra và công thức của Wrangler. Nhấp vào Áp dụng ở góc trên bên phải. Nhấp vào nút Xác thực. Màu xanh lục "Không phát hiện thấy lỗi" cho biết bạn đã thành công.

- Trong Wrangler Properties, hãy nhấp vào trình đơn thả xuống Actions (Hành động) để Export (Xuất) giản đồ mong muốn vào bộ nhớ cục bộ của bạn để Import (Nhập) trong tương lai nếu cần.
- Lưu Công thức Wrangler để sử dụng sau này.
parse-as-csv :body ',' true drop body
- Để đóng cửa sổ Wrangler Properties (Thuộc tính của Wrangler), hãy nhấp vào nút X.
5. Tạo các nút cho quy trình
Trong phần này, chúng ta sẽ tạo các thành phần của quy trình.
- Trong giao diện người dùng Data Pipelines, ở phía trên bên trái, bạn sẽ thấy rằng Data Pipeline – Batch (Quy trình xử lý dữ liệu – Lô) được chọn làm loại quy trình.

- Có nhiều phần 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, Điều kiện và hành động, 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.

Nút nguồn
- Chọn nút Nguồn.
- Trong mục Nguồn trong 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 Storage xuất hiện trong giao diện người dùng của Data Pipelines.
- Trỏ đến nút nguồn GCS rồi nhấp vào Properties (Thuộc tính).

- Đ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
- Đường dẫn = URL GCS đến vùng chứa trong dự án hiện tại của bạn. Ví dụ: gs://$BUCKET_NAME/csv/
- Định dạng = văn bản
- Trường đường dẫn = tên tệp
- Path Filename Only = true
- Read Files Recursively = true
- Thêm trường "filename" vào GCS Output Schema bằng cách nhấp vào nút +.
- Nhấp vào Tài liệu để xem giải thích chi tiết. Nhấp vào nút Xác thực. Màu xanh lục "Không phát hiện thấy lỗi" cho biết bạn đã thành công.
- Để đóng phần GCS Properties (Thuộc tính GCS), hãy nhấp vào nút X.
Biến đổi nút
- Chọn nút Biến đổi.
- 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 xử lý dữ liệ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 GCS với nút biến đổi Wrangler.
- Trỏ đến nút Wrangler rồi nhấp vào Properties (Thuộc tính).
- Nhấp vào trình đơn thả xuống Thao tác 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) và dán công thức đã lưu từ phần trước.
- Hoặc sử dụng lại nút Wrangler trong phần: Tạo một giản đồ để chuyển đổi.
- Điền vào trường bắt buộc. Đặt các trường sau:
- Nhãn = {any text}
- Tên trường nhập dữ liệu = {*}
- Điều kiện tiên quyết = {filename != "patients.csv"} để phân biệt từng tệp đầu vào (ví dụ: patients.csv, providers.csv, allergies.csv, v.v.) với nút Nguồn.

- Thêm một nút JavaScript để thực thi JavaScript do người dùng cung cấp, giúp chuyển đổi thêm các bản ghi. Trong lớp học lập trình này, chúng ta sẽ sử dụng nút JavaScript để lấy dấu thời gian cho mỗi bản cập nhật bản ghi. Kết nối nút biến đổi Wrangler với nút biến đổi JavaScript. Mở Thuộc tính JavaScript rồi thêm hàm sau:

function transform(input, emitter, context) {
input.TIMESTAMP = (new Date()).getTime()*1000;
emitter.emit(input);
}
- Thêm trường có tên là TIMESTAMP vào Giản đồ đầu ra (nếu chưa có) bằng cách nhấp vào dấu +. Chọn dấu thời gian làm loại dữ liệu.

- 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.
- Để đóng cửa sổ Transform Properties (Thuộc tính biến đổi), hãy nhấp vào nút X.
Che giấu dữ liệu và loại bỏ thông tin nhận dạng
- Bạn có thể chọn từng cột dữ liệu bằng cách nhấp vào mũi tên xuống trong cột và áp dụng các quy tắc che giấu theo lựa chọn Che giấu dữ liệu theo yêu cầu của bạn (ví dụ: cột số An sinh xã hội).

- Bạn có thể thêm các Chỉ thị khác trong cửa sổ Công thức của nút Wrangler. Ví dụ: sử dụng chỉ thị băm với thuật toán băm theo cú pháp sau cho mục đích loại bỏ thông tin nhận dạng:
hash <column> <algorithm> <encode> <column>: name of the column <algorithm>: Hashing algorithm (i.e. MD5, SHA-1, etc.) <encode>: default is true (hashed digest is encoded as hex with left-padding zeros). To disable hex encoding, set <encode> to false.

Nút đích
- Chọn nút đích.
- 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. Nút này sẽ xuất hiện trong giao diện người dùng Data Pipeline (Quy trình dữ liệu).
- Trỏ đến nút đích BigQuery rồi nhấp vào Properties (Thuộc tính).

- Điền thông tin vào các 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
- Tập dữ liệu = Tập dữ liệu BigQuery được dùng trong dự án hiện tại (tức là DATASET_ID)
- Table = {table name}
- 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.

- Để đóng BigQuery Properties, hãy nhấp vào nút X.
6. Tạo quy trình xử lý dữ liệu theo lô
Kết nối tất cả các nút trong một quy trình
- 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.
- Một quy trình có thể có nhiều nhánh nhận tệp đầu vào từ cùng một nút Nguồn GCS.

- Đặt tên cho quy trình.
Vậy là xong. Bạn vừa tạo Batch Data Pipeline đầu tiên và có thể triển khai cũng như chạy quy trình này.
Gửi cảnh báo về quy trình qua email (không bắt buộc)
Để sử dụng tính năng SendEmail của Cảnh báo trong quy trình, bạn cần thiết lập một máy chủ thư để gửi thư từ một phiên bản máy ảo. Hãy xem đường liên kết tham khảo bên dưới để biết thêm thông tin:
Gửi email từ một phiên bản | Tài liệu về Compute Engine
Trong lớp học lập trình này, chúng ta sẽ thiết lập một dịch vụ máy chủ chuyển tiếp thư thông qua Mailgun bằng cách làm theo các bước sau:
- Làm theo hướng dẫn tại Gửi email bằng Mailgun | Tài liệu về Compute Engine để thiết lập tài khoản bằng Mailgun và định cấu hình dịch vụ chuyển tiếp email. Dưới đây là những điểm sửa đổi khác.
- Thêm địa chỉ email của tất cả người nhận vào danh sách được uỷ quyền của Mailgun. Bạn có thể tìm thấy danh sách này trong phần Mailgun>Sending>Overview (Mailgun>Gửi>Tổng quan) trên bảng điều khiển bên trái.

Sau khi người nhận nhấp vào "Tôi đồng ý" trong email được gửi từ support@mailgun.net, địa chỉ email của họ sẽ được lưu vào danh sách được uỷ quyền để nhận email cảnh báo về quy trình.

- Bước 3 của phần "Trước khi bắt đầu" – tạo một quy tắc Tường lửa như sau:

- Bước 3 của "Định cấu hình Mailgun làm máy chủ chuyển tiếp thư bằng Postfix". Chọn Internet Site (Trang web trên Internet) hoặc Internet with smarthost (Internet có smarthost), thay vì Local Only (Chỉ cục bộ) như trong hướng dẫn.

- Bước 4 trong phần "Định cấu hình Mailgun làm máy chủ chuyển tiếp thư bằng Postfix". Chỉnh sửa vi /etc/postfix/main.cf để thêm 10.128.0.0/9 vào cuối mynetworks.

- Chỉnh sửa vi /etc/postfix/master.cf để thay đổi smtp mặc định (25) thành cổng 587.

- Ở góc trên bên phải của Data Fusion Studio, hãy nhấp vào Định cấu hình. Nhấp vào Cảnh báo về quy trình rồi nhấp vào nút + để mở cửa sổ Cảnh báo. Chọn SendEmail.

- Điền thông tin vào biểu mẫu cấu hình Email. Chọn hoàn tất, thành công hoặc thất bại trong trình đơn thả xuống Điều kiện chạy cho từng loại cảnh báo. Nếu Include Workflow Token = false, thì chỉ thông tin trong trường Message (Tin nhắn) mới được gửi. Nếu Include Workflow Token = true, thông tin từ trường Message và thông tin chi tiết về Workflow Token sẽ được gửi. Bạn phải sử dụng chữ thường cho Giao thức. Sử dụng bất kỳ email "giả mạo" nào khác ngoài địa chỉ email công ty của bạn cho Người gửi.

7. Định cấu hình, triển khai, chạy/lên lịch cho quy trình

- Ở góc trên bên phải của Data Fusion Studio, hãy nhấp vào Định cấu hình. Chọn Spark cho Engine Config. Nhấp vào Lưu trong cửa sổ Định cấu hình.

- Nhấp vào Xem trước để xem trước dữ liệu** và 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.

- Nhấp vào Nhật ký để xem nhật ký.
- Nhấp vào Lưu để lưu tất cả thay đổi.
- 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.
- Nhấp vào Xuất để xuất cấu hình quy trình.
- Nhấp vào Triển khai để triển khai quy trình.
- Sau khi triển khai, hãy nhấp vào Chạy và đợi quy trình chạy xong.

- Bạn có thể sao chép quy trình bằng cách chọn Sao chép trong nút Hành động.
- 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.
- Nhấp vào Inbound triggers (Trình kích hoạt đầu vào) hoặc Outbound triggers (Trình kích hoạt đầu ra) ở cạnh trái hoặc phải của cửa sổ Studio để đặt trình kích hoạt quy trình (nếu muốn).
- Nhấp vào Lập lịch để lập lịch chạy và tải dữ liệu định kỳ cho quy trình.

- Summary (Tóm tắt) cho thấy các biểu đồ về Nhật ký chạy, bản ghi, nhật ký lỗi và cảnh báo.
8. Xác thực
- Đã thực thi thành công quy trình Xác thực.

- Xác thực xem Tập dữ liệu BigQuery có tất cả các bảng hay không.
bq ls $PROJECT_ID:$DATASET_ID
tableId Type Labels Time Partitioning
----------------- ------- -------- -------------------
Allergies TABLE
Careplans TABLE
Conditions TABLE
Encounters TABLE
Imaging_Studies TABLE
Immunizations TABLE
Medications TABLE
Observations TABLE
Organizations TABLE
Patients TABLE
Procedures TABLE
Providers TABLE
- Nhận email cảnh báo (nếu bạn đã định cấu hình).
Xem kết quả
Cách xem kết quả sau khi quy trình chạy:
- 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
- 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.

9. 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 tất 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 của bạn 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:
- Trong Bảng điều khiển của GCP, hãy chuyển đến trang Dự án. CHUYỂN ĐẾN TRANG DỰ ÁN
- Trong danh sách dự án, hãy chọn dự án bạn muốn xoá rồi nhấp vào Xoá.
- Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.
10. 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 đã nhập dữ liệu CSV từ Google Cloud Storage vào BigQuery.
Bạn đã tạo trực quan quy trình tích hợp dữ liệu để tải, biến đổi và che giấu dữ liệu chăm sóc sức khoẻ hàng loạt.
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.