Créer une vue autorisée


Dans ce tutoriel, vous allez créer une vue autorisée dans BigQuery qui sera utilisée par vos analystes de données. Les vues autorisées vous permettent de partager des résultats de requête avec des utilisateurs et des groupes particuliers sans leur donner accès aux données sources sous-jacentes. L'accès aux données sources est accordé à la vue, et non à un utilisateur ou à un groupe. Vous pouvez également utiliser la requête SQL de la vue pour exclure des colonnes et des champs des résultats de la requête.

Une autre approche que l'utilisation d'une vue autorisée consiste à configurer des contrôles d'accès au niveau des colonnes sur les données sources, puis à accorder à vos utilisateurs l'accès à une vue qui interroge les données contrôlées. Pour en savoir plus sur les contrôles des accès au niveau des colonnes, consultez Présentation du contrôle des accès au niveau des colonnes.

Si vous disposez de plusieurs vues autorisées qui accèdent au même ensemble de données source, vous pouvez autoriser l'ensemble de données contenant les vues au lieu d'autoriser une vue individuelle.

Objectifs

  • Créez un ensemble de données contenant vos données sources.
  • Exécutez une requête pour charger des données dans une table de destination de l'ensemble de données source.
  • Créez un ensemble de données contenant votre vue autorisée.
  • Créez une vue autorisée à partir d'une requête SQL qui limite les colonnes que vos analystes de données peuvent voir dans les résultats de la requête.
  • Accordez à vos analystes de données l'autorisation d'exécuter des tâches de requête.
  • Accordez à vos analystes de données l'accès à l'ensemble de données contenant la vue autorisée.
  • Autorisez la vue autorisée à accéder à l'ensemble de données source.

Coûts

Dans ce document, vous utilisez les composants facturables de Trusted Cloud by S3NSsuivants :

Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.

