Menyerap data CSV ke BigQuery menggunakan Cloud Data Fusion - Penyerapan batch

1. Pengantar

12fb66cc134b50ef.pngS

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 Cloud Data fusion Batch 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 terjadwal batch) dari GCS 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 massal.

Apa yang Anda perlukan untuk menjalankan codelab 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 CSV resource memiliki struktur skema uniknya masing-masing. 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.

  1. Dari alamat email yang Anda gunakan untuk login ke Konsol Cloud, kirim email ke hcls-solutions-external+subscribe@google.com untuk meminta izin bergabung.
  2. Anda akan menerima email berisi petunjuk tentang cara mengonfirmasi tindakan tersebut. 525a0fa752e0acae.pngS
  3. Gunakan opsi untuk membalas email agar bergabung dengan grup. JANGAN klik tombolnya.
  4. 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

3. Penyiapan Lingkungan Cloud Data Fusion

Ikuti langkah-langkah berikut untuk mengaktifkan Cloud Data Fusion API dan memberikan izin yang diperlukan:

Aktifkan API.

  1. Buka Library API GCP Console.
  2. Dari daftar project, pilih project Anda.
  3. Di Library API, pilih API yang ingin Anda aktifkan. Jika Anda memerlukan bantuan untuk menemukan API, gunakan kolom penelusuran dan/atau filter.
  4. Di halaman API, klik AKTIFKAN.

Buat instance Cloud Data Fusion.

  1. Di GCP Console, pilih ProjectID Anda.
  2. 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).

a828690ff3bf3c46.png

8372c944c94737ea.pngS

  1. Berikan nama instance. Pilih Enterprise.

5af91e46917260ff.pngS

  1. Klik tombol CREATE.

Siapkan izin instance.

Setelah membuat instance, gunakan langkah-langkah berikut untuk memberikan akun layanan yang terkait dengan izin instance di project Anda:

  1. Buka halaman detail instance dengan mengklik nama instance.

76ad691f795e1ab3.pngS

  1. Salin akun layanan.

6c91836afb72209d.pngS

  1. Buka Halaman IAM project Anda.
  2. Di halaman izin IAM, kita sekarang akan menambahkan akun layanan sebagai anggota baru dan memberinya peran Cloud Data Fusion API Service Agent. Klik tombol Add, lalu tempel "akun layanan" di kolom Anggota baru dan pilih Pengelolaan Layanan -> Peran Cloud Data Fusion API Server Agent.
  3. ea68b28d917a24b1.png
  4. 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.

  1. Buka GCP Console -> Jaringan VPC -> Aturan firewall untuk memeriksa apakah aturan default-allow-ssh ada atau tidak.

102adef44bbe3a45.pngS

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

d9c69ac10496b3d9.png

2dc4971594b82a1f.pngS

4. Membuat Skema untuk transformasi

Setelah lingkungan Cloud Fusion di GCP tersedia, mari kita membangun skema. Kita memerlukan skema ini untuk transformasi data CSV.

  1. 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}.
  2. Luaskan "hamburger" menu, pilih Pipeline -> Studio

6561b13f30e36c3a.pngS

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

aa44a4db5fe6623a.png

  1. Arahkan kursor ke node Wrangler, lalu klik Properties. Klik tombol Wrangle, lalu pilih file sumber .csv (misalnya, patient.csv), yang harus memiliki semua kolom data untuk membuat skema yang diinginkan.
  2. Klik Panah bawah (Transformasi Kolom) di samping setiap nama kolom (misalnya, isi). 802edca8a97da18.pngS
  3. Secara default, impor awal akan mengasumsikan hanya ada satu kolom dalam file data Anda. Untuk mengurainya sebagai CSV, pilih ParseCSV, lalu pilih pembatas dan centang "Tetapkan baris pertama sebagai header" sebagaimana mestinya. Klik tombol Terapkan.
  4. 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 (default-nya adalah jenis "string"), memisahkan kolom, menetapkan nama kolom, dll.

e6d2cda51ff298e7.png

  1. "Kolom" dan "Langkah transformasi" tab menampilkan skema {i>output<i} dan urutan langkah Wrangler. Klik Terapkan di sudut kanan atas. Klik tombol Validasi. Ikon "Tidak ditemukan kesalahan" berwarna hijau menunjukkan keberhasilan.

1add853c43f2abee.pngS

  1. Di Wrangler Properties, klik dropdown Actions untuk Export skema yang diinginkan ke penyimpanan lokal Anda untuk Import mendatang jika diperlukan.
  2. Simpan Resep Wrangler untuk penggunaan di masa mendatang.
parse-as-csv :body ',' true
drop body
  1. Untuk menutup jendela Wrangler Properties, klik tombol X.

5. Membangun node untuk pipeline

