BigQuery est un outil polyvalent qui résout le problème du stockage et de l'interrogation d'ensembles de données volumineux, sans avoir à vous soucier des formats de données, des ressources sous-jacentes ou d'autres éléments qui vous distraient de votre analyse.
Avant de commencer
Nous vous recommandons de consulter les ressources suivantes :
Apprenez-en plus sur Tools for PowerShell.
Comprenez les contrôles d'accès dans BigQuery, certaines tâches nécessitant des autorisations supplémentaires pour s'exécuter.
Obtenez des informations supplémentaires sur BigQuery.
Ensemble de données
Pour utiliser BigQuery dans un projet Google Cloud, commencez par créer un ensemble de données (Dataset
) à l'aide du cmdlet New-BqDataset
. Cette opération part d'informations de base et crée la ressource côté serveur. Localement, un objet de référence Dataset
est renvoyé.
# Makes a new dataset with DatasetId "page_views". $dataset = New-BqDataset "page_views" -Name "Page Views" ` -Description "Page views from 2014 onwards"
Pour obtenir un objet de référence pour un ensemble de données existant, utilisez le cmdlet Get-BqDataset
.
# Two ways to get a Dataset: by DatasetId and by Dataset object. $dataset = Get-BqDataset "page_views" $dataset = $dataset | Get-BqDataset
Cet objet $dataset
peut être modifié et transmis à d'autres cmdlets, tels que Set-BqDataset
, pour manipuler les ressources cloud. Ce cmdlet gère également l'ajout et la suppression de libellés avec -SetLabel
et -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"}
Les libellés permettent d'ajouter des tags aux ensembles de données sous forme de mots-clés et/ou de valeurs afin de pouvoir les filtrer et les rechercher ultérieurement. Le cmdlet Get-BqDataset
accepte le paramètre -Filter
qui permet un contrôle fin lors du listage des ensembles de données à traiter avec d'autres cmdlets.
# Filter Datasets by the department label. $stats = Get-BqDataset -Filter "department:statistics"
Les Datasets
(ensembles de données) peuvent être supprimés par le cmdlet Remove-BqDataset
. Ce cmdlet est compatible avec ShouldProcess
(paramètre -WhatIf
) et demande confirmation à l'utilisateur avant de supprimer un Dataset
non vide. Cette protection peut être contournée en spécifiant le paramètre -Force
dans le script.
# Deletes $dataset. $dataset | Remove-BqDataset
Table
Chaque Dataset
(ensemble de données) contient plusieurs Tables
où sont stockées les données. Ces Tables
sont créées avec le cmdlet New-BqTable
en transmettant un identifiant de table et leDataset
(ensemble de données) dans lequel la table doit être créée. Le Dataset
peut être transmis à l'aide d'un objet ou du paramètre -DatasetId
. Les cmdlets Get-BqTable
et Set-BqTable
fonctionnent de la même manière que les cmdlets d'ensemble de données Get-
et Set-
ci-dessus.
# 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
Les Tables
peuvent être supprimées à l'aide du cmdlet Remove-BqTable
. Ce cmdlet est compatible avec ShouldProcess (paramètre -WhatIf
) et demande confirmation à l'utilisateur avant de supprimer une Table
contenant des données. Cette protection peut être contournée en spécifiant le paramètre -Force
.
# Deletes $table. $table | Remove-BqTable -Force
Schéma
Les Tables
ont besoin de Schemas
décrivant le format des données qu'elles contiennent. Les schémas sont créés à l'aide des cmdlets New-BqSchema
et Set-BqSchema
. Dans le cmdlet New-BqSchema
, le format des lignes peut être spécifié directement sous forme de paramètres, ou sous la forme d'un tableau JSON décrivant les lignes. Les résultats du cmdlet New-BqSchema
sont toujours transmis au cmdlet Set-BqSchema
, qui peut générer un objet Schema
ou appliquer le schéma à une Table
existante.
# 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
Si les objets Schema
sont créés à l'avance, ils peuvent être transmis en tant que paramètres lors de la création des objets Table
.
# Creates a new table with the Schema object from above. $table = $dataset | New-BqTable "logs2014" -Schema $schema
Ligne de tableau
À l'intérieur des Tables
, les données sont ajoutées dans des lignes, qui peuvent ensuite être supprimées. Ces lignes sont manipulables à l'aide des cmdlets Add-BqTableRow
et Get-BqTableRow
.
Le cmdlet Add-BqTableRow
accepte les fichiers d'import aux formats CSV, JSON et AVRO.
# 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
Tâches
Il existe quatre types de Jobs
(tâches) : Query (requête), Load (chargement), Extract (extraction) et Copy (copie). Les tâches Query exécutent des requêtes de type SQL et génèrent des résultats dans des tables.
# Query Job: starts a query and outputs results into $table. Start-BqJob -Query "SELECT * FROM ``page_views:logs2014``" ` -Destination $table
Les tâches Load (Importation) importent des fichiers Cloud Storage dans 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"
Les tâches Extract (extraction) exportent des tables BigQuery dans Cloud Storage.
# Extract Job: exports $src_table to a Cloud Storage file. $job = $src_table | Start-BqJob ` -Extract CSV "gs://page_views/logs2014.csv"
Les tâches Copy copient une table existante dans une autre table, nouvelle ou existante.
# 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 }
Utilisez le cmdlet Start-BqJob
pour démarrer une tâche (quel qu'en soit le type) en tant qu'opération asynchrone.
Spécifiez le paramètre -PollUntilComplete
si vous souhaitez que le cmdlet attende jusqu'à ce que la tâche se termine. Le cmdlet Receive-BqJob
renvoie les résultats d'une tâche "Query" (requête) une fois celle-ci terminée. Le cmdlet Get-BqJob
renvoie un objet contenant des renseignements sur l'état actuel et les statistiques de la tâche. Le cmdlet Stop-BqJob
envoie une requête au serveur pour arrêter une tâche donnée, puis retourne un résultat immédiatement.
Remarque sur le formatage des noms de table dans les chaînes de requête : le format BigQuery indique que les noms de table doivent être entourés d'accents graves, mais les accents graves sont également les opérateurs d'échappement de PowerShell. Pour cette raison, il convient de doubler les accents graves afin de les protéger. Voir l'exemple de code des tâches Query (Requête) plus haut.