Membangun Pipeline Data Serverless: IoT ke Analisis

1. Ringkasan/Pengantar

Meskipun aplikasi multi-tingkat yang terdiri dari web, server aplikasi, dan database merupakan dasar pengembangan web dan merupakan titik awal bagi banyak situs, kesuksesan sering kali menimbulkan tantangan terkait skalabilitas, integrasi, dan ketangkasan. Misalnya, bagaimana data dapat ditangani secara real-time dan bagaimana data dapat didistribusikan ke beberapa sistem bisnis utama? Masalah ini, ditambah dengan tuntutan aplikasi skala internet, mendorong kebutuhan akan sistem pesan terdistribusi dan memunculkan pola arsitektur penggunaan pipeline data untuk mencapai sistem real-time yang tangguh. Oleh karena itu, memahami cara memublikasikan data real-time ke sistem pesan terdistribusi dan kemudian cara membangun pipeline data adalah keterampilan penting bagi developer dan arsitek.

Yang akan Anda buat

Dalam codelab ini, Anda akan membangun pipeline data cuaca yang dimulai dengan perangkat Internet of Things (IoT), menggunakan antrean pesan untuk menerima dan mengirimkan data, memanfaatkan fungsi serverless untuk memindahkan data ke gudang data, lalu membuat dasbor yang menampilkan informasi tersebut. Raspberry Pi dengan sensor cuaca akan digunakan untuk perangkat IoT dan beberapa komponen Google Cloud Platform akan membentuk pipeline data. Membangun Raspberry Pi, meskipun bermanfaat, adalah bagian opsional dari codelab ini dan data cuaca streaming dapat diganti dengan skrip.

79cd6c68e83f7fea.png

Setelah menyelesaikan langkah-langkah dalam codelab ini, Anda akan memiliki pipeline data streaming yang memasok dasbor yang menampilkan suhu, kelembapan, titik embun, dan tekanan udara.

e28ca9ea4abb1457.png

Yang akan Anda pelajari

  • Cara menggunakan Google Pub/Sub
  • Cara men-deploy Google Cloud Function
  • Cara memanfaatkan Google BigQuery
  • Cara membuat dasbor menggunakan Google Data Studio
  • Selain itu, jika Anda membuat sensor IoT, Anda juga akan mempelajari cara menggunakan Google Cloud SDK dan cara mengamankan panggilan akses jarak jauh ke Google Cloud Platform

Yang Anda butuhkan

Jika Anda ingin membuat bagian sensor IoT dari codelab ini, bukan memanfaatkan data dan skrip contoh, Anda juga memerlukan hal berikut ( yang dapat dipesan sebagai kit lengkap atau sebagai bagian individual di sini)...

  • Raspberry Pi Zero W dengan catu daya, kartu memori SD, dan casing
  • Pembaca kartu USB
  • Hub USB (untuk memungkinkan menghubungkan keyboard dan mouse ke satu-satunya port USB di Raspberry Pi)
  • Kabel breadboard perempuan ke perempuan
  • Header Hammer GPIO
  • Sensor BME280
  • Solder dengan timah solder

Selain itu, diasumsikan bahwa Anda memiliki akses ke monitor komputer atau TV dengan input HDMI, kabel HDMI, keyboard, dan mouse.

2. Mempersiapkan

Penyiapan lingkungan mandiri

Jika belum memiliki Akun Google (Gmail atau G Suite), Anda harus membuatnya. Terlepas dari apakah Anda sudah memiliki Akun Google atau belum, pastikan untuk memanfaatkan uji coba gratis senilai$300.

Login ke Google Cloud Platform console ( console.cloud.google.com). Anda dapat menggunakan project default ("Project Pertama Saya") untuk lab ini atau memilih untuk membuat project baru. Jika ingin membuat project baru, Anda dapat menggunakan halaman Kelola resource. Project ID harus berupa nama unik di semua project Google Cloud (project ID yang ditampilkan di bawah sudah digunakan dan tidak akan berfungsi untuk Anda). Catat project ID Anda (yaitu, Project ID Anda adalah _____) karena akan diperlukan nanti.

