Aller au contenu

Connecter Google BigQuery

Datarelix se connecte à BigQuery via un service en lecture seule qui utilise BigQuery API de Google et GoogleSQL (également appelé Standard SQL).

Prérequis

  • Un projet Google Cloud (le projet de facturation qui paiera les requêtes).
  • L’accès au ou aux jeux de données que vous voulez analyser. BigQuery a ceci de particulier que le projet de données peut différer du projet de facturation — par exemple pour interroger les jeux de données bigquery-public-data.*.
  • Pour l’authentification par compte de service : un compte de service disposant des rôles BigQuery Data Viewer et BigQuery Job User (Data Viewer sur le projet de données, Job User sur le projet de facturation).
  • Pour OAuth : un compte Google autorisé à accorder la portée BigQuery (https://www.googleapis.com/auth/bigquery).

Le modèle à deux projets

Les tâches (jobs) BigQuery s’exécutent dans votre projet de facturation mais lisent depuis le projet de données :

  • Projet de facturation — à renseigner sur la connexion (champ Project ID). Sert à initialiser le client BigQuery et à payer les requêtes.
  • Projet de données — indiquez-le comme premier segment du champ Allowed dataset (jeu de données autorisé), par exemple bigquery-public-data.usa_names. Le client BigQuery gère les lectures inter-projets de façon transparente.

Formulaire de connexion

Project ID (billing): your-billing-project
Location: US (or your preferred region)
Allowed dataset: data-project.dataset_name
Auth mode: one of the two below

Location doit correspondre à la région du jeu de données. BigQuery exécute la tâche de requête dans l’emplacement que vous indiquez et la rejette s’il ne correspond pas à celui du jeu de données — par exemple, un jeu de données situé dans asia-northeast1 interrogé avec Location: US échoue avec « Not found: Dataset … was not found in location US. » Réglez Location (emplacement) sur la région du jeu de données. Les jeux de données publics bigquery-public-data.* résident dans la multirégion US. Voir BigQuery locations.

Modes d’authentification

Service account JSON

Un compte de service Google Cloud s’authentifie à l’aide d’un fichier de clé JSON — c’est le mode Service account JSON (JSON de compte de service). La clé est stockée chiffrée. Adapté à un usage automatisé ou planifié, sans utilisateur présent pour autoriser l’accès de façon interactive.

Configuration

  1. Dans la console Google Cloud, créez un compte de service (IAM & Admin → Service Accounts → Create Service Account).
  2. Donnez-lui un nom explicite (par exemple datarelix-bq-reader).
  3. À l’étape Grant this service account access to project, attribuez ces deux rôles :
    • BigQuery Data Viewer (sur le projet de données, s’il diffère du projet de facturation)
    • BigQuery Job User (sur le projet de facturation)
  4. Une fois le compte créé, créez une clé JSON pour ce compte de service (Keys → Add Key → Create new key → JSON). Un fichier .json est téléchargé automatiquement.
  5. Ouvrez le fichier et copiez-en l’intégralité du contenu.

Où trouver vos identifiants

  • Le fichier de clé JSON téléchargé à l’étape 4 ci-dessus.
  • Si vous avez déjà un compte de service : IAM & Admin → Service Accounts → cliquez sur le compte → onglet Keys → ajoutez une nouvelle clé JSON.

Ce qu’il faut saisir

Project ID (billing): your-billing-project
Location: US
Allowed dataset: your-project.your_dataset
Auth mode: Service account JSON
Service account JSON: { "type": "service_account", "project_id": "...", ... }

Collez l’intégralité du contenu du fichier JSON téléchargé dans le champ Service account JSON.


OAuth

L’utilisateur accorde l’accès à BigQuery via l’écran de consentement Google. Un jeton d’actualisation est stocké chiffré et limité à cette connexion. Adapté aux analystes travaillant de façon interactive, quand vous voulez attribuer chaque requête à un utilisateur.

L’autorisation d’une connexion BigQuery est toujours une étape distincte et explicite. Se connecter à Datarelix avec Google ne fournit que l’identité et ne touche pas à vos données — les deux sont volontairement dissociés.

À propos de la portée que Google vous affiche. L’écran de consentement Google nomme la portée https://www.googleapis.com/auth/bigquery, dont la description parle de gestion de vos données. C’est la portée que BigQuery exige pour exécuter une requête, car une requête crée une tâche. Datarelix n’émet que des SELECT : chaque instruction est validée avant exécution et les opérations qui ne sont pas des lectures sont rejetées par le service de requêtes, et non simplement déconseillées. Si vous voulez que la restriction soit appliquée par Google autant que par nous, utilisez l’authentification par compte de service avec BigQuery Data Viewer + BigQuery Job User et aucun rôle en écriture.

Configuration

Aucune configuration côté base de données — l’accès à BigQuery est régi par les autorisations IAM du compte Google. Le compte qui autorise la connexion doit disposer de :

  • BigQuery Data Viewer sur le projet de données (ou le jeu de données).
  • BigQuery Job User sur le projet de facturation.

Où attribuer les autorisations

Console Google Cloud → IAM & Admin → IAM → trouvez ou ajoutez l’utilisateur → attribuez les rôles ci-dessus.

Ce qu’il faut saisir

Project ID (billing): your-billing-project
Location: US
Allowed dataset: your-project.your_dataset
Auth mode: OAuth

Après l’enregistrement, Datarelix ouvre une fenêtre de consentement Google. Connectez-vous avec le compte Google qui possède les autorisations IAM requises. La connexion est autorisée dès que vous approuvez la portée BigQuery.


Sémantique de la portée

BigQuery exige un Allowed dataset explicite — une portée vide n’est pas prise en charge. Le format est data-project.dataset_name. Pour analyser plusieurs jeux de données, créez plusieurs connexions.

Découverte

Entièrement prise en charge via l’API Python BigQuery (et non le INFORMATION_SCHEMA SQL, qui peut échouer sur les jeux de données publics). Le module d’introspection liste les tables, détecte les exigences de partitionnement et signale les tables à filtre de partition obligatoire, afin que les requêtes générées incluent automatiquement le filtre requis.

Limites

  • Requêtes inter-jeux de données au sein d’une même connexion : techniquement possibles en SQL BigQuery via des références pleinement qualifiées project.dataset.table, mais Datarelix restreint les requêtes au jeu de données autorisé.
  • Tables à filtre de partition obligatoire : le filtre de partition est ajouté automatiquement lorsque les métadonnées de la table sont disponibles. Relancez la découverte si vous ajoutez de nouvelles tables partitionnées.

Dépannage

SymptômeCause probableSolution
403 Access DeniedRôle BigQuery Data Viewer manquantAttribuez-le sur le projet de données dans IAM & Admin → IAM.
403 caller does not have permission (tâches)BigQuery Job User manquant sur le projet de facturationAttribuez-le sur le projet de facturation.
partitionFilter requiredInterrogation d’une table à filtre de partition obligatoire, sans filtreRelancez la découverte pour que la colonne de partition soit reprise automatiquement.
La fenêtre OAuth se ferme sans jetonLe navigateur a bloqué la fenêtreAutorisez les fenêtres pop-up pour *.datarelix.ai.
JSON de compte de service refuséFormat incorrect ou collage tronquéCollez l’intégralité du contenu du fichier .json, accolades { } comprises.