BigQuery adalah alat serbaguna yang memecahkan masalah penyimpanan dan kueri set data besar tanpa harus mengkhawatirkan format data, resource pokok, dan hal-hal lain yang mengganggu analisis Anda.
Sebelum Anda memulai
Anda harus meninjau referensi berikut:
Pelajari lebih lanjut Tools for PowerShell.
Pahami Kontrol Akses BigQuery karena beberapa tugas memerlukan izin tambahan untuk dijalankan.
Pelajari BigQuery lebih lanjut.
Set data
Untuk menggunakan BigQuery dalam Google Cloud project, 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
akan 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 untuk 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 memberi tag pada set data dengan kata kunci dan/atau nilai sehingga dapat difilter dan ditelusuri nanti. Cmdlet Get-BqDataset
memiliki tanda -Filter
bawaan yang memungkinkan kontrol terperinci saat mencantumkan set data untuk diproses dengan
cmdlet lain.
# 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 dilewati dengan parameter
-Force
saat membuat skrip.
# Deletes $dataset. $dataset | Remove-BqDataset
Tabel
Setiap Dataset
memiliki sejumlah Tables
untuk menyimpan data. Tables
dibuat dengan 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 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 dilewati dengan parameter -Force
.
# Deletes $table. $table | Remove-BqTable -Force
Skema
Tables
perlu Schemas
menjelaskan format data yang ada di dalamnya. Skema
dibuat dengan cmdlet New-BqSchema
dan Set-BqSchema
. New-BqSchema
dapat menggunakan format untuk baris sebagai parameter secara langsung atau sebagai array JSON
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 objek tersebut
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
di Baris. Baris ini dapat diakses menggunakan cmdlet Add-BqTableRow
dan Get-BqTableRow
.
Add-BqTableRow
menggunakan 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 menghasilkan output ke tabel.
# Query Job: starts a query and outputs results into $table. Start-BqJob -Query "SELECT * FROM ``page_views:logs2014``" ` -Destination $table
Tugas Pemuatan 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 Ekstrak 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 Salin menyalin tabel yang ada ke tabel baru atau tabel lain 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 jenis tugas ini sebagai operasi asinkron.
Gunakan tanda -PollUntilComplete
agar cmdlet diblokir hingga tugas selesai. Receive-BqJob
akan menampilkan hasil tugas kueri setelah tugas tersebut selesai. Get-BqJob
akan menampilkan objek referensi yang memerinci status saat ini dan statistik tugas. Stop-BqJob
akan mengirim permintaan ke server untuk
menghentikan tugas tertentu, lalu segera ditampilkan.
Catatan tentang memformat nama tabel dalam string kueri: Format BigQuery menetapkan bahwa nama tabel harus diapit oleh tanda petik terbalik, tetapi tanda petik terbalik juga merupakan operator escape PowerShell. Oleh karena itu, tanda petik terbalik harus di-escape dengan menambahkan tanda petik terbalik kedua. Lihat kode contoh tugas Query untuk melihat contoh.