f414a63d955621a7.png

3415e861c09cd06a.png

Menjalankan operasi dalam codelab ini tidak akan menghabiskan biaya lebih dari beberapa dolar, tetapi bisa lebih jika Anda memutuskan untuk menggunakan lebih banyak resource atau jika Anda membiarkannya berjalan. Pastikan untuk membaca bagian Pembersihan di akhir codelab.

3. Membuat tabel BigQuery

BigQuery adalah data warehouse perusahaan tanpa server, sangat skalabel, dan berbiaya rendah, serta akan menjadi opsi ideal untuk menyimpan data yang di-streaming dari perangkat IoT sekaligus memungkinkan dasbor analisis mengkueri informasi tersebut.

Mari kita buat tabel yang akan menyimpan semua data cuaca IoT. Pilih BigQuery dari Konsol Cloud. Tindakan ini akan membuka BigQuery di jendela baru (jangan tutup jendela asli karena Anda akan perlu mengaksesnya lagi).

12a838f78a10144a.png

Klik ikon panah bawah di samping nama project Anda, lalu pilih "Create new dataset".

27616683b64ce34a.png

Masukkan "weatherData" untuk Set Data, pilih lokasi tempat data akan disimpan, lalu Klik "OK"

62cfcbd1add830ea.png

Klik tanda "+" di samping Set Data Anda untuk membuat tabel baru

3d7bff6f9843fa3c.png

Untuk Data Sumber, pilih Buat tabel kosong. Untuk Destination table name, masukkan weatherDataTable. Di bagian Schema, klik tombol Add Field hingga ada total 9 kolom. Isi kolom seperti yang ditunjukkan di bawah, pastikan untuk memilih Jenis yang sesuai untuk setiap kolom. Setelah semuanya selesai, klik tombol Buat Tabel.

eef352614a5696a7.png

Anda akan melihat hasil seperti ini...

7d10e5ab8c6d6a0d.png

Sekarang Anda telah menyiapkan data warehouse untuk menerima data cuaca.

4. Membuat topik Pub/Sub

Cloud Pub/Sub adalah fondasi sederhana, andal, dan skalabel untuk analisis stream dan sistem komputasi berbasis peristiwa. Oleh karena itu, layanan ini sangat cocok untuk menangani pesan IoT yang masuk, lalu memungkinkan sistem downstream memprosesnya.

Jika Anda masih berada di jendela BigQuery, beralihlah kembali ke Konsol Cloud. Jika Anda menutup Konsol Cloud, buka https://console.cloud.google.com

Dari Konsol Cloud, pilih Pub/Sub, lalu Topik.

331ad71e8a1ea7b.png

Jika Anda melihat perintah Aktifkan API, klik tombol Aktifkan API.

9f6fca9dc8684801.png

Klik tombol Buat topik

643670164e9fae12.png

Masukkan "weatherdata" sebagai nama topik, lalu klik Buat

d7b049bc66a34db6.png

Anda akan melihat topik yang baru dibuat

7c385759f65a1031.png

Sekarang Anda memiliki topik Pub/Sub untuk memublikasikan pesan IoT dan mengizinkan proses lain mengakses pesan tersebut.

Memublikasikan ke topik secara aman

Jika Anda berencana memublikasikan pesan ke topik Pub/Sub dari resource di luar Konsol Google Cloud (misalnya, sensor IoT), Anda harus mengontrol akses secara lebih ketat menggunakan akun layanan dan memastikan keamanan koneksi dengan membuat sertifikat tepercaya.

Dari Konsol Cloud, pilih IAM & Admin, lalu Akun layanan

8e2f8a1428d0feca.png

Klik tombol Buat akun layanan

60892b564e0ac140.png

Di dropdown Peran, pilih peran Pub/Sub Publisher

31f8c944af11270e.png