Di bagian ini, kita akan membangun komponen pipeline.

  1. Pada UI Data Pipelines, di kiri atas, Anda akan melihat bahwa Data Pipeline - Batch dipilih sebagai jenis pipeline.

af67c42ce3d98529.png

  1. Terdapat beberapa bagian di panel kiri seperti Filter, Sumber, Transformasi, Analytics, Sink, Kondisi dan Tindakan, Pengendali Error, dan Notifikasi tempat Anda dapat memilih node atau node untuk pipeline.

c4438f7682f8b19b.png

Node sumber

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

87e51a3e8dae8b3f.pngS

  1. Isi bidang yang diperlukan. Tetapkan kolom berikut:
  • Label = {teks apa pun}
  • Nama referensi = {any text}
  • ID Project = deteksi otomatis
  • Path = URL GCS ke bucket di project Anda saat ini. Misalnya, gs://$BUCKET_NAME/csv/
  • Format = teks
  • Kolom Jalur = nama file
  • Hanya Nama File Jalur = true
  • Membaca File secara Rekursif = true
  1. Tambahkan kolom 'filename' ke Skema Output GCS dengan mengklik tombol +.
  2. Klik Dokumentasi untuk penjelasan mendetail. Klik tombol Validasi. Ikon "Tidak ditemukan kesalahan" berwarna hijau menunjukkan keberhasilan.
  3. Untuk menutup Properti GCS, klik tombol X.

Mengubah node

  1. Pilih node Transform.
  2. Pada bagian Transform 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.
  3. Arahkan kursor ke node Wrangler, lalu klik Properties.
  4. 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), dan menempelkan resep yang disimpan dari bagian sebelumnya.
  5. Atau, gunakan kembali node Wrangler dari bagian: Membuat skema untuk transformasi.
  6. Isi bidang yang diperlukan. Tetapkan kolom berikut:
  • Label = {teks apa pun}
  • Nama kolom input = {*}
  • Precondition = {filename != "patients.csv"} untuk membedakan setiap file input (misalnya, pasien.csv, providers.csv, allergies.csv, dll.) dari node Sumber.

2426f8f0a6c4c670.pngS

  1. Tambahkan node JavaScript untuk menjalankan JavaScript yang disediakan pengguna yang mentransformasi kumpulan data lebih lanjut. Dalam codelab ini, kita 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:

75212f9ad98265a8.pngS

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

4227389b57661135.png

  1. Klik Dokumentasi untuk mendapatkan penjelasan mendetail. Klik tombol Validasi untuk memvalidasi semua informasi input. Hijau "Tidak ditemukan error" menunjukkan keberhasilan.
  2. Untuk menutup jendela Transform Properties, klik tombol X.

Penyamaran dan de-identifikasi data

  1. Anda dapat memilih kolom data individual dengan mengklik panah bawah di kolom dan menerapkan aturan penyamaran pada pemilihan Masker data sesuai persyaratan Anda (misalnya, kolom SSN).

bb1eb067dd6e0946.png

  1. Anda dapat menambahkan Directive lainnya di jendela Recipe pada node Wrangler. Misalnya, gunakan perintah 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.

cbcc9a0932f53197.png

Node sink

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

1be711152c92c692.pngS

  1. Lengkapi kolom yang wajib diisi. Tetapkan kolom berikut:
  • Label = {teks apa pun}
  • Nama referensi = {any text}
  • ID Project = deteksi otomatis
  • Set data = Set data BigQuery yang digunakan dalam project saat ini (yaitu DATASET_ID)
  • Tabel = {nama tabel}
  1. Klik Dokumentasi untuk mendapatkan penjelasan mendetail. Klik tombol Validasi untuk memvalidasi semua informasi input. Hijau "Tidak ditemukan error" menunjukkan keberhasilan.

c5585747da2ef341.png

  1. Untuk menutup Properti BigQuery, klik tombol X.

6. Membangun pipeline data Batch

Menghubungkan semua node dalam pipeline

  1. Tarik panah koneksi > di tepi kanan {i>node<i} sumber, lalu letakkan di tepi kiri {i>node<i} tujuan.
  2. Pipeline dapat memiliki beberapa cabang yang mendapatkan file input dari node Sumber GCS yang sama.

67510ab46bd44d36.png

  1. Beri nama pipeline tersebut.

Selesai. Anda baru saja membuat pipeline data Batch pertama serta dapat men-deploy dan menjalankan pipeline.

Mengirim pemberitahuan pipeline melalui email (opsional)

Untuk memanfaatkan fitur SendEmail Pemberitahuan Pipeline, konfigurasi ini memerlukan penyiapan server email untuk mengirim email dari instance virtual machine. Lihat link referensi di bawah untuk informasi selengkapnya:

Mengirim email dari instance | Dokumentasi Compute Engine

