BigQuery adalah alat serbaguna yang memecahkan masalah penyimpanan dan kueri set data besar tanpa harus khawatir dengan format data, resource pokok, dan hal-hal lain yang mengalihkan perhatian Anda dari analisis.
Sebelum Anda memulai
Anda harus meninjau referensi berikut:
Pelajari Tools for PowerShell lebih lanjut.
Pahami Kontrol Akses BigQuery karena beberapa tugas memerlukan izin tambahan untuk dijalankan.
Pelajari BigQuery lebih lanjut.
Set data
Untuk menggunakan BigQuery dalam project Google Cloud, buat Dataset
terlebih dahulu menggunakan cmdlet New-BqDataset
. Tindakan ini akan mengambil informasi dasar
dan membuat sisi server resource. 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 flag -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. Perlindungan ini dapat diabaikan 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 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 confirmasi
pengguna sebelum menghapus Table
yang berisi data. Perlindungan ini dapat
diabaikan dengan parameter -Force
.
# Deletes $table. $table | Remove-BqTable -Force
Skema
Tables
memerlukan Schemas
untuk menjelaskan format data yang dikandungnya. 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
dibuat terlebih dahulu.
# 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 bergaya 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 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 Salin menyalin tabel yang ada ke tabel baru 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 jenis tugas ini sebagai operasi asinkron.
Gunakan flag -PollUntilComplete
agar cmdlet diblokir hingga tugas selesai. Receive-BqJob
akan menampilkan hasil tugas kueri setelah selesai. Get-BqJob
akan menampilkan objek referensi yang menjelaskan status saat ini
dan statistik pada tugas. Stop-BqJob
akan mengirim permintaan ke server untuk menghentikan tugas tertentu, lalu segera ditampilkan.
Catatan tentang pemformatan nama tabel dalam string kueri: Format BigQuery menentukan 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 Kueri untuk mengetahui contohnya.