Ketik nama akun layanan (iotWeatherPublisher), centang kotak Furnish a new private key, pastikan Key type disetel ke JSON, lalu klik "Create"

7e3f9d7e56a44796.png

Kunci keamanan akan didownload secara otomatis. Hanya ada satu kunci, jadi penting untuk tidak kehilangannya. Klik Tutup.

60a7da32dd85ba73.png

Anda akan melihat bahwa akun layanan telah dibuat dan ada ID Kunci yang terkait dengannya.

b25f6f5629fe8fd7.png

Untuk mengakses kunci dengan mudah nanti, kita akan menyimpannya di Google Cloud Storage. Dari Konsol Cloud, pilih Storage, lalu Browser.

c4414fe61be320a9.png

Klik tombol Buat Bucket

cde91311b267fc65.png

Pilih nama untuk bucket penyimpanan (nama ini harus unik secara global di semua Google Cloud), lalu klik tombol Buat

28c10e41b401f479.png

Temukan kunci keamanan yang didownload secara otomatis, lalu tarik/lepas atau upload ke bucket penyimpanan

a0f6d069d42cec4b.png

Setelah upload kunci selesai, kunci tersebut akan muncul di browser Cloud Storage

55b25c8b9d73ec19.png

Catat nama bucket penyimpanan dan nama file kunci keamanan untuk nanti.

5. Membuat Cloud Function

Cloud computing memungkinkan model komputasi tanpa server sepenuhnya, dengan logika dapat dijalankan sesuai permintaan sebagai respons terhadap peristiwa yang berasal dari mana saja. Untuk lab ini, Cloud Function akan dimulai setiap kali pesan dipublikasikan ke topik cuaca, akan membaca pesan, lalu menyimpannya di BigQuery.

Dari Cloud Console, pilih Cloud Functions

a14ac2e4f03bf831.png

Jika Anda melihat pesan API, klik tombol Aktifkan API

40ba0a08430e0e8a.png

Klik tombol Buat fungsi

5d82d8faeffa55bf.png

Di kolom Name, ketik function-weatherPubSubToBQ. Untuk Pemicu, pilih topik Cloud Pub/Sub, lalu di dropdown Topik, pilih weatherdata. Untuk kode sumber, pilih editor inline. Di tab index.js, tempelkan kode berikut di atas kode yang ada untuk memulai. Pastikan untuk mengubah konstanta untuk projectId, datasetId, dan tableId agar sesuai dengan lingkungan Anda.

/**
 * Background Cloud Function to be triggered by PubSub.
 *
 * @param {object} event The Cloud Functions event.
 * @param {function} callback The callback function.
 */
exports.subscribe = function (event, callback) {
  const BigQuery = require('@google-cloud/bigquery');
  const projectId = "myProject"; //Enter your project ID here
  const datasetId = "myDataset"; //Enter your BigQuery dataset name here
  const tableId = "myTable"; //Enter your BigQuery table name here -- make sure it is setup correctly
  const PubSubMessage = event.data;
  // Incoming data is in JSON format
  const incomingData = PubSubMessage.data ? Buffer.from(PubSubMessage.data, 'base64').toString() : "{'sensorID':'na','timecollected':'1/1/1970 00:00:00','zipcode':'00000','latitude':'0.0','longitude':'0.0','temperature':'-273','humidity':'-1','dewpoint':'-273','pressure':'0'}";
  const jsonData = JSON.parse(incomingData);
  var rows = [jsonData];

  console.log(`Uploading data: ${JSON.stringify(rows)}`);

  // Instantiates a client
  const bigquery = BigQuery({
    projectId: projectId
  });

  // Inserts data into a table
  bigquery
    .dataset(datasetId)
    .table(tableId)
    .insert(rows)
    .then((foundErrors) => {
      rows.forEach((row) => console.log('Inserted: ', row));

      if (foundErrors && foundErrors.insertErrors != undefined) {
        foundErrors.forEach((err) => {
            console.log('Error: ', err);
        })
      }
    })
    .catch((err) => {
      console.error('ERROR:', err);
    });
  // [END bigquery_insert_stream]


  callback();
};

