BigQuery adalah alat serbaguna yang mengatasi masalah penyimpanan dan pembuatan kueri set data besar tanpa harus mengkhawatirkan format data, resource dasar, dan hal-hal lain yang mengalihkan perhatian Anda dari analisis.
Sebelum Anda memulai
Anda harus meninjau referensi berikut:
Pelajari Alat untuk PowerShell lebih lanjut.
Pahami BigQuery Access Controls karena beberapa tugas memerlukan izin tambahan agar dapat dijalankan.
Pelajari BigQuery lebih lanjut.
Set data
Untuk menggunakan BigQuery di project Google Cloud, buat Dataset
terlebih dahulu menggunakan cmdlet New-BqDataset
. Tindakan ini akan mengambil informasi dasar
dan membuat resource di sisi server. Secara lokal, objek referensi Dataset
ditampilkan.
# Makes a new dataset with DatasetId "page_views". $dataset = New-BqDataset "page_views" -Name "Page Views" ` -Description "Page views from 2014 onwards"
Untuk mendapatkan objek referensi bagi set data yang ada, gunakan Get-BqDataset
.
# Two ways to get a Dataset: by DatasetId and by Dataset object. $dataset = Get-BqDataset "page_views" $dataset = $dataset | Get-BqDataset
Objek $dataset
ini dapat diubah dan diteruskan ke cmdlet lebih lanjut seperti
Set-BqDataset
untuk memanipulasi resource cloud. Cmdlet ini juga menangani penambahan
dan penghapusan label dengan -SetLabel
dan -ClearLabel
.
# Updates the Name field of $dataset. $dataset.Name = "PageView Data" $dataset = Set-BqDataset "page_views" # Adds the labels 'department' and 'purpose' to $dataset. $dataset = Set-BqDataset "page_views" -SetLabel ` @{"department" = "statistics"; "purpose" = "metrics"}
Label digunakan untuk memberikan tag pada set data dengan kata kunci dan/atau nilai sehingga dapat difilter dan ditelusuri nanti. Cmdlet Get-BqDataset
memiliki flag -Filter
bawaan yang memungkinkan kontrol terperinci saat mencantumkan set data untuk diproses dengan cmdlet lainnya.
# Filter Datasets by the department label. $stats = Get-BqDataset -Filter "department:statistics"
Datasets
dapat dihapus oleh cmdlet Remove-BqDataset
. Cmdlet ini mendukung ShouldProcess
(parameter -WhatIf
) dan akan meminta konfirmasi pengguna sebelum menghapus Dataset
yang tidak kosong. Pengamanan ini dapat diabaikan dengan
parameter -Force
saat membuat skrip.
# Deletes $dataset. $dataset | Remove-BqDataset
Tabel
Setiap Dataset
memiliki jumlah Tables
untuk menyimpan data. Tables
dibuat menggunakan cmdlet New-BqTable
dengan meneruskan TableId dan Dataset
tempat tabel akan berada. Dataset
dapat diteruskan oleh
objek atau dengan parameter -DatasetId
. Get-BqTable
dan Set-BqTable
berfungsi dengan cara yang sama seperti cmdlet set data Get-
dan Set-
di atas.
# Creates a new table in the dataset from above. $table = $dataset | New-BqTable "logs2014" ` -Description "Log data from Jan 2014 to Dec 2014 inclusive" # Gets a reference object for "page_views:logs2014". $table = Get-BqTable "logs2014" -DatasetId "page_views" # Modifies the Name attribute of logs2014. $table.Name = "Logs 2014" $table = $table | Set-BqTable
Tables
dapat dihapus oleh cmdlet Remove-BqTable
. Cmdlet ini mendukung
ShouldProcess (parameter -WhatIf
) dan akan meminta konfirmasi
pengguna sebelum menghapus Table
yang berisi data. Pengamanan ini dapat
diabaikan dengan parameter -Force
.
# Deletes $table. $table | Remove-BqTable -Force
Skema
Tables
memerlukan Schemas
untuk mendeskripsikan format data yang ada di dalamnya. Skema dibuat dengan cmdlet New-BqSchema
dan Set-BqSchema
. New-BqSchema
dapat menggunakan format baris sebagai parameter secara langsung atau sebagai array JSON dari deskripsi baris. Hasil New-BqSchema
selalu diteruskan ke
Set-BqSchema
yang dapat menghasilkan objek Schema
atau menetapkan skema
ke Table
yang ada.
# Assigns a Schema to $table $table = Get-BqTable "logs2014" -DatasetId "page_views" New-BqSchema "Page" "STRING" | New-BqSchema "Referrer" "STRING" | New-BqSchema "Timestamp" "DATETIME" | Set-BqSchema $table # Creates a schema object to be used in multiple tables. $schema = New-BqSchema "Page" "STRING" | New-BqSchema "Referrer" "STRING" | New-BqSchema "Timestamp" "DATETIME" | Set-BqSchema
Objek Schema
dapat diteruskan sebagai parameter dalam pembuatan Table
jika
dibuat sebelumnya.
# Creates a new table with the Schema object from above. $table = $dataset | New-BqTable "logs2014" -Schema $schema
TableRow
Data ditambahkan dan dihapus dari Tables
pada Baris. Baris ini dapat diakses menggunakan cmdlet Add-BqTableRow
dan Get-BqTableRow
.
Add-BqTableRow
mengambil file CSV, JSON, dan AVRO untuk diimpor ke BigQuery.
# Ingests a CSV file and appends its rows onto the table 'my_dataset:my_table'. $table = New-BqTable "logs2014" -DatasetId "page_views" $table | Add-BqTableRow CSV $filename -SkipLeadingRows 1 ` -WriteMode WriteAppend # Returns a list of the rows in 'page_views:logs2014'. $list = Get-BqTable "logs2014" -DatasetID "page_views" | Get-BqTableRow
Pekerjaan
Ada empat jenis Jobs
: Kueri, Muat, Ekstrak, dan Salin. Tugas kueri
menjalankan kueri gaya SQL dan hasil output ke tabel.
# Query Job: starts a query and outputs results into $table. Start-BqJob -Query "SELECT * FROM ``page_views:logs2014``" ` -Destination $table
Tugas Load mengimpor file Cloud Storage ke BigQuery.
# Load Job: adds TableRows to $table from the file specified # on Cloud Storage. $job = $dest_table | Start-BqJob ` -Load CSV "gs://page_views/server_logs_raw_2014.csv"
Tugas Extract mengekspor tabel BigQuery ke Cloud Storage.
# Extract Job: exports $src_table to a Cloud Storage file. $job = $src_table | Start-BqJob ` -Extract CSV "gs://page_views/logs2014.csv"
Tugas Copy akan menyalin tabel yang ada ke tabel lain atau yang sudah ada.
# Copy Job: Starts a copy job, cancels it, and polls until the job is completely done. $job = $table | Start-BqJob -Copy $dest_table $result = $job | Stop-BqJob while ($result.Status.State -ne "DONE") { $result = $result | Get-BqJob }
Start-BqJob
memulai salah satu jenis tugas ini sebagai operasi asinkron.
Gunakan flag -PollUntilComplete
untuk memblokir cmdlet hingga tugas
selesai. Receive-BqJob
akan menampilkan hasil tugas kueri setelah
selesai. Get-BqJob
akan menampilkan objek referensi yang memerinci status saat ini
dan statistik pada tugas. Stop-BqJob
akan mengirim permintaan ke server untuk
menghentikan tugas tertentu, lalu segera kembali.
Catatan tentang cara memformat nama tabel dalam string kueri: Format BigQuery menentukan bahwa nama tabel harus dikelilingi oleh tanda kutip terbalik, tetapi tanda kutip terbalik juga merupakan operator escape PowerShell. Oleh karena itu, {i>backtick <i}harus di-escape dengan menambahkan {i>backtick<i} kedua. Lihat kode contoh tugas Query sebagai contoh.