---
title: "Connecter Google BigQuery"
description: "Connecter Datarelix à Google BigQuery : OAuth, clé de compte de service, portée du jeu de données, correspondance de région et filtres de partition."
canonical: https://docs.datarelix.ai/fr/guides/connections/bigquery/
---

# 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.*`](https://cloud.google.com/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`](https://cloud.google.com/bigquery/docs/access-control) (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

```ini
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](https://cloud.google.com/bigquery/docs/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](https://cloud.google.com/iam/docs/service-accounts-create) (**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](https://cloud.google.com/bigquery/docs/access-control) :
   - `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](https://cloud.google.com/iam/docs/keys-create-delete) 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**

```ini
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**

```ini
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ô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. |