Di tab package.json, tempelkan kode berikut di atas kode placeholder yang ada di sana

{
  "name": "function-weatherPubSubToBQ",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "dependencies": {
    "@google-cloud/bigquery": "^0.9.6"
  }
}

Jika Function to execute ditetapkan ke "HelloWorld", ubah menjadi "subscribe". Klik tombol Buat

3266d5268980a4db.png

Diperlukan waktu sekitar 2 menit hingga fungsi Anda menunjukkan bahwa fungsi tersebut telah di-deploy

26f45854948426d0.png

Selamat! Anda baru saja menghubungkan Pub/Sub ke BigQuery melalui Functions.

6. Menyiapkan hardware IoT (opsional)

Merakit Raspberry Pi dan sensor

Jika ada lebih dari 7 pin, pangkas header menjadi hanya 7 pin. Solder pin header ke papan sensor.

a162e24426118c97.png

Pasang pin header palu dengan hati-hati ke Raspberry Pi.

a3a697907fe3c9a9.png

Format kartu SD dan instal penginstal NOOBS (New Out Of Box Software) dengan mengikuti langkah-langkah di sini. Masukkan kartu SD ke Raspberry Pi, lalu masukkan Raspberry Pi ke dalam casingnya.

1e4e2459cd3333ec.png

Gunakan kabel breadboard untuk menghubungkan sensor ke Raspberry Pi sesuai dengan diagram di bawah.

392c2a9c85187094.png

Pin Raspberry Pi

Koneksi sensor

Pin 1 (3,3 V)

STNK

Pin 3 (CPIO2)

SDI

Pin 5 (GPIO3)

SCK

Pin 9 (Ground)

GND

44322e38d467d66a.png

Hubungkan monitor (menggunakan konektor mini-HDMI), keyboard/mouse (dengan hub USB), dan terakhir, adaptor daya.

Mengonfigurasi Raspberry Pi dan sensor

Setelah Raspberry Pi selesai melakukan booting, pilih Raspbian untuk sistem operasi yang diinginkan, pastikan bahasa yang diinginkan sudah benar, lalu klik Install (ikon hard drive di bagian kiri atas jendela).

a16f0da19b93126.png

Klik ikon Wi-Fi (kanan atas layar) dan pilih jaringan. Jika jaringan tersebut adalah jaringan yang aman, masukkan sandi (pre-shared key).

17f380b2d41751a8.png

Klik ikon raspberry (kiri atas layar), pilih Preferences, lalu pilih Raspberry Pi Configuration. Dari tab Interfaces, aktifkan I2C. Dari tab Pelokalan, tetapkan Lokalitas dan Zona Waktu. Setelah menyetel Zona Waktu, izinkan Raspberry Pi untuk memulai ulang.

14741a77fccdb7e7.png

Setelah proses mulai ulang selesai, klik ikon Terminal untuk membuka jendela terminal.

9df6f228f6a31601.png

Ketik perintah berikut untuk memastikan sensor terhubung dengan benar.

  sudo i2cdetect -y 1

Hasilnya akan terlihat seperti ini – pastikan hasilnya 77.

cd35cd97bee8085a.png

Instal Google Cloud SDK

Untuk memanfaatkan alat di platform Google Cloud, Google Cloud SDK harus diinstal di Raspberry Pi. SDK mencakup alat yang diperlukan untuk mengelola dan memanfaatkan Google Cloud Platform serta tersedia untuk beberapa bahasa pemrograman.

Buka jendela terminal di Raspberry Pi jika belum terbuka dan tetapkan variabel lingkungan yang akan mencocokkan versi SDK dengan sistem operasi di Raspberry Pi.

  export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"

Sekarang tambahkan lokasi tempat paket Google Cloud SDK disimpan agar alat penginstalan mengetahui tempat yang harus dicari saat diminta untuk menginstal SDK.

  echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" |  sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

