1. Pengantar

Terakhir Diperbarui: 28-02-2020
Codelab ini menunjukkan pola penyerapan data untuk menyerap data layanan kesehatan berformat CSV ke BigQuery secara massal. Kita akan menggunakan pipeline Data Batch Cloud Data Fusion untuk lab ini. Data pengujian layanan kesehatan yang realistis telah dibuat dan tersedia di bucket Google Cloud Storage (gs://hcls_testing_data_fhir_10_patients/csv/) untuk Anda.
Dalam codelab ini, Anda akan mempelajari:
- Cara menyerap data CSV (pemuatan terjadwal batch) dari GCS ke BigQuery menggunakan Cloud Data Fusion.
- Cara membuat pipeline integrasi data secara visual di Cloud Data Fusion untuk memuat, mengubah, dan menyamarkan data layanan kesehatan secara massal.
Apa yang Anda butuhkan untuk menjalankan codelab ini?
- Anda memerlukan akses ke Project GCP.
- Anda harus diberi peran Pemilik untuk Project GCP.
- Data layanan kesehatan dalam format CSV, termasuk header.
Jika Anda tidak memiliki Project GCP, ikuti langkah-langkah ini untuk membuat Project GCP baru.
Data kesehatan dalam format CSV telah dimuat sebelumnya ke bucket GCS di gs://hcls_testing_data_fhir_10_patients/csv/. Setiap file CSV resource memiliki struktur skema yang unik. Misalnya, Patients.csv memiliki skema yang berbeda dengan Providers.csv. File skema yang telah dimuat sebelumnya dapat ditemukan di gs://hcls_testing_data_fhir_10_patients/csv_schemas.
Jika memerlukan set data baru, Anda dapat membuatnya kapan saja menggunakan SyntheaTM. Kemudian, upload ke GCS, bukan menyalinnya dari bucket pada langkah Menyalin data input.
2. Penyiapan Project GCP
Lakukan inisialisasi variabel shell untuk lingkungan Anda.
Untuk menemukan PROJECT_ID, lihat Mengidentifikasi project.
<!-- 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>
Buat bucket GCS untuk menyimpan data input dan log error menggunakan alat gsutil.
gsutil mb -l us gs://$BUCKET_NAME
Dapatkan akses ke set data sintetis.
- Dari alamat email yang Anda gunakan untuk login ke Konsol Cloud, kirim email ke hcls-solutions-external+subscribe@google.com untuk meminta bergabung.
- Anda akan menerima email berisi petunjuk tentang cara mengonfirmasi tindakan tersebut.

- Gunakan opsi untuk membalas email guna bergabung dengan grup. JANGAN klik tombol tersebut.
- Setelah menerima email konfirmasi, Anda dapat melanjutkan ke langkah berikutnya dalam codelab.
Menyalin data input.
gsutil -m cp -r gs://hcls_testing_data_fhir_10_patients/csv gs://$BUCKET_NAME
Buat Set Data BigQuery.
bq mk --location=us --dataset $PROJECT_ID:$DATASET_ID
3. Penyiapan Lingkungan Cloud Data Fusion
Ikuti langkah-langkah berikut untuk mengaktifkan Cloud Data Fusion API dan memberikan izin yang diperlukan:
Aktifkan API.
- Buka Library API Konsol GCP.
- Dari daftar project, pilih project Anda.
- Di Library API, pilih API yang ingin Anda aktifkan. Jika Anda memerlukan bantuan untuk menemukan API, gunakan kolom penelusuran dan/atau filter.
- Di halaman API, klik AKTIFKAN.
Buat instance Cloud Data Fusion.
- Di Konsol GCP, pilih ProjectID Anda.
- Pilih Penggabungan Data dari menu kiri, lalu klik tombol BUAT INSTANS di tengah halaman (pembuatan pertama), atau klik tombol BUAT INSTANS di menu atas (pembuatan tambahan).


- Berikan nama instance. Pilih Enterprise.

- Klik tombol BUAT.
Siapkan izin instance.
Setelah membuat instance, gunakan langkah-langkah berikut untuk memberikan izin akun layanan yang terkait dengan instance pada project Anda:
- Buka halaman detail instance dengan mengklik nama instance.

- Salin akun layanan.

- Buka Halaman IAM project Anda.
- Di halaman izin IAM, kita akan menambahkan akun layanan sebagai anggota baru dan memberikan peran Cloud Data Fusion API Service Agent kepadanya. Klik tombol Add, lalu tempelkan "akun layanan" di kolom New members dan pilih peran Service Management -> Cloud Data Fusion API Server Agent.

- Klik Simpan.
Setelah langkah-langkah ini selesai, Anda dapat mulai menggunakan Cloud Data Fusion dengan mengklik link Lihat Instance di halaman instance Cloud Data Fusion, atau halaman detail instance.
Siapkan aturan firewall.
- Buka GCP Console -> VPC Network -> Firewall rules untuk memeriksa apakah aturan default-allow-ssh ada atau tidak.

- Jika tidak, tambahkan aturan firewall yang mengizinkan semua traffic SSH masuk ke jaringan default.
Menggunakan command line:
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
Menggunakan UI: Klik Buat Aturan Firewall dan isi informasi:


4. Membangun Skema untuk transformasi
Setelah memiliki lingkungan Cloud Fusion di GCP, mari kita buat skema. Kita memerlukan skema ini untuk transformasi data CSV.
- Di jendela Cloud Data Fusion, klik link Lihat Instance di kolom Tindakan. Anda akan dialihkan ke halaman lain. Klik URL yang diberikan untuk membuka instance Cloud Data Fusion. Pilihan Anda untuk mengklik tombol "Mulai Tur" atau "Tidak, Terima Kasih" di jendela pop-up Selamat Datang.
- Perluas menu "hamburger", pilih Pipeline -> Studio

- Di bagian Transform pada palet Plugin di sebelah kiri, klik dua kali pada node Wrangler, yang akan muncul di UI Data Pipelines.

- Arahkan kursor ke node Wrangler, lalu klik Properties. Klik tombol Atur, lalu pilih file sumber .csv (misalnya, patients.csv), yang harus memiliki semua kolom data untuk membuat skema yang diinginkan.
- Klik Panah bawah (Transformasi Kolom) di samping setiap nama kolom (misalnya, body).

- Secara default, impor awal akan mengasumsikan hanya ada satu kolom dalam file data Anda. Untuk menguraikannya sebagai CSV, pilih Parse → CSV, lalu pilih pemisah dan centang kotak "Set first row as header" sesuai kebutuhan. Klik tombol Terapkan.
- Klik panah bawah di samping kolom Isi, pilih Hapus Kolom untuk menghapus kolom Isi. Selain itu, Anda dapat mencoba transformasi lain seperti menghapus kolom, mengubah jenis data untuk beberapa kolom (defaultnya adalah jenis "string"), memisahkan kolom, menetapkan nama kolom, dll.

- Tab "Kolom" dan "Langkah-langkah transformasi" menampilkan skema output dan resep Wrangler. Klik Terapkan di pojok kanan atas. Klik tombol Validasi. "Tidak ada error" berwarna hijau menunjukkan keberhasilan.

- Di Properti Wrangler, klik dropdown Tindakan untuk Mengekspor skema yang diinginkan ke penyimpanan lokal Anda untuk Impor di masa mendatang jika diperlukan.
- Simpan Resep Wrangler untuk penggunaan di masa mendatang.
parse-as-csv :body ',' true drop body
- Untuk menutup jendela Wrangler Properties, klik tombol X.
5. Membangun node untuk pipeline
Di bagian ini, kita akan membuat komponen pipeline.
- Di UI Data Pipelines, di kiri atas, Anda akan melihat bahwa Data Pipeline - Batch dipilih sebagai jenis pipeline.

- Ada berbagai bagian di panel kiri seperti Filter, Sumber, Transformasi, Analytics, Sink, Kondisi dan Tindakan, Penanganan Error, dan Pemberitahuan tempat Anda dapat memilih satu atau beberapa node untuk pipeline.

Source node
- Pilih node Sumber.
- Di bagian Source pada palet Plugin di sebelah kiri, klik dua kali node Google Cloud Storage, yang muncul di UI Data Pipelines.
- Arahkan kursor ke node sumber GCS, lalu klik Properties.

- Isi bidang yang diperlukan. Tetapkan kolom berikut:
- Label = {any text}
- Nama referensi = {any text}
- Project ID = deteksi otomatis
- Path = URL GCS ke bucket di project Anda saat ini. Misalnya, gs://$BUCKET_NAME/csv/
- Format = text
- Path Field = filename
- Path Filename Only = true
- Read Files Recursively = true
- Tambahkan kolom 'filename' ke Skema Output GCS dengan mengklik tombol +.
- Klik Dokumentasi untuk penjelasan mendetail. Klik tombol Validasi. "Tidak ada error" berwarna hijau menunjukkan keberhasilan.
- Untuk menutup Properti GCS, klik tombol X.
Transformasikan node
- Pilih node Transform.
- Di bagian Transformasi pada palet Plugin di sebelah kiri, klik dua kali node Wrangler, yang muncul di UI Data Pipelines. Hubungkan node sumber GCS ke node transformasi Wrangler.
- Arahkan kursor ke node Wrangler, lalu klik Properties.
- Klik drop-down Actions, lalu pilih Import untuk mengimpor skema yang disimpan (misalnya: gs://hcls_testing_data_fhir_10_patients/csv_schemas/ schema (Patients).json), lalu tempel resep yang disimpan dari bagian sebelumnya.
- Atau, gunakan kembali node Wrangler dari bagian: Membangun skema untuk transformasi.
- Isi bidang yang diperlukan. Tetapkan kolom berikut:
- Label = {any text}
- Nama kolom input = {*}
- Kondisi Prasyarat = {filename != "patients.csv"} untuk membedakan setiap file input (misalnya, patients.csv, providers.csv, allergies.csv, dll.) dari node Sumber.

- Tambahkan node JavaScript untuk menjalankan JavaScript yang disediakan pengguna yang selanjutnya mentransformasi kumpulan data. Dalam codelab ini, kita akan menggunakan node JavaScript untuk mendapatkan stempel waktu untuk setiap pembaruan data. Hubungkan node transformasi Wrangler ke node transformasi JavaScript. Buka Properties JavaScript, dan tambahkan fungsi berikut:

function transform(input, emitter, context) {
input.TIMESTAMP = (new Date()).getTime()*1000;
emitter.emit(input);
}
- Tambahkan kolom bernama TIMESTAMP ke Skema Output (jika tidak ada) dengan mengklik tanda +. Pilih stempel waktu sebagai jenis data.

- Klik Dokumentasi untuk penjelasan mendetail. Klik tombol Validasi untuk memvalidasi semua informasi input. "Tidak ada error" berwarna hijau menunjukkan keberhasilan.
- Untuk menutup jendela Transform Properties, klik tombol X.
Penyamaran dan de-identifikasi data
- Anda dapat memilih kolom data individual dengan mengklik panah bawah di kolom dan menerapkan aturan penyamaran di bagian pilihan Samarkan data sesuai persyaratan Anda (misalnya, kolom SSN).

- Anda dapat menambahkan lebih banyak Petunjuk di jendela Resep pada node Wrangler. Misalnya, menggunakan direktif hash dengan algoritma hashing yang mengikuti sintaksis ini untuk tujuan de-identifikasi:
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.

Sink node
- Pilih node sink.
- Di bagian Sink di palet Plugin di sebelah kiri, klik dua kali pada node BigQuery, yang akan muncul di UI Data Pipeline.
- Arahkan kursor ke node sink BigQuery, lalu klik Properties.

- Lengkapi kolom wajib diisi. Tetapkan kolom berikut:
- Label = {any text}
- Nama referensi = {any text}
- Project ID = deteksi otomatis
- Dataset = Set data BigQuery yang digunakan dalam project saat ini (yaitu DATASET_ID)
- Table = {table name}
- Klik Dokumentasi untuk penjelasan mendetail. Klik tombol Validasi untuk memvalidasi semua informasi input. "Tidak ada error" berwarna hijau menunjukkan keberhasilan.

- Untuk menutup Properti BigQuery, klik tombol X.
6. Membangun pipeline data Batch
Menghubungkan semua node dalam pipeline
- Tarik panah koneksi > di tepi kanan node sumber dan lepas di tepi kiri node tujuan.
- Pipeline dapat memiliki beberapa cabang yang mendapatkan file input dari node Sumber GCS yang sama.

- Beri nama pipeline.
Selesai. Anda baru saja membuat Batch data pipeline pertama dan dapat men-deploy serta menjalankan pipeline.
Mengirim pemberitahuan pipeline melalui email (opsional)
Untuk memanfaatkan fitur Pipeline Alert SendEmail, konfigurasi memerlukan penyiapan server email untuk mengirim email dari instance virtual machine. Lihat link referensi di bawah untuk mengetahui informasi selengkapnya:
Mengirim email dari instance | Dokumentasi Compute Engine
Dalam codelab ini, kita akan menyiapkan layanan relai email melalui Mailgun menggunakan langkah-langkah berikut:
- Ikuti petunjuk di Mengirim email dengan Mailgun | Dokumentasi Compute Engine untuk menyiapkan akun dengan Mailgun dan mengonfigurasi layanan relai email. Modifikasi tambahan ada di bawah.
- Tambahkan semua alamat email penerima ke daftar yang diizinkan Mailgun. Daftar ini dapat ditemukan di opsi Mailgun> Sending> Overview di panel kiri.

Setelah penerima mengklik "Saya Setuju" pada email yang dikirim dari support@mailgun.net, alamat email mereka akan disimpan dalam daftar yang diberi otorisasi untuk menerima email pemberitahuan pipeline.

- Langkah 3 bagian "Sebelum memulai" - buat aturan Firewall sebagai berikut:

- Langkah 3 dari "Mengonfigurasi Mailgun sebagai relai email dengan Postfix". Pilih Internet Site atau Internet with smarthost, bukan Local Only seperti yang disebutkan dalam petunjuk.

- Langkah 4 dari "Mengonfigurasi Mailgun sebagai relai email dengan Postfix". Edit vi /etc/postfix/main.cf untuk menambahkan 10.128.0.0/9 di akhir mynetworks.

- Edit vi /etc/postfix/master.cf untuk mengubah smtp default (25) ke port 587.

- Di sudut kanan atas studio Penggabungan Data, klik Konfigurasi. Klik Peringatan pipeline, lalu klik tombol + untuk membuka jendela Peringatan. Pilih SendEmail.

- Isi formulir konfigurasi Email. Pilih penyelesaian, keberhasilan, atau kegagalan dari dropdown Kondisi Run untuk setiap jenis pemberitahuan. Jika Sertakan Token Alur Kerja = false, hanya informasi dari kolom Pesan yang dikirim. Jika Include Workflow Token = true, informasi dari kolom Message dan informasi mendetail Workflow Token akan dikirim. Anda harus menggunakan huruf kecil untuk Protocol. Gunakan email "palsu" selain alamat email perusahaan Anda untuk Pengirim.

7. Mengonfigurasi, Men-deploy, Menjalankan/Menjadwalkan Pipeline

- Di sudut kanan atas studio Penggabungan Data, klik Konfigurasi. Pilih Spark untuk Konfigurasi Engine. Klik Simpan di jendela Configure.

- Klik Pratinjau untuk melihat Pratinjau data**,** dan klik **Pratinjau** lagi untuk beralih kembali ke jendela sebelumnya. Anda juga dapat **Menjalankan** pipeline dalam mode Pratinjau.

- Klik Logs untuk melihat log.
- Klik Simpan untuk menyimpan semua perubahan.
- Klik Impor untuk mengimpor konfigurasi pipeline tersimpan saat membuat pipeline baru.
- Klik Ekspor untuk mengekspor konfigurasi pipeline.
- Klik Deploy untuk men-deploy pipeline.
- Setelah di-deploy, klik Run dan tunggu hingga pipeline selesai berjalan.

- Anda dapat Menduplikasi pipeline dengan memilih Duplikasikan di tombol Tindakan.
- Anda dapat Mengekspor Konfigurasi Pipeline dengan memilih Ekspor di bagian tombol Tindakan.
- Klik Pemicu masuk atau Pemicu keluar di tepi kiri atau kanan jendela Studio untuk menyetel pemicu pipeline jika diinginkan.
- Klik Jadwalkan untuk menjadwalkan pipeline agar berjalan dan memuat data secara berkala.

- Ringkasan menampilkan diagram Histori operasi, catatan, log error, dan peringatan.
8. Validasi
- Pipeline Validasi berhasil dieksekusi.

- Validasi apakah Set Data BigQuery memiliki semua tabel.
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
- Menerima email pemberitahuan (jika dikonfigurasi).
Melihat hasil
Untuk melihat hasil setelah pipeline berjalan:
- Kueri tabel di UI BigQuery. BUKA UI BIGQUERY
- Perbarui kueri di bawah ke nama project, set data, dan tabel Anda sendiri.

9. Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Platform Anda untuk resource yang digunakan dalam tutorial ini:
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat di GCP agar tidak menggunakan kuota Anda, dan Anda tidak akan ditagih untuk resource tersebut di masa mendatang. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus set data BigQuery
Ikuti petunjuk ini untuk menghapus set data BigQuery yang Anda buat sebagai bagian dari tutorial ini.
Menghapus Bucket GCS
Ikuti petunjuk ini untuk menghapus bucket GCS yang Anda buat sebagai bagian dari tutorial ini.
Menghapus instance Cloud Data Fusion
Ikuti petunjuk ini untuk menghapus instance Cloud Data Fusion Anda.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di Konsol GCP, buka halaman Project. BUKA HALAMAN PROJECT
- Dalam daftar project, pilih project yang ingin dihapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
10. Selamat
Selamat, Anda telah berhasil menyelesaikan codelab untuk menyerap data kesehatan di BigQuery menggunakan Cloud Data Fusion.
Anda telah mengimpor data CSV dari Google Cloud Storage ke BigQuery.
Anda telah membangun pipeline integrasi data secara visual untuk memuat, mentransformasi, dan menyamarkan data layanan kesehatan secara massal.
Sekarang Anda mengetahui langkah-langkah utama yang diperlukan untuk memulai perjalanan Analisis Data Layanan Kesehatan dengan BigQuery di Google Cloud Platform.