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

Lần cập nhật gần đây nhất: ngày 28 tháng 02 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ẻ ở định dạng CSV vào BigQuery theo thời gian thực. Chúng tôi 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 xét nghiệm thực tế về hoạt động chăm sóc sức khoẻ đã được tạo và cung cấp trong bộ chứa Google Cloud Storage (gs://hcls_testing_data_fhir_10_patients/csv/) cho bạn.

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 xây dựng quy trình tích hợp dữ liệu một cách trực quan 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 những 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 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 không 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 có một cấu trúc giản đồ duy nhất. Ví dụ: Patients.csv có giản đồ khác với Providers.csv. Bạn có thể tìm thấy các tệp giản đồ được tải trước 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 đó, tải tệp này lên GCS thay vì sao chép tệp từ bộ chứa ở 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 bài viết 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 bộ chứa GCS để lưu trữ dữ liệu đầu vào và nhật ký lỗi bằng công cụ tagmanager.

gsutil mb -l us gs://$BUCKET_NAME

Sử dụng tập dữ liệu tổng hợp.

  1. Từ địa chỉ email 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 một email hướng dẫn cách xác nhận thao tác đó.
  3. Sử dụng lựa chọn này để trả lời email để tham gia nhóm. ĐỪNG nhấp vào nút 525a0fa752e0acae.pngS.
  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 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ủ đề xuất bản hoặc Chủ đề phụ và Gói thuê bao.

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

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 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 bạn muốn bật ( Cloud Data Fusion API,Cloud Pub/Sub API). Nếu bạn cần trợ giúp về cách 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 (mã dự án).
  2. Chọn Data Fusion từ trình đơn bên trái, sau đó nhấp vào nút TẠO MỘT TÌNH TRẠNG ở giữa trang (tạo thành phần đầu tiên) hoặc nhấp vào nút TẠO TÌNH TRẠNG ở 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 Enterprise.

5af91e46917260ff.pngS

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

Thiết lập quyền thực thể.

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

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

76ad691f795e1ab3.pngS

  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ò Cloud Data Fusion API Service Agent (Nhân viên hỗ trợ dịch vụ Cloud Data Fusion API) bằng cách nhấp vào nút Add (Thêm). Dán "tài khoản dịch vụ" trong trường Thành viên mới và chọn Quản lý dịch vụ -> Vai trò Tác nhân máy chủ Cloud Data Fusion API.

36f03d11c2a4ce0.pngS

  1. Nhấp vào + Thêm vai trò khác (hoặc Chỉnh sửa nhân viên hỗ trợ dịch vụ Cloud Data Fusion API) để 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 các phiên bản Cloud Data Fusion hoặc trang chi tiết về 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 -> Các quy tắc về tường lửa để kiểm tra xem quy tắc mặc định-allow-ssh có tồn tại hay không.

102adef44bbe3a45.png.

  1. Nếu không, hãy thêm quy tắc tường lửa để cho phép tất cả lưu lượng truy cập SSH 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 tường lửa) rồi điền thông tin:

d9c69ac10496b3d9.png

2dc4971594b82a1f.png.

4. Xây dựng các nút cho quy trình

Giờ đây, khi 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. Nhấp vào "Bắt đầu tham quan" theo ý bạn hoặc "Không, cảm ơn" trên cửa sổ bật lên Chào mừng.
  2. Mở rộng biểu tượng "hamburger" trình đơn, chọn Pipeline -> (Quy trình) -> Danh sách

317820def934a00a.png.

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

711975bb2c2416d7.pngS

3ec0a71409657fb8.pngS

  1. Khi Studio quy trình xuất hiện, ở phía trên bên trái, hãy chọn Quy trình dữ liệu – Thời gian thực trong trình đơn thả xuống.

372a889a81da5e66.pngS

  1. Trong giao diện người dùng Quy trình dữ liệu, bạn sẽ thấy các phần khác nhau trên bảng điều khiển bên trái dưới dạng Bộ lọc, Nguồn, Chuyển đổi, Số liệu phân tích, Bồn lưu trữ, Trình xử lý lỗi và Cảnh báo. 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 Source (Nguồn) trên bảng Plugin ở bên trái, hãy nhấp đúp vào nút Google Cloud PubSub. Nút này xuất hiện trong giao diện người dùng Quy trình dữ liệu (Data Pipelines).
  2. Trỏ đến 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 = {văn bản bất kỳ}
  • 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)
  • Chủ đề = Chủ đề đã tạo trong mục Tạo chủ đề Pub/Sub (ví dụ: chủ đề của bạn)
  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 nhập. Màu xanh lục "Không tìm thấy lỗi" biểu thị thành công.