Tambahkan kunci publik dari repositori paket Google agar Raspberry Pi dapat memverifikasi keamanan dan memercayai konten selama penginstalan

  curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

Pastikan semua software di Raspberry Pi sudah diupdate dan instal Google Cloud SDK inti

  sudo apt-get update && sudo apt-get install google-cloud-sdk

Saat muncul dialog "Do you want to continue?", tekan Enter.

Instal paket tendo menggunakan pengelola paket Python. Paket ini digunakan untuk memeriksa apakah skrip berjalan lebih dari sekali dan sedang diinstal untuk penerapannya ke skrip cuaca.

  pip install tendo

Pastikan paket Google Cloud PubSub dan OAuth2 untuk Python diinstal dan diupdate menggunakan pengelola paket Python

  sudo pip install --upgrade google-cloud-pubsub
  sudo pip install --upgrade oauth2client

Lakukan inisialisasi Google Cloud SDK

SDK ini memungkinkan akses jarak jauh yang diautentikasi ke Google Cloud. Untuk codelab ini, bucket penyimpanan akan digunakan untuk mengakses bucket penyimpanan sehingga kunci keamanan dapat didownload dengan mudah ke Raspberry Pi.

Dari command line di Raspberry Pi, masukkan

  gcloud init --console-only

Saat diminta "Would you like to log in (Y/n)?", tekan Enter.

Saat Anda melihat "Buka link berikut di browser Anda:" diikuti dengan URL panjang yang dimulai dengan https://accounts.google.com/o/oauth?..., arahkan kursor ke URL dengan mouse, klik kanan, lalu pilih "Salin URL". Kemudian, buka browser web (ikon bola dunia biru di sudut kiri atas layar), klik kanan kolom URL, lalu klik "Tempel".

Setelah Anda melihat layar Login, masukkan alamat email yang terkait dengan akun Google Cloud Anda, lalu tekan Enter. Kemudian, masukkan sandi Anda dan klik tombol Berikutnya.

Anda akan diminta untuk mengizinkan Google Cloud SDK mengakses Akun Google Anda. Klik tombol Izinkan.

Anda akan melihat kode verifikasi. Dengan menggunakan mouse, tandai, lalu klik kanan dan pilih Salin. Kembali ke jendela terminal, pastikan kursor berada di sebelah kanan "Enter verification code:", klik kanan dengan mouse, lalu pilih Tempel. Tekan tombol Enter.

Jika Anda diminta untuk "Pick cloud project to use:", masukkan nomor yang sesuai dengan nama project yang telah Anda gunakan untuk codelab ini, lalu tekan Enter.

Jika Anda diminta untuk mengaktifkan Compute API, tekan tombol Enter untuk mengaktifkannya. Setelah itu, Anda akan diminta untuk mengonfigurasi setelan Google Compute Engine. Tekan Enter. Anda akan melihat daftar potensi wilayah/zona – pilih salah satu yang dekat dengan Anda, masukkan nomor yang sesuai, lalu tekan Enter.

Dalam beberapa saat, Anda akan melihat beberapa informasi tambahan yang ditampilkan. Google Cloud SDK kini telah dikonfigurasi. Anda dapat menutup jendela browser web karena tidak akan memerlukannya lagi.

Menginstal software sensor dan skrip cuaca

Dari command line di Raspberry Pi, clone paket yang diperlukan untuk membaca informasi dari pin input/output.

  git clone https://github.com/adafruit/Adafruit_Python_GPIO

Instal paket yang didownload

  cd Adafruit_Python_GPIO

  sudo python setup.py install

  cd ..

Meng-clone kode project yang mengaktifkan sensor cuaca

  git clone https://github.com/googlecodelabs/iot-data-pipeline

Salin driver sensor ke direktori yang sama dengan software yang didownload lainnya.

  cd iot-data-pipeline/third_party/Adafruit_BME280

  mv Adafruit_BME280.py ../..

  cd ../..