Dalam codelab ini, kita akan menyiapkan layanan relai email melalui Mailgun menggunakan langkah-langkah berikut:

  1. Ikuti petunjuknya di Mengirim email dengan Mailgun | Dokumentasi Compute Engine untuk menyiapkan akun dengan Mailgun dan mengonfigurasi layanan relai email. Modifikasi tambahan ada di bawah.
  2. Tambahkan semua penerima ke daftar resmi Mailgun. Daftar ini dapat ditemukan di opsi Mailgun>Sending>Overview di panel kiri.

7e6224cced3fa4e0.pngS fa78739f1ddf2dc2.png

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

72847c97fd5fce0f.pngS

  1. Langkah 3 dari "Sebelum memulai" - buat aturan Firewall sebagai berikut:

75b063c165091912.pngS

  1. Langkah 3 "Configure Mailgun as a mail relay with Postfix". Pilih Internet Site atau Internet with smarthost, bukan Local Only seperti yang disebutkan dalam petunjuk.

8fd8474a4ef18f16.pngS

  1. Langkah 4 "Configure Mailgun as a mail relay with Postfix". Edit vi /etc/postfix/main.cf untuk menambahkan 10.128.0.0/9 di akhir mynetworks.

249fbf3edeff1ce8.pngS

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

86c82cf48c687e72.png

  1. Di pojok kanan atas Data Fusion Studio, klik Configure. Klik Pipeline Alert, lalu klik tombol + untuk membuka jendela Alerts. Pilih SendEmail.

dc079a91f1b0da68.png

  1. Isi formulir konfigurasi Email. Pilih penyelesaian, keberhasilan, atau kegagalan dari drop-down Jalankan Kondisi untuk setiap jenis pemberitahuan. Jika Sertakan Token Alur Kerja = false, hanya informasi dari kolom Pesan yang akan dikirim. Jika Sertakan Token Alur Kerja = true, informasi dari kolom Pesan dan informasi detail Token Alur Kerja akan dikirim. Anda harus menggunakan huruf kecil untuk Protokol. Gunakan "palsu" email selain alamat email perusahaan Anda untuk Pengirim.

1fa619b6ce28f5e5.pngS

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

db612e62a1c7ab7e.png

  1. Di pojok kanan atas Data Fusion Studio, klik Configure. Pilih Spark untuk Konfigurasi Mesin. Klik Simpan di jendela Konfigurasi.

8ecf7c243c125882.png

  1. Klik Preview untuk Preview data**,** dan klik **Preview** lagi untuk beralih kembali ke jendela sebelumnya. Anda juga bisa **Menjalankan** pipeline dalam mode Pratinjau.

b3c891e5e1aa20ae.png

  1. Klik Log untuk melihat log.
  2. Klik Save untuk menyimpan semua perubahan.
  3. Klik Impor untuk mengimpor konfigurasi pipeline yang tersimpan saat membuat pipeline baru.
  4. Klik Export untuk mengekspor konfigurasi pipeline.
  5. Klik Deploy untuk men-deploy pipeline.
  6. Setelah di-deploy, klik Run dan tunggu hingga pipeline berjalan hingga selesai.

bb06001d46a293db.png

  1. Anda dapat membuat duplikat pipeline dengan memilih Duplikasikan di bawah tombol Tindakan.
  2. Anda dapat Mengekspor Konfigurasi Pipeline dengan memilih Ekspor di bawah tombol Tindakan.
  3. Klik Pemicu masuk atau Pemicu keluar di tepi kiri atau kanan jendela Studio untuk menetapkan pemicu pipeline jika diinginkan.
  4. Klik Jadwalkan untuk menjadwalkan pipeline agar berjalan dan memuat data secara berkala.

4167fa67550a49d5.pngS

  1. Ringkasan menampilkan diagram Histori pengoperasian, kumpulan data, log error, dan peringatan.

8. Validasi

  1. Pipeline Validasi berhasil dijalankan.

7dee6e662c323f14.pngS

  1. 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
  1. Terima email peringatan (jika dikonfigurasikan).

Melihat hasil

Untuk melihat hasil setelah pipeline berjalan:

  1. Buat kueri tabel di UI BigQuery. BUKA UI BIGQUERY
  2. Perbarui kueri di bawah ini dengan memasukkan nama project, set data, dan tabel Anda.

e32bfd5d965a117f.png

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

  1. Di GCP Console, buka halaman Project. BUKA HALAMAN PROJECT
  2. Dalam daftar project, pilih project yang ingin dihapus, lalu klik Hapus.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

10. Selamat

Selamat, Anda telah berhasil menyelesaikan codelab untuk menyerap data layanan 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, mengubah, dan menyamarkan data layanan kesehatan secara massal.

Anda sekarang telah mengetahui langkah-langkah utama yang diperlukan untuk memulai perjalanan Analisis Data Layanan Kesehatan dengan BigQuery di Google Cloud Platform.