EXECUTE JOB SERVICE¶
Note
Cette opération n’est actuellement pas couverte par le niveau de service défini dans Politique de support et accord de niveau de service de Snowflake.
Exécute un service Snowpark Container Services sous forme de tâche.
Un service, créé à l’aide de CREATE SERVICE, fonctionne longtemps et vous devez l’arrêter explicitement lorsqu’il n’est plus nécessaire. Par ailleurs, une tâche, créée à l’aide de EXECUTE JOB SERVICE, est un service qui se termine à la sortie de votre code, à l’instar d’une procédure stockée. Lorsque tous les conteneurs sortent, la tâche est terminée.
La tâche s’exécute de manière synchrone ; la commande EXECUTE JOB SERVICE se termine à la sortie de tous les conteneurs. Une fois la tâche terminée, Snowflake effectue automatiquement le nettoyage nécessaire. Mais ce nettoyage ne s’effectue pas immédiatement. Snowflake conserve la tâche pendant une courte période afin de permettre aux clients de surveiller et de déboguer le service de la tâche après l’exécution.
Notez que les paramètres de commande doivent être spécifiés dans un ordre précis. Pour plus d’informations, voir la section Notes sur l’utilisation.
- Voir aussi :
SYSTEM$GET_SERVICE_STATUS — Obsolète , SYSTEM$GET_SERVICE_LOGS
Syntaxe¶
EXECUTE JOB SERVICE
IN COMPUTE POOL <compute_pool_name>
{
fromSpecification
| fromSpecificationTemplate
}
NAME = [<db>.<schema>.]<name>
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ COMMENT = '<string_literal>']
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Où :
fromSpecification ::= { FROM @<stage> SPECIFICATION_FILE = '<yaml_file_stage_path>' | FROM SPECIFICATION <specification_text> }fromSpecificationTemplate ::= { FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>' | FROM SPECIFICATION_TEMPLATE <specification_text> } USING ( <key> => <value> [ , <key> => <value> [ , ... ] ] )
Paramètres requis¶
IN COMPUTE POOL compute_pool_name
Spécifie le nom du pool de calcul de votre compte sur lequel le service doit être exécuté.
FROM stage
Spécifie la zone de préparation interne de Snowflake où le fichier de spécification est stocké ; par exemple,
@tutorial_stage
.SPECIFICATION_FILE = 'yaml_file_stage_path'
Spécifie le chemin d’accès au fichier de spécification du service sur la zone de préparation ; par exemple,
'some-dir/echo_spec.yaml'
.SPECIFICATION_TEMPLATE_FILE = 'yaml_file_stage_path'
Spécifie le chemin d’accès au fichier de modèle de la spécification de service dans la zone de préparation ; par exemple,
'some-dir/echo_template_spec.yaml'
. LorsqueSPECIFICATION_TEMPLATE_FILE
est spécifié, le paramètreUSING
est obligatoire.FROM SPECIFICATION specification_text
Spécifie la spécification du service. Vous pouvez utiliser une paire de signes du dollar (
$$
) pour délimiter le début et la fin de la chaîne de spécification.FROM SPECIFICATION_TEMPLATE specification_text
Spécifie la spécification du service. Vous pouvez utiliser une paire de signes du dollar (
$$
) pour délimiter le début et la fin de la chaîne de spécification. LorsqueSPECIFICATION_TEMPLATE
est spécifié, le paramètreUSING
est obligatoire.NAME = [db.schema.]name
Nom (à savoir, identificateur) du service qui s’exécute comme une tâche ; il doit être unique pour le schéma dans lequel le service est créé.
Les noms entre guillemets pour les caractères spéciaux ou les noms sensibles à la casse ne sont pas pris en charge. La même contrainte s’applique également aux noms des bases de données et des schémas dans lesquels vous créez un service. En d’autres termes, les noms de bases de données et de schémas sans guillemets sont valables lors de la création d’un service.
Paramètres facultatifs¶
EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )
Spécifie les noms des intégrations d’accès externes qui permettent à votre tâche d’accéder à des sites externes. Les noms de cette liste sont sensibles à la casse. Par défaut, les conteneurs d’application n’ont pas la permission d’accéder à Internet. Si vous souhaitez autoriser votre tâche à accéder à un site externe, créez une intégration d’accès externe (EAI) et configurez votre tâche pour qu’il utilise cette intégration. Pour plus d’informations, voir Sortie réseau.
QUERY_WAREHOUSE = warehouse_name
Entrepôt à utiliser si un conteneur de service se connecte à Snowflake pour exécuter une requête, mais ne spécifie pas explicitement un entrepôt à utiliser.
La valeur par défaut est : aucun.
COMMENT = 'string_literal'
Spécifie un commentaire pour le service.
Par défaut : aucune valeur
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
Spécifie le nom de la balise et la valeur de la chaîne de la balise.
La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.
Pour plus d’informations sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.
USING ( key => value [ , key => value [ , ... ] ] )
Vous permet de fournir des valeurs pour paramétrer l’expansion du modèle de spécification.
USING
est nécessaire lors de l’utilisation d’un modèle de spécification (FROM SPECIFICATION_TEMPLATE_FILE
ouFROM SPECIFICATION_TEMPLATE
). Les paires clé-valeur doivent former une liste séparée par des virgules.Où :
key
est le nom de la variable de modèle. Le nom de variable de modèle peut éventuellement être placé entre guillemets doubles ("
).value
est la valeur à attribuer à la variable du modèle. Les valeurs de chaîne doivent être encadrées par'
ou par$$
. La valeur doit être soit alphanumérique, soit un JSON valide.
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :
Privilège |
Objet |
Remarques |
---|---|---|
CREATE SERVICE |
Schéma |
|
USAGE |
Pool de calcul |
|
READ |
Zone de préparation |
C’est à ce stade que la spécification est stockée. |
READ |
Référentiel d’images |
Référentiel d’images référencées par la spécification. |
Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
Notes sur l’utilisation¶
Lorsque vous appelez EXECUTE JOB SERVICE, les paramètres doivent être fournis dans l’ordre suivant : spécifiez le pool de calcul, suivi d’autres propriétés, et pour finir la spécification du service (fournissez soit le nom du fichier de spécification dans la zone de préparation, soit la spécification en ligne).
Concernant les métadonnées :
Attention
Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.
Exemples¶
Exécutez un service de tâche Snowpark Container Services :
EXECUTE JOB SERVICE
IN COMPUTE POOL tutorial_compute_pool
NAME = tutorial_db.data_schema.example_job
FROM @tutorial_stage
SPECIFICATION_FILE='my_job_spec.yaml';