Edit skrip dengan mengetik...

  nano checkWeather.py

Ubah project menjadi Project ID Anda dan topik menjadi nama topik Pub/Sub Anda (keduanya dicatat di bagian Penyiapan dan Buat topik Pub/Sub di codelab ini).

Ubah nilai sensorID, sensorZipCode, sensorLat, dan sensorLong menjadi nilai apa pun yang Anda inginkan. Nilai Lintang dan Bujur untuk lokasi atau alamat tertentu dapat ditemukan di sini.

Setelah Anda selesai membuat perubahan yang diperlukan, tekan Ctrl-X untuk mulai keluar dari editor nano. Tekan Y untuk mengonfirmasi.

# constants - change to fit your project and location
SEND_INTERVAL = 10 #seconds
sensor = BME280(t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)
credentials = GoogleCredentials.get_application_default()
project="myProject" #change this to your Google Cloud project id
topic = "myTopic" #change this to your Google Cloud PubSub topic name
sensorID = "s-Googleplex"
sensorZipCode = "94043"
sensorLat = "37.421655"
sensorLong = "-122.085637"

Pasang kunci keamanan

Salin kunci keamanan (dari bagian "Secure publishing to a topic") ke Raspberry Pi.

Jika Anda menggunakan SFTP atau SCP untuk menyalin kunci keamanan dari komputer lokal ke Raspberry Pi (ke direktori /home/pi), Anda dapat melewati langkah berikutnya dan langsung menuju ke mengekspor jalur.

