Dataform peut exécuter des opérations SQL personnalisées qui ne correspondent pas au modèle Dataform de publication d'une table ou d'écriture d'une assertion. Vous pouvez définir des commandes SQL personnalisées que Dataform exécutera dans BigQuery.
Avant de commencer
Dans la console Google Cloud, accédez à la page Dataform page.
Sélectionnez ou créez un dépôt.
Sélectionnez ou créez un espace de travail de développement.
Rôles requis
Pour obtenir les autorisations nécessaires pour définir une opération SQL personnalisée, demandez à votre administrateur de vous accorder le rôle IAM Éditeur Dataform (roles/dataform.editor
) sur les espaces de travail.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Créer un fichier pour la définition d'une opération personnalisée
Stockez les fichiers SQLX de définition d'opérations personnalisées dans le répertoire definitions/
.
Pour créer un fichier SQLX dans le répertoire definitions/
, procédez comme suit:
- Accédez à votre espace de travail de développement.
- Dans le volet Fichiers, à côté de
definitions/
, cliquez sur le menuPlus.
- Cliquez sur Créer un fichier.
Dans le champ Ajouter un chemin d'accès au fichier, saisissez le nom du fichier suivi de
.sqlx
aprèsdefinitions/
. Par exemple,definitions/sample-operation.sqlx
.Les noms de fichiers ne peuvent contenir que des chiffres, des lettres, des traits d'union et des traits de soulignement.
Cliquez sur Créer un fichier.
Définir une opération SQL personnalisée
Vous pouvez définir une opération SQL personnalisée dans un fichier SQLX de type: operations
.
Vous pouvez écrire n'importe quelle instruction SQL BigQuery dans un fichier operations
.
Dataform exécute vos opérations SQL personnalisées dans BigQuery sans modification.
Vous pouvez définir plusieurs opérations SQL personnalisées dans un même fichier SQLX.
BigQuery exécute toutes les opérations d'un fichier dans le même contexte et crée le code SQL exécuté en joignant toutes les opérations avec un point-virgul ;
.
Pour définir plusieurs opérations SQL personnalisées lorsque vous utilisez le framework Dataform Open Source avec un entrepôt de données autre que BigQuery, séparez les opérations avec ---
.
Pour définir une opération SQL personnalisée dans un fichier SQLX dédié, procédez comme suit:
- Dans votre espace de travail de développement, sélectionnez le fichier SQLX pour la définition de l'opération personnalisée.
Dans le fichier, saisissez l'extrait de code suivant :
config { type: "operations" }
En dehors du bloc
config
, écrivez votre opération SQL.Facultatif: cliquez sur Format.
L'exemple de code suivant montre plusieurs opérations SQL personnalisées définies dans un fichier operations
:
config { type: "operations" }
DELETE FROM dataset.table WHERE country = 'GB';
DELETE FROM dataset.table WHERE country = 'FR';
L'exemple de code suivant montre une opération SQL personnalisée qui crée manuellement une vue:
config { type: "operations" }
CREATE OR REPLACE VIEW dataset.table AS (SELECT 1 AS TEST)
Créer une table de sortie référençable
Vous pouvez créer manuellement une table dans une opération SQL personnalisée que vous pouvez référencer dans d'autres scripts. Pour créer une table disponible pour d'autres scripts, vous devez déclarer que l'opération a une sortie.
Pour que le nom de la table de sortie corresponde au nom du fichier operations
, vous pouvez utiliser la fonction self
dans l'opération CREATE
.
Pour créer une table dans une opération personnalisée et la mettre à la disposition d'autres scripts, procédez comme suit:
- Dans votre espace de travail de développement, sélectionnez le fichier SQLX pour la définition de l'opération personnalisée.
Dans le fichier SQLX, saisissez l'extrait de code suivant:
config { type: "operations", hasOutput: true }
Facultatif: Pour faire correspondre le nom de la table de sortie au nom du fichier, écrivez une opération
CREATE
SQL avec la fonctionself
au format suivant:CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
Remplacez CUSTOM_SQL_QUERY par votre instruction
SELECT
SQL de définition de table.Facultatif: cliquez sur Format.
Référencer une table de sortie d'opération SQL personnalisée
- Pour faire référence à une table de sortie d'opération SQL personnalisée dans une définition SQLX d'une autre table, saisissez le nom de fichier de la table de sortie dans la fonction
ref
.
L'exemple de code suivant montre une opération SQL personnalisée dans un fichier custom_SQL_operation_table.sqlx
qui crée une table référençable appelée custom_SQL_operation_table
:
// filename is custom_SQL_operation_table.sqlx
config {
type: "operations",
hasOutput: true
}
CREATE OR REPLACE VIEW ${self()} AS (SELECT 1 AS TEST)
L'exemple de code suivant montre comment faire référence à custom\_SQL\_operation\_table table
dans un fichier SQLX de définition de table:
config { type: "table" }
SELECT * FROM ${ref("custom_SQL_operation_table")}
Créer une table vide
Vous pouvez créer un tableau vide afin qu'un autre service puisse le renseigner avec des données. Vous pouvez créer une table vide dans une opération SQL personnalisée à l'aide de la fonction CREATE TABLE
. Pour pouvoir faire référence à la table vide dans d'autres définitions d'objets de workflow SQL, par exemple des tables et des vues, vous pouvez ajouter la propriété hasOutput:true
au bloc config
de l'opération de table vide.
- Pour créer une table vide, utilisez la fonction
CREATE TABLE
dans un fichiertype: "operations"
au format suivant:
config {
type: "operations",
hasOutput: true // optional, lets you reference the empty table
}
CREATE TABLE ${self()} (
)
L'exemple de code suivant montre une opération SQL personnalisée qui crée une table vide avec une colonne d'entier et une colonne de chaîne. La table vide créée ne peut pas être référencée par d'autres objets de workflow SQL:
config {
type: "operations"
}
CREATE TABLE ${self()} (
x INT64,
y STRING
)
Étape suivante
- Pour découvrir comment créer des opérations SQL personnalisées avec JavaScript, consultez la page Créer des workflows Dataform avec JavaScript.
- Pour savoir comment déclencher des exécutions manuellement, consultez la section Déclencher l'exécution.
- Pour savoir comment utiliser le langage de manipulation de données (LMD) BigQuery, consultez la section Utiliser le langage de manipulation de données (LMD).
- Pour en savoir plus sur la fonction
self
et les autres fonctions intégrées de Dataform, consultez la page API Dataform.