Les nouveaux utilisateurs de Trusted Cloud peuvent bénéficier d'un essai sans frais.

Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. Enable the BigQuery API.

    Enable the API

  4. Assurez-vous de disposer des autorisations nécessaires pour effectuer les tâches décrites dans ce document.
  5. Créer un ensemble de données pour stocker vos données sources

    Commencez par créer un ensemble de données pour y stocker les données sources.

    Pour créer votre ensemble de données source, choisissez l'une des options suivantes :

    Console

    1. Accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans le volet Explorateur, à côté du projet dans lequel vous souhaitez créer l'ensemble de données, cliquez sur Afficher les actions > Créer un ensemble de données.

    3. Sur la page Créer un ensemble de données, procédez comme suit :

      1. Dans le champ ID de l'ensemble de données, saisissez github_source_data.

      2. Dans le champ Type d'emplacement, vérifiez que Multirégional est sélectionné.

      3. Pour Multirégional, sélectionnez US ou UE. Toutes les ressources que vous créez dans ce tutoriel doivent se trouver dans la même région multirégionale.

      4. Cliquez sur Créer un ensemble de données.

    SQL

    Utilisez l'instruction LDD CREATE SCHEMA :

    1. Dans la console Trusted Cloud , accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans l'éditeur de requête, saisissez l'instruction suivante :

      CREATE SCHEMA github_source_data;

    3. Cliquez sur Exécuter.

    Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

    Java

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Create a source dataset to store your table.
    Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));

    Python

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    from google.cloud import bigquery
    from google.cloud.bigquery.enums import EntityTypes
    
    client = bigquery.Client()
    source_dataset_id = "github_source_data"
    source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)
    
    
    source_dataset = bigquery.Dataset(source_dataset_id_full)
    # Specify the geographic location where the dataset should reside.
    source_dataset.location = "US"
    source_dataset = client.create_dataset(source_dataset)  # API request

    Créer une table et charger vos données sources

    Une fois l'ensemble de données source créé, remplissez une table en enregistrant les résultats d'une requête SQL dans une table de destination. La requête extrait des données de l'ensemble de données public GitHub.

    Console

    1. Accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans Query editor (éditeur de requête), saisissez la requête suivante :

      SELECT
        commit,
        author,
        committer,
        repo_name
      FROM
        `bigquery-public-data.github_repos.commits`
      LIMIT
        1000;
      
    3. Cliquez sur Plus et sélectionnez Paramètres de requête.

    4. Destination : sélectionnez Définir une table de destination pour les résultats de la requête.

    5. Dans le champ Ensemble de données, saisissez PROJECT_ID.github_source_data.

      Remplacez PROJECT_ID par l'ID du projet.

    6. Dans le champ ID de table, saisissez github_contributors.

    7. Cliquez sur Enregistrer.

    8. Cliquez sur Exécuter.

    9. Une fois la requête terminée, dans le volet Explorateur, développez github_source_data, puis cliquez sur github_contributors.

    10. Pour vérifier que les données ont bien été écrites dans la table, cliquez sur l'onglet Aperçu.

    Java

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Populate a source table
    String tableQuery =
        "SELECT commit, author, committer, repo_name"
            + " FROM `bigquery-public-data.github_repos.commits`"
            + " LIMIT 1000";
    QueryJobConfiguration queryConfig =
        QueryJobConfiguration.newBuilder(tableQuery)
            .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
            .build();
    bigquery.query(queryConfig);

    Python

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    source_table_id = "github_contributors"
    job_config = bigquery.QueryJobConfig()
    job_config.destination = source_dataset.table(source_table_id)
    sql = """
        SELECT commit, author, committer, repo_name
        FROM `bigquery-public-data.github_repos.commits`
        LIMIT 1000
    """
    client.query_and_wait(
        sql,
        # Location must match that of the dataset(s) referenced in the query
        # and of the destination table.
        location="US",
        job_config=job_config,
    )  # API request - starts the query and waits for query to finish

    Créer un ensemble de données pour stocker votre vue autorisée

    Après avoir créé votre ensemble de données source, vous allez créer un ensemble de données distinct pour stocker la vue autorisée que vous partagerez avec vos analystes de données. Plus tard, vous accorderez à la vue autorisée l'accès aux données de l'ensemble de données source. Vos analystes de données pourront accéder à la vue autorisée, mais pas aux données sources.

    Les vues autorisées doivent être créées dans un ensemble de données différent de celui des données sources. De cette façon, les propriétaires de données peuvent autoriser les utilisateurs à accéder à la vue autorisée sans accorder simultanément l'accès aux données sous-jacentes. L'ensemble de données des données source et l'ensemble de données de la vue autorisée doivent se trouver dans le même emplacement régional.

    Pour créer un ensemble de données dans lequel stocker votre vue, choisissez l'une des options suivantes :

    Console

    1. Accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans le panneau Explorer, sélectionnez le projet dans lequel vous souhaitez créer l'ensemble de données.

    3. Développez l'option Afficher les actions, puis cliquez sur Créer un ensemble de données.

    4. Sur la page Créer un ensemble de données, procédez comme suit :

      1. Dans le champ ID de l'ensemble de données, saisissez shared_views.

      2. Dans le champ Type d'emplacement, vérifiez que Multirégional est sélectionné.

      3. Pour Multirégional, sélectionnez US ou UE. Toutes les ressources que vous créez dans ce tutoriel doivent se trouver dans la même région multirégionale.

      4. Cliquez sur Créer un ensemble de données.

    SQL

    Utilisez l'instruction LDD CREATE SCHEMA :

    1. Dans la console Trusted Cloud , accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans l'éditeur de requête, saisissez l'instruction suivante :

      CREATE SCHEMA shared_views;

    3. Cliquez sur Exécuter.

    Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

    Java

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Create a separate dataset to store your view
    Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));

    Python

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    shared_dataset_id = "shared_views"
    shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)
    
    
    shared_dataset = bigquery.Dataset(shared_dataset_id_full)
    shared_dataset.location = "US"
    shared_dataset = client.create_dataset(shared_dataset)  # API request

    Créer la vue autorisée dans le nouvel ensemble de données

    Dans le nouvel ensemble de données, créez la vue que vous souhaitez autoriser. Il s'agit de la vue que vous partagerez avec vos analystes de données. Cette vue est créée à l'aide d'une requête SQL qui exclut les colonnes que les analystes de données ne doivent pas voir.

    La table source github_contributors contient deux champs de type RECORD : author et committer. Pour ce tutoriel, votre vue autorisée exclut toutes les données de l'auteur, à l'exception de son nom, ainsi que toutes les données du validateur, à l'exception de son nom.

    Pour créer cette vue dans le nouvel ensemble de données, choisissez l'une des options suivantes :

    Console

    1. Accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans l'éditeur de requête, saisissez la requête suivante.

      SELECT
      commit,
      author.name AS author,
      committer.name AS committer,
      repo_name
      FROM
      `PROJECT_ID.github_source_data.github_contributors`;

      Remplacez PROJECT_ID par l'ID du projet.

    3. Cliquez sur Enregistrer > Enregistrer la vue.

    4. Dans la boîte de dialogue Enregistrer la vue, procédez comme suit :

      1. Pour le champ Projet, vérifiez que votre projet est sélectionné.

      2. Dans le champ Ensemble de données, saisissez shared_views.

      3. Pour Table, saisissez github_analyst_view.

      4. Cliquez sur Enregistrer.

    SQL

    Utilisez l'instruction LDD CREATE VIEW :

    1. Dans la console Trusted Cloud , accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans l'éditeur de requête, saisissez l'instruction suivante :

      CREATE VIEW shared_views.github_analyst_view
      AS (
        SELECT
          commit,
          author.name AS author,
          committer.name AS committer,
          repo_name
        FROM
          `PROJECT_ID.github_source_data.github_contributors`
      );

      Remplacez PROJECT_ID par l'ID du projet.

    3. Cliquez sur Exécuter.

    Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

    Java

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Create the view in the new dataset
    String viewQuery =
        String.format(
            "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
            projectId, sourceDatasetId, sourceTableId);
    
    ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);
    
    Table view =
        bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));

    Python

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    shared_view_id = "github_analyst_view"
    view = bigquery.Table(shared_dataset.table(shared_view_id))
    sql_template = """
        SELECT
            commit, author.name as author,
            committer.name as committer, repo_name
        FROM
            `{}.{}.{}`
    """
    view.view_query = sql_template.format(
        client.project, source_dataset_id, source_table_id
    )
    view = client.create_table(view)  # API request

    Autoriser vos analystes de données à exécuter des tâches de requête

    Pour interroger la vue, vos analystes de données doivent disposer de l'autorisation bigquery.jobs.create afin de pouvoir exécuter des tâches de requête. Ils doivent également avoir accès à la vue. Dans cette section, vous attribuez le rôle bigquery.user à vos analystes de données. Le rôle bigquery.user inclut l'autorisation bigquery.jobs.create. Plus tard, vous accorderez à vos analystes de données l'autorisation d'accéder à la vue.

    Pour attribuer au groupe d'analystes de données le rôle bigquery.user au niveau du projet, procédez comme suit :

    1. Dans la console Trusted Cloud , accédez à la page IAM.

      Accéder à IAM

    2. Assurez-vous que votre projet est sélectionné dans le sélecteur de projet.

    3. Cliquez sur Accorder l'accès.

    4. Dans la boîte de dialogue Accorder l'accès à, procédez comme suit :

      1. Dans le champ Nouveaux comptes principaux, saisissez le groupe contenant vos analystes de données. Exemple :data_analysts@example.com

      2. Dans le champ Sélectionner un rôle, recherchez le rôle Utilisateur BigQuery et sélectionnez-le.

      3. Cliquez sur Enregistrer.

    Accorder à vos analystes de données l'autorisation d'interroger la vue autorisée

    Pour que vos analystes de données puissent interroger la vue, ils doivent disposer du rôle bigquery.dataViewer au niveau de l'ensemble de données ou de la vue. Si vous attribuez ce rôle au niveau de l'ensemble de données, vos analystes auront accès à toutes les tables et vues de l'ensemble de données. Étant donné que l'ensemble de données créé dans ce tutoriel ne contient qu'une seule vue autorisée, vous accordez l'accès au niveau de l'ensemble de données. Si vous disposez d'une collection de vues autorisées auxquelles vous devez accorder l'accès, envisagez d'utiliser un ensemble de données autorisé à la place.

    Le rôle bigquery.user que vous avez précédemment accordé à vos analystes de données leur donne les autorisations requises pour créer des tâches de requête. Cependant, ils ne peuvent pas interroger la vue, sauf s'ils disposent également d'un accès bigquery.dataViewer à la vue autorisée ou à l'ensemble de données qui la contient.

    Pour accorder à vos analystes de données l'accès bigquery.dataViewer à l'ensemble de données contenant la vue autorisée, procédez comme suit :

    Console

    1. Accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans le volet Explorateur, sélectionnez l'ensemble de données shared_views pour ouvrir l'onglet Détails.

    3. Cliquez sur Partage > Autorisations.

    4. Dans le volet Autorisations de partage, cliquez sur Ajouter un compte principal.

    5. Dans Nouveaux comptes principaux, saisissez le groupe contenant vos analystes de données (par exemple, data_analysts@example.com).

    6. Cliquez sur Sélectionner un rôle, puis sélectionnez BigQuery > Lecteur de données BigQuery.

    7. Cliquez sur Enregistrer.

    8. Cliquez sur Fermer.

    Java

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Assign access controls to the dataset containing the view
    List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
    viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
    sharedDataset.toBuilder().setAcl(viewAcl).build().update();

    Python

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    # analyst_group_email = 'data_analysts@example.com'
    access_entries = shared_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry("READER", EntityTypes.GROUP_BY_EMAIL, analyst_group_email)
    )
    shared_dataset.access_entries = access_entries
    shared_dataset = client.update_dataset(
        shared_dataset, ["access_entries"]
    )  # API request

    Autoriser la vue à accéder à l'ensemble de données source

    Une fois que vous avez créé des contrôles d'accès pour l'ensemble de données contenant la vue autorisée, vous accordez à la vue autorisée l'accès à l'ensemble de données source. Cette autorisation permet à la vue, mais pas à votre groupe d'analystes de données, d'accéder aux données sources.

    Pour accorder à la vue autorisée l'accès aux données source, choisissez l'une des options suivantes :

    Console

    1. Accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans le volet Explorateur, sélectionnez l'ensemble de données github_source_data pour ouvrir l'onglet Détails.

    3. Cliquez sur Partage > Autoriser les vues.

    4. Dans le volet Vues autorisées, saisissez PROJECT_ID.shared_views.github_analyst_view dans le champ Vue autorisée.

      Remplacez PROJECT_ID par l'ID du projet.

    5. Cliquez sur Ajouter une autorisation.

    Java

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Authorize the view to access the source dataset
    List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
    srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
    sourceDataset.toBuilder().setAcl(srcAcl).build().update();

    Python

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    access_entries = source_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry(None, EntityTypes.VIEW, view.reference.to_api_repr())
    )
    source_dataset.access_entries = access_entries
    source_dataset = client.update_dataset(
        source_dataset, ["access_entries"]
    )  # API request

    Vérifier la configuration

    Une fois la configuration effectuée, un membre de votre groupe d'analystes de données (par exemple, data_analysts) peut la vérifier en interrogeant la vue.

    Pour valider la configuration, un analyste de données doit exécuter la requête suivante :

    1. Accédez à la page BigQuery.

      Accéder à BigQuery

    2. Dans l'éditeur de requête, saisissez l'instruction suivante :

      SELECT
        *
      FROM
        `PROJECT_ID.shared_views.github_analyst_view`;

      Remplacez PROJECT_ID par l'ID du projet.

    3. Cliquez sur Exécuter.

    Les résultats de la requête sont semblables à ceux-ci. Seuls le nom de l'auteur et celui du commiteur sont visibles dans les résultats.

    Résultats de la requête après l&#39;interrogation de la vue autorisée

    Pour en savoir plus sur l'exécution des requêtes, consultez Exécuter une requête interactive.

    Code source complet

    Voici le code source complet du tutoriel à titre de référence.

    Java

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    // Create a source dataset to store your table.
    Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));
    
    // Populate a source table
    String tableQuery =
        "SELECT commit, author, committer, repo_name"
            + " FROM `bigquery-public-data.github_repos.commits`"
            + " LIMIT 1000";
    QueryJobConfiguration queryConfig =
        QueryJobConfiguration.newBuilder(tableQuery)
            .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
            .build();
    bigquery.query(queryConfig);
    
    // Create a separate dataset to store your view
    Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));
    
    // Create the view in the new dataset
    String viewQuery =
        String.format(
            "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
            projectId, sourceDatasetId, sourceTableId);
    
    ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);
    
    Table view =
        bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));
    
    // Assign access controls to the dataset containing the view
    List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
    viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
    sharedDataset.toBuilder().setAcl(viewAcl).build().update();
    
    // Authorize the view to access the source dataset
    List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
    srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
    sourceDataset.toBuilder().setAcl(srcAcl).build().update();

    Python

    Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

    Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

    Avant d'exécuter des exemples de code, définissez la variable d'environnement GOOGLE_CLOUD_UNIVERSE_DOMAIN sur s3nsapis.fr.

    # Create a source dataset
    from google.cloud import bigquery
    from google.cloud.bigquery.enums import EntityTypes
    
    client = bigquery.Client()
    source_dataset_id = "github_source_data"
    source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)
    
    
    source_dataset = bigquery.Dataset(source_dataset_id_full)
    # Specify the geographic location where the dataset should reside.
    source_dataset.location = "US"
    source_dataset = client.create_dataset(source_dataset)  # API request
    
    # Populate a source table
    source_table_id = "github_contributors"
    job_config = bigquery.QueryJobConfig()
    job_config.destination = source_dataset.table(source_table_id)
    sql = """
        SELECT commit, author, committer, repo_name
        FROM `bigquery-public-data.github_repos.commits`
        LIMIT 1000
    """
    client.query_and_wait(
        sql,
        # Location must match that of the dataset(s) referenced in the query
        # and of the destination table.
        location="US",
        job_config=job_config,
    )  # API request - starts the query and waits for query to finish
    
    # Create a separate dataset to store your view
    shared_dataset_id = "shared_views"
    shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)
    
    
    shared_dataset = bigquery.Dataset(shared_dataset_id_full)
    shared_dataset.location = "US"
    shared_dataset = client.create_dataset(shared_dataset)  # API request
    
    # Create the view in the new dataset
    shared_view_id = "github_analyst_view"
    view = bigquery.Table(shared_dataset.table(shared_view_id))
    sql_template = """
        SELECT
            commit, author.name as author,
            committer.name as committer, repo_name
        FROM
            `{}.{}.{}`
    """
    view.view_query = sql_template.format(
        client.project, source_dataset_id, source_table_id
    )
    view = client.create_table(view)  # API request
    
    # Assign access controls to the dataset containing the view
    # analyst_group_email = 'data_analysts@example.com'
    access_entries = shared_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry("READER", EntityTypes.GROUP_BY_EMAIL, analyst_group_email)
    )
    shared_dataset.access_entries = access_entries
    shared_dataset = client.update_dataset(
        shared_dataset, ["access_entries"]
    )  # API request
    
    # Authorize the view to access the source dataset
    access_entries = source_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry(None, EntityTypes.VIEW, view.reference.to_api_repr())
    )
    source_dataset.access_entries = access_entries
    source_dataset = client.update_dataset(
        source_dataset, ["access_entries"]
    )  # API request

    Effectuer un nettoyage

    Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

    Supprimer le projet

    Console

    1. In the Trusted Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    gcloud

    1. In the Trusted Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Supprimer des ressources individuelles

    Vous pouvez également supprimer les ressources individuelles utilisées dans ce tutoriel en procédant comme suit :

    1. Supprimez la vue autorisée.

    2. Supprimez l'ensemble de données contenant la vue autorisée.

    3. Supprimez la table dans l'ensemble de données source.

    4. Supprimez l'ensemble de données source.

    Étant donné que vous avez créé les ressources utilisées dans ce tutoriel, aucune autorisation supplémentaire n'est requise pour les supprimer.

    Étapes suivantes