> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metronome.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Big Query

## Prérequis

* Par défaut, l'authentification BigQuery utilise un accès basé sur les rôles. Vous aurez besoin du nom du compte de service du service de synchronisation des données pour accorder l'accès. Il devrait ressembler à `some-name@some-project.iam.gserviceaccount.com`.

## Étape 1 : créer un compte de service dans le projet BigQuery

1. Dans la console GCP, naviguez vers le menu **IAM & Admin**, cliquez sur l'onglet **Service Accounts** et cliquez sur **Create service account** en haut du menu.

![](https://storage.googleapis.com/prequel_docs/images/gcp-create-service-account-menu.png "create service account menu.png")

2. À la première étape, nommez l'utilisateur et cliquez sur **Create and Continue**.

![](https://storage.googleapis.com/prequel_docs/images/gcp-service-account-name-options.png "service account name options.png")

3. À la deuxième étape, accordez à l'utilisateur le rôle **BigQuery User**.

![](https://storage.googleapis.com/prequel_docs/images/gcp-bigquery-user.png)

> 🚧 Comprendre le rôle BigQuery User
>
> Le rôle BigQuery User est un rôle IAM prédéfini qui permet la création de nouveaux datasets, le créateur recevant BigQuery Data Owner sur le nouveau dataset.
>
> Si vous souhaitez éviter d'utiliser le rôle BigQuery User, les permissions minimales requises sont :
>
> * Au **niveau du projet** :
> * `bigquery.datasets.create`
> * `bigquery.datasets.get`
> * `bigquery.jobs.create`
>
> *Remarque : ces permissions minimales supposent que le dataset n'a pas été créé à l'avance. Si vous créez le dataset à l'avance, consultez la note suivante.*

> 🚧 Charger des données dans un Dataset qui existe déjà
>
> Par défaut, un nouveau dataset (avec un nom que vous fournissez) sera créé dans le projet BigQuery. Si vous créez plutôt le dataset à l'avance, vous devrez accorder le rôle **BigQuery Data Owner** à ce compte de service au niveau du dataset.
>
> Dans BigQuery, cliquez sur le dataset existant. Dans l'onglet du dataset, cliquez sur **Sharing**, puis sur **Permissions**. Cliquez sur **Add Principals**. Saisissez le nom du compte de service, puis ajoutez le rôle : **BigQuery Data Owner**
>
> Plus précisément, les permissions minimales requises peuvent être accordées au principal et appliquées au **Dataset** :
>
> * `bigquery.tables.create`
> * `bigquery.tables.delete`
> * `bigquery.tables.get`
> * `bigquery.tables.getData`
> * `bigquery.tables.list`
> * `bigquery.tables.update`
> * `bigquery.tables.updateData`
> * `bigquery.routines.get`
> * `bigquery.routines.list`
>
> Au niveau du **Projet**, vous aurez toujours besoin de `bigquery.jobs.create`, mais vous n'aurez pas besoin de `bigquery.datasets.create` ni de `bigquery.datasets.get`.

4. À la troisième étape (étape **Grant users access to this service account**), dans le champ **Service account users role**, saisissez le **compte de service** fourni (voir prérequis) et cliquez sur **Done**.
5. Une fois créé avec succès, recherchez le compte de service créé dans la liste des comptes de service, cliquez sur le nom du **compte de service** pour afficher les détails et notez l'**email** (remarque : c'est un email différent du compte de service du service).
6. Sélectionnez l'onglet permissions, trouvez le nom de principal fourni (**compte de service** du prérequis), cliquez sur le bouton **Edit principal** (icône crayon), cliquez sur **Add another role**, sélectionnez le rôle **Service Account Token Creator**, puis cliquez sur **Save**.
   > ![](https://storage.googleapis.com/prequel_docs/images/gcp-grant-role.png)

> 🚧 Méthode d'authentification alternative : accorder un accès direct au compte de service
> L'authentification basée sur les rôles est le mode d'authentification préféré pour BigQuery selon les recommandations de GCP. Cependant, fournir une clé de compte de service pour se connecter directement au compte de service créé est une méthode d'authentification alternative qui peut être utilisée si vous préférez.
>
> 1. De retour dans le menu **Service accounts**, cliquez sur le menu déroulant Actions à côté du compte de service nouvellement créé et cliquez sur **Manage keys**.
>    ![](https://storage.googleapis.com/prequel_docs/images/gcp-manage-service-account-keys.png "manage sa keys.png")
> 2. Cliquez sur **Add key**, puis sur **Create new key**.
>    ![](https://storage.googleapis.com/prequel_docs/images/gcp-create-new-key.png "create new key sa.png")
> 3. Sélectionnez le type de clé **JSON** et cliquez sur **Create** et notez la clé générée.

## Étape 2 : créer un bucket de staging

1. Connectez-vous à la Google Cloud Console et naviguez vers **Cloud Storage**. Cliquez sur **Create** pour créer un nouveau bucket.

![](https://storage.googleapis.com/prequel_docs/images/gcp-create-gcs-bucket.png)

1. Choisissez un **name** pour le bucket. Cliquez sur **Continue**. Sélectionnez une **location** pour le bucket de staging. Notez à la fois le **name** et l'emplacement (region).

> 🚧 Choisir une `location` (région)
>
> L'emplacement que vous choisissez pour votre bucket de staging doit correspondre à l'emplacement de votre dataset de destination dans BigQuery. Lors de la création de votre bucket, veillez à choisir une région prise en charge par BigQuery [(voir les régions BigQuery)](https://cloud.google.com/bigquery/docs/locations)
>
> * Si le dataset **n'existe pas** encore, le dataset sera créé pour vous dans la même région que celle où vous avez créé votre bucket.
> * Si le dataset **existe**, la région du dataset doit correspondre à l'emplacement que vous choisissez pour votre bucket.

2. Cliquez sur **continue** et sélectionnez les options suivantes selon vos préférences. Une fois les options renseignées, cliquez sur **Create**.
3. Sur la page **Bucket details** qui apparaît, cliquez sur l'onglet **Permissions**, puis cliquez sur **Add**.

![](https://storage.googleapis.com/prequel_docs/images/gcp-add-permission-to-bucket.png)

4. Dans le menu déroulant **New principles**, ajoutez le compte de service créé à l'**étape 1**, sélectionnez le rôle **Storage Admin** et cliquez sur **Save**.

![](https://storage.googleapis.com/prequel_docs/images/gcp-storage-admin.png)

## Étape 3 : trouver l'ID du projet

1. Connectez-vous à la Google Cloud Console et sélectionnez le menu déroulant de la liste des projets.
2. Notez l'**ID du projet** BigQuery.

![](https://storage.googleapis.com/prequel_docs/images/gcp-project-id.png "project id.png")

## Étape 4 : ajouter votre destination

1. Partagez en toute sécurité avec nous votre **Project ID**, **Bucket Name**, **Bucket Location**, **Destination Schema Name** et **Service Account name** pour finaliser la connexion.
