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 VieweretBigQuery 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-projectLocation: US (or your preferred region)Allowed dataset: data-project.dataset_nameAuth mode: one of the two belowLocation 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-northeast1interrogé avecLocation: 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 publicsbigquery-public-data.*résident dans la multirégionUS. 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
- Dans la console Google Cloud, créez un compte de service (IAM & Admin → Service Accounts → Create Service Account).
- Donnez-lui un nom explicite (par exemple
datarelix-bq-reader). - À 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)
- Une fois le compte créé, créez une clé JSON pour ce compte de service (Keys → Add Key → Create new key → JSON). Un fichier
.jsonest téléchargé automatiquement. - 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-projectLocation: USAllowed dataset: your-project.your_datasetAuth mode: Service account JSONService 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 Viewersur le projet de données (ou le jeu de données).BigQuery Job Usersur 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-projectLocation: USAllowed dataset: your-project.your_datasetAuth mode: OAuthAprè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ôme | Cause probable | Solution |
|---|---|---|
403 Access Denied | Rôle BigQuery Data Viewer manquant | Attribuez-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 facturation | Attribuez-le sur le projet de facturation. |
partitionFilter required | Interrogation d’une table à filtre de partition obligatoire, sans filtre | Relancez la découverte pour que la colonne de partition soit reprise automatiquement. |
| La fenêtre OAuth se ferme sans jeton | Le navigateur a bloqué la fenêtre | Autorisez 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. |