Jika Anda menempatkan kunci keamanan ke dalam bucket penyimpanan, Anda harus mengingat nama bucket penyimpanan dan nama file. Gunakan perintah gsutil untuk menyalin kunci keamanan. Perintah ini dapat mengakses Google Storage (itulah sebabnya dinamai gsutil dan jalur ke file dimulai dengan gs://). Pastikan untuk mengubah perintah di bawah agar memiliki nama bucket dan nama file Anda.

  gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .

Anda akan melihat pesan bahwa file sedang disalin dan kemudian bahwa operasi telah selesai.

Dari command line di Raspberry Pi, ekspor jalur ke kunci keamanan (ubah nama file agar sesuai dengan yang Anda miliki)

  export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json

Sekarang Anda memiliki sensor cuaca IoT yang sudah selesai dan siap mengirimkan data ke Google Cloud.

7. Mulai pipeline data

Mungkin perlu mengaktifkan Compute API

Streaming data dari Raspberry Pi

Jika Anda membuat sensor cuaca IoT Raspberry Pi, mulai skrip yang akan membaca data cuaca dan mengirimkannya ke Google Cloud Pub/Sub. Jika Anda belum berada di direktori /home/pi/iot-data-pipeline, pindah ke sana terlebih dahulu

  cd /home/pi/iot-data-pipeline

Mulai skrip cuaca

  python checkWeather.py

Anda akan melihat jendela terminal menampilkan hasil data cuaca setiap menit. Setelah data mengalir, Anda dapat langsung membuka bagian berikutnya (Memeriksa Aliran Data).

Streaming data yang disimulasikan

Jika Anda tidak membuat sensor cuaca IoT, Anda dapat menyimulasikan streaming data menggunakan set data publik yang telah disimpan di Google Cloud Storage dan memasukkannya ke topik Pub/Sub yang ada. Google Dataflow bersama dengan template yang disediakan Google untuk membaca dari Cloud Storage dan memublikasikan ke Pub/Sub akan digunakan.

Sebagai bagian dari proses, Dataflow akan memerlukan lokasi penyimpanan sementara, jadi mari kita buat bucket penyimpanan untuk tujuan ini.

Dari Konsol Cloud, pilih Storage, lalu Browser.

c4414fe61be320a9.png

Klik tombol Buat Bucket

cde91311b267fc65.png

Pilih nama untuk bucket penyimpanan (ingat, nama ini harus unik secara global di semua Google Cloud) lalu klik tombol Buat. Ingat nama bucket penyimpanan ini karena akan segera diperlukan.

1dad4cfbccfc96b1.png

Dari Konsol Cloud, pilih Dataflow.

43ec245b47ae2e78.png

Klik Buat Tugas dari Template (bagian atas layar)

da55aaf2a1b0a0d0.png

Isi detail tugas seperti yang ditunjukkan di bawah dengan memperhatikan hal berikut:

  • Masukkan nama tugas dataflow-gcs-to-pubsub
  • Region Anda akan otomatis dipilih sesuai dengan tempat project Anda dihosting dan tidak perlu diubah.
  • Pilih template Cloud Dataflow GCS Text to Cloud Pub/Sub
  • Untuk Input Cloud Storage File(s), masukkan gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (ini adalah set data publik)
  • Untuk Topik Pub/Sub Output, jalur persisnya akan bergantung pada nama project Anda dan akan terlihat seperti "projects/yourProjectName/topics/weatherdata"
  • Tetapkan Lokasi Sementara ke nama bucket Google Cloud Storage yang baru saja Anda buat bersama dengan awalan nama file "tmp". Nilainya akan terlihat seperti "gs://myStorageBucketName/tmp".

Setelah Anda mengisi semua informasi (lihat di bawah), klik tombol Run job

5f8ca16672f19d9b.png

Tugas Dataflow akan mulai berjalan.

e020015c369639ad.png

Tugas Dataflow akan selesai dalam waktu sekitar satu menit.

218a3ff7197dcf75.png

8. Memeriksa apakah data mengalir

Log Cloud Function

Pastikan Cloud Function dipicu oleh Pub/Sub

  gcloud beta functions logs read function-weatherPubSubToBQ

Log akan menunjukkan bahwa fungsi sedang dieksekusi, data sedang diterima, dan data sedang dimasukkan ke BigQuery

d88f7831dabc8b3f.png

Data BigQuery

Periksa untuk memastikan data mengalir ke tabel BigQuery. Dari Konsol Cloud, buka BigQuery (bigquery.cloud.google.com).

85627127d58f1d2e.png

Di bawah nama project (di sisi kiri jendela), klik Set Data (weatherData), lalu klik tabel (weatherDataTable), lalu klik tombol Query Table

44dc0f765a69580c.png

Tambahkan tanda bintang ke pernyataan SQL sehingga terbaca SELECT * FROM... seperti yang ditunjukkan di bawah, lalu klik tombol RUN QUERY

b3a001e11c2902f2.png

Jika diminta, klik tombol Run query

2c894d091b789ca3.png

Jika hasilnya muncul, berarti data mengalir dengan benar.

c8a061cebb7b528a.png

Setelah data mengalir, Anda siap membuat dasbor analisis.

9. Membuat dasbor Data Studio

Google Data Studio mengubah data Anda menjadi dasbor dan laporan informatif yang mudah dibaca, mudah dibagikan, dan dapat disesuaikan sepenuhnya.

Dari browser web Anda, buka https://datastudio.google.com

10f8c27060cd7430.png

Di bagian "Mulai laporan baru", klik Kosong, lalu klik tombol Mulai

df1404bc0047595e.png

Centang kotak untuk menyetujui persyaratan, klik tombol Berikutnya, pilih email yang ingin Anda terima, lalu klik tombol Selesai. Sekali lagi, di bagian "Mulai laporan baru", klik Kosong

55e91d3dd88b05ca.png

Klik tombol Buat Sumber Data Baru

a22f3fac05774fc9.png

Klik BigQuery, lalu tombol Authorize, lalu pilih Akun Google yang ingin Anda gunakan dengan Data Studio (akun ini harus sama dengan yang telah Anda gunakan untuk codelab).

5ab03f341edc8964.png

Klik tombol Izinkan

22bcdbb5f5f1d30c.png

Pilih nama project, set data, dan tabel Anda. Kemudian, klik tombol Hubungkan.

dc6b6b0ed9ced509.png

Ubah kolom jenis seperti yang ditunjukkan di bawah (semuanya harus berupa angka kecuali timecollected dan sensorID). Perhatikan bahwa timecollected ditetapkan ke Date Hour (dan bukan hanya Date). Ubah kolom Penggabungan seperti yang ditunjukkan di bawah (titik embun, suhu, kelembapan, dan tekanan harus berupa rata-rata dan yang lainnya harus disetel ke "Tidak Ada"). Klik tombol Buat Laporan.

c60887e29c3bdf9b.png

Konfirmasi dengan mengklik tombol Tambahkan ke laporan

5ec3888dfdd85095.png

Jika diminta untuk memilih Akun Google Anda, lakukan hal tersebut, lalu klik tombol Izinkan agar Data Studio dapat menyimpan laporannya di Google Drive.

7b8006a813b3defa.png

Anda akan melihat kanvas kosong untuk membuat dasbor. Dari baris atas ikon, pilih Deret Waktu.

c7cd97354e1cde04.png

Buat persegi panjang di sudut kiri atas lembar kosong. Gambar harus menempati sekitar ¼ dari total lembar kosong.

e0e82cb19921f835.png

Di sisi kanan jendela, pilih tab Gaya. Ubah Data yang Hilang dari "Garis ke Nol" menjadi "Garis Putus". Di bagian Sumbu Y Kiri, hapus 0 dari Sumbu Min. untuk mengubahnya menjadi (Otomatis).

c7620bfe734d546.png

Klik grafik di sheet dan salin/tempel (Ctrl-C/Ctrl-V) 3 kali. Sejajarkan grafik sehingga masing-masing memiliki ¼ tata letak.

9a7d3faa28996219.png

Klik setiap grafik, lalu di bagian Time Series Properties and Data, klik metrik yang ada (titik embun), pilih metrik lain yang akan ditampilkan hingga keempat pembacaan cuaca (titik embun, suhu, kelembapan, dan tekanan) memiliki grafiknya sendiri.

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

Sekarang Anda memiliki dasbor dasar.

8f59e8f4d44b8552.png

10. Selamat!

Anda telah membuat seluruh pipeline data. Dengan demikian, Anda telah mempelajari cara menggunakan Google Pub/Sub, cara men-deploy Function serverless, cara memanfaatkan BigQuery, dan cara membuat dasbor analisis menggunakan Data Studio. Selain itu, Anda telah melihat cara menggunakan Google Cloud SDK secara aman untuk memasukkan data ke Google Cloud Platform. Terakhir, Anda kini memiliki beberapa pengalaman langsung dengan pola arsitektur penting yang dapat menangani volume tinggi sekaligus mempertahankan ketersediaan.

79cd6c68e83f7fea.png

Membersihkan

Setelah selesai bereksperimen dengan data cuaca dan pipeline analisis, Anda dapat menghapus resource yang sedang berjalan.

Jika Anda membuat sensor IoT, matikan sensor tersebut. Tekan Ctrl-C di jendela terminal untuk menghentikan skrip, lalu ketik perintah berikut untuk mematikan Raspberry Pi

  shutdown -h now

Buka Cloud Functions, klik kotak centang di samping function-weatherPubSubToBQ, lalu klik Hapus

ae95f4f7178262e0.png

Buka Pub/Sub, klik Topic, klik kotak centang di samping topik weatherdata, lalu klik Delete

6fb0bba3163d9a32.png

Buka Penyimpanan, klik kotak centang di samping bucket penyimpanan, lalu klik Hapus

9067fb2af9f907f4.png

Buka bigquery.cloud.google.com, klik panah bawah di samping nama project Anda, klik panah bawah di sebelah kanan set data weatherData, lalu klik Hapus set data.

a952dfeec49248c4.png

Jika diminta, ketik ID set data (weatherData) untuk menyelesaikan penghapusan data.

6310b1cc8da31a77.png