Instructions LCD (langage de contrôle de données) en langage SQL standard

Les instructions LCD BigQuery (langage de contrôle de données) vous permettent de configurer et contrôler des ressources BigQuery à l'aide de la syntaxe de requête SQL standard.

Instructions de contrôle d'accès

Utilisez ces instructions pour accorder ou retirer l'accès aux ressources BigQuery.

Pour en savoir plus sur le contrôle de l'accès à des ressources BigQuery spécifiques, consultez les pages suivantes :

Autorisations requises

Vous devez disposer des autorisations suivantes pour exécuter les instructions GRANT et REVOKE.

Type de ressource Autorisations
Ensemble de données bigquery.datasets.update
Table bigquery.tables.setIamPolicy
Afficher bigquery.tables.setIamPolicy

Instruction GRANT

Accorde des rôles aux utilisateurs sur les ressources BigQuery.

Syntaxe

GRANT role_list
  ON resource_type resource_name
  TO user_list

Où :

  • role_list est un rôle, ou une liste de rôles séparés par une virgule, qui contient les autorisations que vous souhaitez accorder. Pour en savoir plus sur les types de rôles disponibles, consultez la page Comprendre les rôles.

  • resource_type est le type de ressource auquel le rôle est appliqué. Valeurs acceptées : SCHEMA (équivalent à l'ensemble de données), TABLE et VIEW.

  • resource_name est le nom de la ressource pour laquelle vous souhaitez accorder l'autorisation.

  • user_list est une liste d'utilisateurs, séparés par une virgule, auxquels le rôle est attribué.

user_list

Spécifiez les utilisateurs en respectant les formats suivants :

Type d'utilisateur Syntaxe Exemple
Compte Google user:$user@$domain user:first.last@example.com
Groupe Google group:$group@$domain group:my-group@example.com
Compte de service serviceAccount:$user@$project.iam.gserviceaccount.com serviceAccount:robot@example.iam.gserviceaccount.com
Domaine Google domain:$domain domain:example.com
Tous les comptes Google specialGroup:allAuthenticatedUsers specialGroup:allAuthenticatedUsers
Tous les utilisateurs specialGroup:allUsers specialGroup:allUsers

Pour plus d'informations sur chaque type d'utilisateur mentionné dans ce tableau, consultez la section Concepts liés à l'identité.

Exemple

L'exemple suivant accorde aux utilisateurs tom@example.com et sara@example.com le rôle bigquery.dataViewer sur un ensemble de données nommé my_dataset :

GRANT `roles/bigquery.dataViewer` ON SCHEMA `mycompany`.revenue
TO "user:tom@example.com", "user:sara@example.com"

Instruction REVOKE

Supprime des rôles pour une liste d'utilisateurs sur des ressources BigQuery.

Syntaxe

REVOKE role_list
  ON {SCHEMA | TABLE | VIEW} resource_name
  FROM user_list

Où :

  • role_list est un rôle, ou une liste de rôles séparés par une virgule, qui contient les autorisations que vous souhaitez accorder. Pour en savoir plus sur les types de rôles disponibles, consultez la page Comprendre les rôles.

  • resource type correspond au type de ressource duquel le rôle sera supprimé. Valeurs acceptées : SCHEMA (équivalent à l'ensemble de données), TABLE et VIEW.

  • resource_name est le nom de la ressource pour laquelle vous souhaitez révoquer le rôle.

  • user_list est une liste d'utilisateurs, séparés par une virgule, pour lesquels le rôle est révoqué.

Exemple

L'exemple suivant supprime le rôle bigquery.admin de l'ensemble de données myProject.myDataset pour le groupe example-team@example.com et un compte de service :

REVOKE `roles/bigquery.admin` ON SCHEMA myProject.myDataset
FROM "group:example-team@example.com", "serviceAccount:user@test-project.iam.gserviceaccount.com"

Instructions de réservation

Utilisez ces instructions pour créer et supprimer des engagements de capacité, des réservations et des attributions de réservation. Pour en savoir plus, consultez la page Présentation de Reservations.

Instruction CREATE CAPACITY

Achète des emplacements en créant un engagement de capacité.

CREATE CAPACITY
project_id.location_id.commitment_id
AS JSON
capacity_json_object

Où :

  • project_id est l'ID du projet d'administration qui gérera la propriété de cet engagement.
  • location_id est l'emplacement du projet.
  • commitment_id est l'ID de l'engagement. Sa valeur doit être propre au projet et à l'emplacement. Il doit commencer et se terminer par une lettre minuscule ou un chiffre, et ne contenir que des lettres minuscules, des chiffres et des tirets.
  • capacity_json_object est une chaîne JSON décrivant l'engagement de capacité.

capacity_json_object

Spécifie un objet JSON qui contient les champs suivants :

NAME TYPE Détails
plan Chaîne Forfait d'engagement à souscrire. Valeurs autorisées : FLEX, MONTHLY, ANNUAL. Pour en savoir plus, consultez la section Forfaits d'engagement.
renewal_plan Chaîne Option de renouvellement de l'engagement. S'applique uniquement lorsque plan est défini sur ANNUAL. Pour en savoir plus, consultez la section Renouveler des engagements.
slot_count Entier Nombre d'emplacements figurant dans cet engagement.

Exemple

L'exemple suivant crée un engagement de capacité de 100 emplacements Flex situés dans la région region-us et gérés par un projet admin_project :

CREATE CAPACITY `admin_project.region-us.my-commitment`
AS JSON """{
 "slot_count": 100,
 "plan": "FLEX"
}"""

Instruction CREATE RESERVATION

Crée une réservation.

CREATE RESERVATION
project_id.location_id.reservation_id
AS JSON
reservation_json_object

Où :

  • project_id est l'ID du projet d'administration dans lequel l'engagement de capacité a été créé.
  • location_id est l'emplacement du projet.
  • reservation_id est l'ID de réservation.
  • reservation_json_object est une chaîne JSON qui décrit la réservation.

reservation_json_object

Spécifie un objet JSON qui contient les champs suivants :

NAME TYPE Détails
ignore_idle_slots Booléen Si la valeur est true, la réservation n'utilise que les emplacements qui lui sont provisionnés. La valeur par défaut est false. Pour en savoir plus, consultez la section Emplacements inactifs.
slot_capacity Entier Nombre d'emplacements à allouer à cette réservation.

Exemple

L'exemple suivant crée une réservation de 100 emplacements dans le projet admin_project :

CREATE RESERVATION `admin_project.region-us.prod`
AS JSON """{
 "slot_capacity": 100
}"""

Instruction CREATE ASSIGNMENT

Attribue un projet, un dossier ou une organisation à une réservation.

CREATE ASSIGNMENT
project_id.location_id.reservation_id.assignment_id
AS JSON
assignment_json_object

Où :

  • project_id est l'ID du projet d'administration dans lequel la réservation a été créée.
  • location_id est l'emplacement du projet.
  • reservation_id est l'ID de réservation.
  • assignment_id est l'ID de l'attribution. Sa valeur doit être propre au projet et à l'emplacement. Il doit commencer et se terminer par une lettre minuscule ou un chiffre, et ne contenir que des lettres minuscules, des chiffres et des tirets.
  • assignment_json_object est une chaîne JSON qui décrit l'attribution.

Pour supprimer un projet de toutes les réservations et utiliser plutôt la facturation à la demande, définissez reservation_id sur none.

assignment_json_object

Spécifie un objet JSON qui contient les champs suivants :

NAME TYPE Détails
assignee Chaîne ID du projet, du dossier ou de l'organisation à attribuer à la réservation.
job_type Chaîne Type de tâche à attribuer à la réservation. Les valeurs autorisées incluent : QUERY, PIPELINE et ML_EXTERNAL. Pour en savoir plus, consultez la section Attributions.

Exemple

L'exemple suivant attribue le projet my_project à la réservation prod pour les tâches de requête :

CREATE ASSIGNMENT `admin_project.region-us.prod.my_assignment`
AS JSON """{
 "assignee": "projects/my_project",
 "job_type": "QUERY"
}"""

L'exemple suivant attribue une organisation à la réservation prod pour les tâches de pipeline, telles que les tâches de chargement et d'exportation :

CREATE ASSIGNMENT `admin_project.region-us.prod.my_assignment`
AS JSON """{
 "assignee": "organizations/1234",
 "job_type": "PIPELINE"
}"""

Instruction DROP CAPACITY

Supprime un engagement de capacité.

DROP CAPACITY [IF EXISTS]
project_id.location_id.capacity-commitment-id

Où :

  • IF EXISTS : si vous incluez cette clause et que l'engagement spécifié n'existe pas, l'instruction aboutit sans action. Si vous omettez cette clause et que l'engagement n'existe pas, l'instruction renvoie une erreur.
  • project_id est l'ID du projet d'administration dans lequel la réservation a été créée.
  • location_id est l'emplacement du projet.
  • capacity-commitment-id est l'ID de l'engagement de capacité.

Pour trouver l'ID d'engagement de capacité, interrogez la table INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT.

Exemple

L'exemple suivant supprime l'engagement de capacité :

DROP RESERVATION `admin_project.region-us.1234`

Instruction DROP RESERVATION

Supprime une réservation.

DROP RESERVATION [IF EXISTS]
project_id.location_id.reservation_id

Où :

  • IF EXISTS : si vous incluez cette clause et que la réservation n'existe pas, l'instruction aboutit sans action. Si vous omettez cette clause et que la réservation n'existe pas, l'instruction renvoie une erreur.
  • project_id est l'ID du projet d'administration dans lequel la réservation a été créée.
  • location_id est l'emplacement du projet.
  • reservation_id est l'ID de réservation.

Exemple

L'exemple suivant supprime la réservation prod :

DROP RESERVATION `admin_project.region-us.prod`

Instruction DROP ASSIGNMENT

Supprime une attribution de réservation.

DROP ASSIGNMENT [IF EXISTS]
project_id.location_id.reservation_id.assignment_id

Où :

  • IF EXISTS : si vous incluez cette clause et que l'attribution n'existe pas, l'instruction aboutit sans action. Si vous omettez cette clause et que l'attribution n'existe pas, l'instruction renvoie une erreur.
  • project_id est l'ID du projet d'administration dans lequel la réservation a été créée.
  • location_id est l'emplacement du projet.
  • reservation_id est l'ID de réservation.
  • assignment_id est l'ID de l'attribution.

Pour trouver l'ID d'attribution, interrogez la table INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT.

Exemple

L'exemple suivant supprime une attribution de la réservation nommée prod :

DROP ASSIGNMENT `admin_project.region-us.prod.1234`