1. Pengantar
Terakhir diperbarui: 28-02-2020
Codelab ini menunjukkan pola penyerapan data untuk menyerap data layanan kesehatan berformat CSV ke BigQuery secara real time. Kita akan menggunakan pipeline Data Real-Time fusion Cloud Data 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 real time) dari Pub/Sub ke BigQuery menggunakan Cloud Data Fusion.
- Cara membangun pipeline integrasi data secara visual di Cloud Data Fusion untuk memuat, mengubah, dan menyamarkan data layanan kesehatan secara real time.
Apa yang Anda perlukan untuk menjalankan demo ini?
- Anda memerlukan akses ke project GCP.
- Anda harus diberi peran Pemilik untuk project GCP.
- Data perawatan kesehatan dalam format CSV, termasuk header.
Jika Anda tidak memiliki project GCP, ikuti langkah-langkah berikut untuk membuat project GCP baru.
Data layanan kesehatan dalam format CSV telah dimuat sebelumnya ke dalam bucket GCS di gs://hcls_testing_data_fhir_10_patients/csv/. Setiap file resource CSV memiliki struktur skema yang unik. Misalnya, Patients.csv memiliki skema yang berbeda dengan Providers.csv. File skema yang dimuat sebelumnya dapat ditemukan di gs://hcls_testing_data_fhir_10_patients/csv_schemas.
Jika membutuhkan set data baru, Anda selalu dapat membuatnya menggunakan SyntheaTM. Kemudian, upload ke GCS, bukan menyalinnya dari bucket pada langkah Salin data input.
2. Penyiapan Project GCP
Melakukan inisialisasi variabel shell untuk lingkungan Anda.
Untuk menemukan PROJECT_ID, lihat Identifying projects.
<!-- 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 izin bergabung.
- Anda akan menerima email berisi petunjuk tentang cara mengonfirmasi tindakan tersebut.
- Gunakan opsi untuk membalas email agar bergabung dengan grup. JANGAN klik tombol
.
- Setelah menerima email konfirmasi, Anda dapat melanjutkan ke langkah berikutnya di codelab.
Menyalin data input.
gsutil -m cp -r gs://hcls_testing_data_fhir_10_patients/csv gs://$BUCKET_NAME
Membuat set data BigQuery.
bq mk --location=us --dataset $PROJECT_ID:$DATASET_ID
Instal dan lakukan inisialisasi Google Cloud SDK, lalu buat Topik dan Langganan Pub atau Sub.
gcloud init gcloud pubsub topics create your-topic gcloud pubsub subscriptions create --topic your-topic your-sub
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 GCP Console.
- Dari daftar project, pilih project Anda.
- Di Library API, pilih API yang ingin Anda aktifkan ( Cloud Data Fusion API, Cloud Pub/Sub API). Jika Anda memerlukan bantuan untuk menemukan API, gunakan kolom penelusuran dan filter.
- Di halaman API, klik ENABLE.
Buat instance Cloud Data Fusion.
- Di GCP Console, pilih ProjectID Anda.
- Pilih Data Fusion dari menu kiri, lalu klik tombol CREATE AN INSTANCE di tengah halaman (pembuatan pertama), atau klik tombol CREATE INSTANCE di menu atas (kreasi tambahan).
- Berikan nama instance. Pilih Enterprise.
- Klik tombol CREATE.
Menyiapkan izin instance.
Setelah membuat instance, gunakan langkah-langkah berikut untuk memberikan akun layanan yang terkait dengan izin instance di project Anda:
- Buka halaman detail instance dengan mengklik nama instance.
- Salin akun layanan.
- Buka halaman IAM project Anda.
- Di halaman izin IAM, berikan peran Agen Layanan Cloud Data Fusion API kepada akun layanan dengan mengklik tombol Tambahkan. Tempel "akun layanan" di kolom Anggota baru dan pilih Pengelolaan Layanan -> Peran Cloud Data Fusion API Server Agent.
- Klik + Add another role (atau Edit Cloud Data Fusion API Service Agent) untuk menambahkan peran Pub/Sub Subscriber.
- 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 -> Jaringan VPC -> Aturan firewall untuk memeriksa apakah aturan default-allow-ssh ada atau tidak.
- Jika tidak, tambahkan aturan firewall yang mengizinkan semua traffic masuk SSH 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 Create Firewall Rule dan isi informasinya:
4. Membangun node untuk pipeline
Setelah memiliki lingkungan Cloud Data Fusion di GCP, mari kita mulai membangun pipeline Data di Cloud Data Fusion menggunakan langkah-langkah berikut:
- Di jendela Cloud Data Fusion, klik link View Instance di kolom Action. Anda akan dialihkan ke halaman lain. Klik url yang diberikan untuk membuka instance Cloud Data Fusion. Pilihan Anda untuk mengklik "Mulai Tur" atau "Lain Kali" pada {i>Welcome pop-up<i}.
- Luaskan "hamburger" menu, pilih Pipeline -> Daftar
- Klik tombol + hijau di sudut kanan atas, lalu pilih Create Pipeline. Atau klik "Buat" {i>link pipeline.<i}
- Setelah studio pipeline muncul, di kiri atas, pilih Data Pipeline - Realtime dari dropdown.
- Di UI Data Pipelines, Anda akan melihat berbagai bagian di panel kiri sebagai Filter, Sumber, Transformasi, Analytics, Sink, Pengendali Error, dan Pemberitahuan tempat Anda dapat memilih node atau node untuk pipeline.
Pilih Source node.
- Pada bagian Source pada palet Plugin di sebelah kiri, klik dua kali node Google Cloud PubSub, yang muncul di UI Data Pipelines.
- Arahkan kursor ke node sumber PubSub, lalu klik Properties.
- Isi bidang yang diperlukan. Tetapkan kolom berikut:
- Label = {teks apa pun}
- Nama referensi = {any text}
- ID Project = deteksi otomatis
- Langganan = Langganan yang dibuat di bagian Buat Topik Pub/Sub (misalnya, sub-Anda)
- Topik = Topik yang dibuat di bagian Buat Topik Pub/Sub (misalnya, topik-anda)
- Klik Dokumentasi untuk mendapatkan penjelasan mendetail. Klik tombol Validasi untuk memvalidasi semua informasi input. Hijau "Tidak ditemukan error" menunjukkan keberhasilan.
- Untuk menutup Properti Pub/Sub, klik tombol X.
Pilih Transform node.
- Pada bagian Transform pada palet Plugin di sebelah kiri, klik dua kali node Projection, yang muncul di UI Data Pipelines. Hubungkan node sumber Pub/Sub ke node transformasi Projection.
- Arahkan kursor ke node Projection, lalu klik Properties.
- Isi bidang yang diperlukan. Tetapkan kolom berikut:
- Konversi = konversi pesan dari jenis byte ke jenis string.
- Kolom yang akan dihapus = {kolom mana pun}
- Kolom yang perlu disimpan = {pesan, stempel waktu, dan atribut} (misalnya, atribut: key=‘filename':value=‘pasien' yang dikirim dari Pub/Sub)
- Kolom untuk diganti namanya = {message, timestamp}
- Klik Dokumentasi untuk mendapatkan penjelasan mendetail. Klik tombol Validasi untuk memvalidasi semua informasi input. Hijau "Tidak ditemukan error" menunjukkan keberhasilan.
- Pada bagian Transform pada palet Plugin di sebelah kiri, klik dua kali node Wrangler, yang muncul di UI Data Pipelines. Hubungkan node transformasi Projection ke node transformasi Wrangler. Arahkan kursor ke node Wrangler, lalu klik Properties.
- Klik drop-down Tindakan dan pilih Impor untuk mengimpor skema yang tersimpan (misalnya: gs://hcls_testing_data_fhir_10_patients/csv_schemas/ schema (Patients).json).
- Tambahkan kolom TIMESTAMP di Output Schema (jika tidak ada) dengan mengklik tombol + di samping kolom terakhir dan mencentang 'Null' .
- Isi bidang yang diperlukan. Tetapkan kolom berikut:
- Label = {teks apa pun}
- Nama kolom input = {*}
- Precondition = {attributes.get("filename") != "patients"} untuk membedakan setiap jenis catatan atau pesan (misalnya, pasien, penyedia, alergi, dll.) yang dikirim dari node sumber PubSub.
- Klik Dokumentasi untuk mendapatkan penjelasan mendetail. Klik tombol Validasi untuk memvalidasi semua informasi input. Hijau "Tidak ditemukan error" menunjukkan keberhasilan.
- Tetapkan nama kolom dalam urutan yang lebih disukai, dan lepaskan kolom yang tidak diperlukan. Salin cuplikan kode berikut dan tempelkan di kotak Recipe.
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####
- Lihat Batch-Codelab - CSV ke BigQuery via CDF untuk penyamaran dan de-identifikasi data. Atau tambahkan cuplikan kode ini mask-number SSN xxxxxxx#### di kotak Recipe
- Untuk menutup jendela Transform Properties, klik tombol X.
Pilih node Sink.
- Di bagian Sink pada palet Plugin di sebelah kiri, klik dua kali node BigQuery, yang muncul di UI Data Pipeline. Hubungkan node transformasi Wrangler ke node sink BigQuery.
- Arahkan kursor ke node sink BigQuery, lalu klik Properties.
- Lengkapi kolom yang wajib diisi:
- Label = {teks apa pun}
- Nama referensi = {any text}
- ID Project = deteksi otomatis
- Set data = Set data BigQuery yang digunakan dalam project saat ini (misalnya, DATASET_ID)
- Tabel = {nama tabel}
- Klik Dokumentasi untuk mendapatkan penjelasan mendetail. Klik tombol Validasi untuk memvalidasi semua informasi input. Hijau "Tidak ditemukan error" menunjukkan keberhasilan.
- Untuk menutup Properti BigQuery, klik tombol X.
5. Membuat pipeline data Real-time
Di bagian sebelumnya, kita telah membuat node yang diperlukan untuk membangun pipeline data di Cloud Data Fusion. Di bagian ini, kita menghubungkan node untuk membangun pipeline yang sebenarnya.
Menghubungkan semua node dalam pipeline
- Tarik panah koneksi > di tepi kanan {i>node<i} sumber, lalu letakkan di tepi kiri {i>node<i} tujuan.
- Pipeline dapat memiliki beberapa cabang yang menerima pesan yang dipublikasikan dari node Sumber PubSub yang sama.
- Beri nama pipeline tersebut.
Selesai. Anda baru saja membuat pipeline data real time pertama Anda untuk di-deploy dan dijalankan.
Mengirim pesan melalui Cloud Pub/Sub
Menggunakan UI Pub/Sub:
- Buka konsol GCP -> Pub/Sub -> Topik, pilih topik Anda, lalu klik PUBLIKASIKAN PESAN di menu atas.
- Tempatkan hanya satu baris data dalam satu waktu di kolom Message. Klik tombol +ADD AN ATTRIBUTE. Berikan Kunci = filename, Nilai = <type of record> (misalnya, pasien, penyedia layanan kesehatan, alergi, dll.).
- Klik tombol Publikasikan untuk mengirimkan pesan.
Menggunakan perintah gcloud:
- Berikan pesan secara manual.
gcloud pubsub topics publish <your-topic> --attribute <key>=<value> --message \ "paste one record row here"
- Semi-otomatis menyediakan pesan menggunakan perintah unix cat dan sed. Perintah ini dapat dijalankan berulang kali dengan parameter yang berbeda.
gcloud pubsub topics publish <your-topic> --attribute <key>=<value> --message \ "$(gsutil cat gs://$BUCKET_NAME/csv/<value>.csv | sed -n '#p')"
6. Mengonfigurasi, Men-deploy, dan Menjalankan Pipeline
Setelah mengembangkan pipeline data, kita dapat men-deploy dan menjalankannya di Cloud Data Fusion.
- Gunakan opsi default Configure.
- Klik Preview untuk melihat pratinjau data**.** Klik **Preview** lagi untuk beralih kembali ke jendela sebelumnya. Anda juga dapat menjalankan pipeline dalam mode Pratinjau dengan mengklik **RUN**.
- Klik Log untuk melihat log.
- Klik Save untuk menyimpan semua perubahan.
- Klik Import untuk mengimpor konfigurasi pipeline yang tersimpan saat membangun pipeline baru.
- Klik Export untuk mengekspor konfigurasi pipeline.
- Klik Deploy untuk men-deploy pipeline.
- Setelah di-deploy, klik Run dan tunggu hingga pipeline berjalan hingga selesai.
- Klik Stop untuk menghentikan operasi pipeline kapan saja.
- Anda dapat menduplikasi pipeline dengan memilih Duplikasikan di bawah tombol Tindakan.
- Anda dapat mengekspor konfigurasi pipeline dengan memilih Ekspor di bawah tombol Tindakan.
- Klik Ringkasan untuk menampilkan diagram Histori berjalan, catatan, log error, dan peringatan.
7. Validasi
Di bagian ini, kita akan memvalidasi eksekusi pipeline data.
- Memvalidasi bahwa pipeline berhasil dieksekusi dan berjalan secara berkelanjutan.
- Validasi bahwa tabel BigQuery dimuat dengan kumpulan data yang diperbarui berdasarkan TIMESTAMP. Dalam contoh ini, dua catatan atau pesan pasien dan satu catatan atau pesan alergi dipublikasikan ke topik Pub/Sub pada 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 |
+----------+-----------+
- Validasi bahwa pesan yang dipublikasikan ke <your-topic> diterima oleh <your-sub> pelanggan.
gcloud pubsub subscriptions pull --auto-ack <your-sub>
Melihat hasil
Untuk melihat hasilnya setelah pesan dipublikasikan ke topik Pub/Sub saat pipeline Realtime berjalan:
- Buat kueri tabel di UI BigQuery. BUKA UI BIGQUERY
- Perbarui kueri di bawah ini dengan memasukkan nama project, set data, dan tabel Anda.
8. 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 menghabiskan kuota dan Anda tidak akan ditagih di masa mendatang. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource tersebut.
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 GCP Console, buka halaman Project. BUKA HALAMAN PROJECT
- Dalam daftar project, pilih project yang ingin dihapus, lalu klik Hapus.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
9. Selamat
Selamat, Anda telah berhasil menyelesaikan codelab untuk menyerap data layanan kesehatan di BigQuery menggunakan Cloud Data Fusion.
Anda telah memublikasikan data CSV ke topik Pub/Sub, lalu memuatnya ke BigQuery.
Anda secara visual membangun pipeline integrasi data untuk memuat, mengubah, dan menyamarkan data layanan kesehatan secara real time.
Anda sekarang telah mengetahui langkah-langkah utama yang diperlukan untuk memulai perjalanan Analisis Data Layanan Kesehatan dengan BigQuery di Google Cloud Platform.