5c2774338b66bebe.png.

  1. Để đóng 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 Chuyển đổi trong bảng Trình bổ trợ ở bên trái, hãy nhấp đúp vào nút Projection (Chiếu), xuất hiện trong giao diện người dùng Quy trình dữ liệu. Kết nối nút nguồn Pub/Sub với nút biến đổi Projection.
  2. Trỏ tới nút Projection (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. Thiết lập các trường sau:
  • Chuyển đổi = chuyển đổi thông báo từ loại byte thành loại chuỗi.
  • Các trường cần thả = {bất kỳ trường nào}
  • Các trường cần giữ lại = {message, timestampattribute} (ví dụ: thuộc tính: 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 nhập. Màu xanh lục "Không tìm thấy lỗi" biểu thị thành công.

b8c2f8efe18234ff.png

  1. Trong mục Chuyển đổi trong bảng trình bổ trợ ở bên trái, hãy nhấp đúp vào nút Wrangler, xuất hiện trong giao diện người dùng Quy trình dữ liệu. Kết nối nút biến đổi Projection với nút 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 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_Schema/ giản đồ (Patients).json).
  2. Thêm trường TIMESTAMP trong Giản đồ đầu ra (nếu không 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à chọn "Null" .
  3. Điền vào trường bắt buộc. Đặt các trường sau:
  • Nhãn = {văn bản bất kỳ}
  • 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ịch vụ, 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 nhập. Màu xanh lục "Không tìm thấy lỗi" biểu thị 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 đây rồi 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. Hãy tham khảo Batch-Codelab – CSV sang BigQuery qua CDF để che giấu dữ liệu và loại bỏ thông tin nhận dạng. Hoặc thêm đoạn mã này số mặt nạ SSN xxxxxxx#### vào hộp Công thức
  2. Để đóng cửa sổ Chuyển đổi thuộc tính, nhấp vào nút X.

Chọn nút Bồn lưu trữ dữ liệu.

  1. Trong mục Bồn lưu trữ dữ liệu trong bảng 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 Quy trình dữ liệu. Kết nối nút biến đổi Wrangler với nút bồn lưu trữ dữ liệu BigQuery.
  2. Trỏ đến nút bồn lưu trữ dữ liệu BigQuery và nhấp vào Thuộc tính.

1be711152c92c692.pngS

  1. Điền vào các trường bắt buộc:
  • Nhãn = {văn bản bất kỳ}
  • 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 sử dụng trong dự án hiện tại (ví dụ: DATASET_ID)
  • Bảng = {tên bảng}
  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 nhập. Màu xanh lục "Không tìm thấy lỗi" biểu thị thành công.

bba71de9f31e842a.png

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

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

Trong phần trước, chúng ta đã tạo các nút bắt buộc để 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 để xây dựng 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ũi tên kết nối > ở cạnh phải của nút nguồn và thả xuống ở cạnh bên 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 đã 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 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 -> Xuất bản/Đăng ký -> Chủ đề, chọn chủ đề của bạn, rồi nhấp vào XUẤT BẢN TIN NHẮN ở trình đơn trên cùng.

d65b2a6af1668ecd.png

  1. Mỗi lần chỉ đặt một hàng bản ghi trong trường Tin nhắn. Nhấp vào nút +THÊM ĐẶC ĐIỂM. Cung cấp khoá = filename, Giá trị = <type of record> (ví dụ: bệnh nhân, nhà cung cấp dịch vụ y tế, chất 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 tin nhắn theo cách thủ công.
gcloud pubsub topics publish <your-topic> --attribute <key>=<value> --message \
"paste one record row here"
  1. Bán tự động đưa ra thông báo bằng lệnh catsed trong Unix. Lệnh này có thể chạ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, khi đã phát triển quy trình dữ liệu, chúng tôi có thể triển khai và chạy quy trình này trong Cloud Data Fusion.

1bb5b0b8e2953ffa.pngS

  1. Giữ nguyên các giá trị mặc định Định cấu hình.
  2. Nhấp vào Xem trước để xem trước dữ liệu**.** Nhấp vào **Xem trước** lần nữa để quay lại 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ả cá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 Export (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 Run (Chạy) và đợi quy trình chạy hoàn tất.

f01ba6b746ba53a.png

  1. Nhấp vào Dừng để ngừng 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 Thao tác.

28ea4fc79445fad2.png.

  1. Nhấp vào Tóm tắt để xem 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à chạy liên tục.

1644dfac4a2d819d.png.

  1. Xác thực rằng các bảng BigQuery được tải với các bản ghi đã cập nhật dựa trên TIMESTAMP. Trong ví dụ này, hai hồ sơ hoặc thông báo của bệnh nhân và một hồ sơ dị ứng hoặc thông báo đã được xuất bản lên 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 các thông báo được xuất bản lên <chủ đề của bạn> do <your-sub> nhận được người đăng ký.
gcloud pubsub subscriptions pull --auto-ack <your-sub>

4cae99a9e4f2ec9f.png.

Xem kết quả

Cách 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 Theo thời gian thực đang chạy:

  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, tập dữ liệu và bảng của dự án của bạn.

6a1fb85bd868abc9.pngs

8. Dọn dẹp

Để tránh phát sinh phí vào tài khoản Google Cloud Platform của bạn cho các tài nguyên được sử dụng trong hướng dẫn này:

Sau khi xem xong phần 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 những tài nguyên này.

Xoá tập dữ liệu BigQuery

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

Xoá bộ chứa GCS

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

Xoá thực thể Cloud Data Fusion

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

Xoá dự án

Cách dễ nhất để loại bỏ việc thanh toán là xoá dự án bạn đã tạo cho phần hướng dẫn.

Cách xoá dự án:

  1. Trong Bảng điều khiển 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 mà bạn muốn xoá rồi nhấp vào Delete (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 để 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 lên chủ đề Pub/Sub, rồi tải vào BigQuery.

Bạn đã xây dựng một quy trình tích hợp dữ liệu một cách trực quan để 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 trong lĩnh vực chăm sóc sức khoẻ bằng BigQuery trên Google Cloud Platform.