BigQuery è uno strumento versatile che risolve il problema dell'archiviazione ed eseguire query su enormi set di dati senza doversi preoccupare dei formati dei dati, risorse sottostanti e altri elementi che ti distolgono dall'analisi.
Prima di iniziare
Dovresti consultare le seguenti risorse:
Scopri di più sugli strumenti per PowerShell.
Informazioni sull'accesso a BigQuery di controllo, in quanto alcune attività richiedono le autorizzazioni di esecuzione.
Scopri di più su BigQuery.
Set di dati
Per utilizzare BigQuery in un progetto Google Cloud, devi prima creare
un Dataset
utilizzando il cmdlet New-BqDataset
. che prendono le informazioni di base
e crea la risorsa lato server. A livello locale, un Dataset
oggetto referenza.
# Makes a new dataset with DatasetId "page_views". $dataset = New-BqDataset "page_views" -Name "Page Views" ` -Description "Page views from 2014 onwards"
Per ottenere un oggetto di riferimento per un set di dati esistente, utilizza Get-BqDataset
.
# Two ways to get a Dataset: by DatasetId and by Dataset object. $dataset = Get-BqDataset "page_views" $dataset = $dataset | Get-BqDataset
L'oggetto $dataset
può essere modificato e passato in altri cmdlet come
Set-BqDataset
per manipolare le risorse cloud. Questo cmdlet gestisce anche l'aggiunta
e rimuovendo le etichette con -SetLabel
e -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"}
Le etichette vengono utilizzate per contrassegnare i set di dati con parole chiave e/o valori in modo che possano
filtrati e cercati in un secondo momento. Il cmdlet Get-BqDataset
ha un -Filter
integrato
che consente un controllo granulare quando si elencano i set di dati da elaborare con
e altri cmdlet.
# Filter Datasets by the department label. $stats = Get-BqDataset -Filter "department:statistics"
Datasets
può essere eliminato dal cmdlet Remove-BqDataset
. Questo cmdlet supporta
ShouldProcess
(il parametro -WhatIf
) e richiederà la conferma da parte dell'utente
prima di eliminare un elemento Dataset
non vuoto. Questa protezione può essere aggirata
Parametro -Force
durante la creazione di script.
# Deletes $dataset. $dataset | Remove-BqDataset
Tabella
Ogni Dataset
ha un numero di Tables
per conservare i dati. Tables
sono
creato con il cmdlet New-BqTable
passando a TableId
e Dataset
in cui si troverà la tabella. Il parametro Dataset
può essere trasmesso da
o con il parametro -DatasetId
. Get-BqTable
e Set-BqTable
funzionano allo stesso modo dei cmdlet del set di dati Get-
e Set-
riportati sopra.
# 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
può essere eliminato dal cmdlet Remove-BqTable
. Questo cmdlet supporta
ShouldProcess (il parametro -WhatIf
) e richiede l'inserimento dell'utente
conferma prima di eliminare un elemento Table
che contiene dati. Questa salvaguardia può essere
ignorato con il parametro -Force
.
# Deletes $table. $table | Remove-BqTable -Force
Schema
Tables
devono Schemas
per descrivere il formato dei dati che contengono. Schemi
vengono create con i cmdlet New-BqSchema
e Set-BqSchema
. New-BqSchema
può utilizzare i formati delle righe direttamente come parametri o come array JSON
di descrizioni delle righe. I risultati di New-BqSchema
vengono sempre trasmessi a
Set-BqSchema
che può restituire un oggetto Schema
o assegnare lo schema
a un Table
esistente.
# 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
Schema
oggetti possono essere passati come parametri nella creazione di Table
se sono
creato in anticipo.
# Creates a new table with the Schema object from above. $table = $dataset | New-BqTable "logs2014" -Schema $schema
TableRow
I dati vengono aggiunti e rimossi da Tables
in Righe. Queste righe sono
accessibile con i cmdlet Add-BqTableRow
e Get-BqTableRow
.
Add-BqTableRow
richiede i file CSV, JSON e AVRO da importare in 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
Job
Esistono quattro tipi di Jobs
: query, caricamento, estrazione e copia. Query
che eseguono query in stile SQL e restituiscono i risultati nelle tabelle.
# Query Job: starts a query and outputs results into $table. Start-BqJob -Query "SELECT * FROM ``page_views:logs2014``" ` -Destination $table
Caricamento dei job importare i file di Cloud Storage in 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"
Estrai esportazione dei job dalle tabelle BigQuery a Cloud Storage.
# Extract Job: exports $src_table to a Cloud Storage file. $job = $src_table | Start-BqJob ` -Extract CSV "gs://page_views/logs2014.csv"
I job di copia copiano una tabella esistente a un'altra tabella nuova o esistente.
# 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
avvia uno qualsiasi di questi tipi di job come operazione asincrona.
Utilizza il flag -PollUntilComplete
per impostare il blocco cmdlet fino a quando il job viene
fatto. Receive-BqJob
restituirà i risultati di un job di query una volta
completato. Get-BqJob
restituirà un oggetto di riferimento che descrive in dettaglio lo stato attuale
e statistiche sul lavoro. Stop-BqJob
invierà una richiesta al server a
interrompe un determinato job e poi
ritorna immediatamente.
Nota sulla formattazione dei nomi delle tabelle nelle stringhe di query: BigQuery specifica che i nomi delle tabelle devono essere racchiusi tra apici inversi, ma gli accenti rovesciati sono anche operatori di escape di PowerShell. Per questo motivo, l'accento grave devono essere preceduti dal carattere di escape aggiungendo un secondo accento grave. Guarda l'esempio di job Query per vedere un esempio.