EXECUTE JOB SERVICE¶
Nota
Esta operação não é atualmente coberta pelo nível de serviço definido na Política de suporte e Acordo de nível de serviço da Snowflake.
Executa um serviço do Snowpark Container Services como um trabalho.
Um serviço criado usando CREATE SERVICE é de longa duração e você deve interrompê-lo explicitamente quando não for mais necessário. Por outro lado, um trabalho criado usando EXECUTE JOB SERVICE é um serviço que termina quando seu código sai, semelhante a um procedimento armazenado. Quando todos os contêineres saírem, o trabalho estará concluído.
O trabalho é executado de forma síncrona; o comando EXECUTE JOB SERVICE é concluído após a saída de todos os contêineres. Após a conclusão do trabalho, o Snowflake faz a limpeza necessária automaticamente. Mas essa limpeza não acontece imediatamente. O Snowflake mantém o trabalho por um curto período para permitir que os clientes monitorem e depurem o serviço do trabalho após a execução.
Observe que os parâmetros do comando devem ser especificados em uma ordem específica. Para obter mais informações, consulte a seção Notas de uso.
- Consulte também:
SYSTEM$GET_SERVICE_STATUS — Obsoleto , SYSTEM$GET_SERVICE_LOGS
Sintaxe¶
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>' , ... ] ) ]
Onde:
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> [ , ... ] ] )
Parâmetros obrigatórios¶
IN COMPUTE POOL compute_pool_name
Especifica o nome do pool de computação na sua conta no qual o serviço será executado.
FROM stage
Especifica o estágio interno do Snowflake onde o arquivo de especificação está armazenado; por exemplo,
@tutorial_stage
.SPECIFICATION_FILE = 'yaml_file_stage_path'
Especifica o caminho para o arquivo de especificação de serviço no estágio; por exemplo,
'some-dir/echo_spec.yaml'
.SPECIFICATION_TEMPLATE_FILE = 'yaml_file_stage_path'
Especifica o caminho para o arquivo de modelo de especificação de serviço no estágio; por exemplo,
'some-dir/echo_template_spec.yaml'
. QuandoSPECIFICATION_TEMPLATE_FILE
é especificado, o parâmetroUSING
é obrigatório.FROM SPECIFICATION specification_text
Especifica a especificação de serviço. Você pode usar um par de cifrões (
$$
) para delimitar o início e o fim da cadeia de caracteres de especificação.FROM SPECIFICATION_TEMPLATE specification_text
Especifica a especificação de serviço. Você pode usar um par de cifrões (
$$
) para delimitar o início e o fim da cadeia de caracteres de especificação. QuandoSPECIFICATION_TEMPLATE
é especificado, o parâmetroUSING
é obrigatório.NAME = [db.schema.]name
O nome (que é o identificador) do serviço, que é executado como um trabalho; ele deve ser exclusivo para o esquema no qual o serviço é criado.
Nomes entre aspas para caracteres especiais ou nomes que diferenciam maiúsculas de minúsculas não são suportados. A mesma restrição também se aplica a nomes de bancos de dados e esquemas onde você cria um serviço. Ou seja, nomes de bancos de dados e esquemas sem aspas são válidos na criação de um serviço.
Parâmetros opcionais¶
EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )
Especifica os nomes das integrações de acesso externo que permitem que seu trabalho acesse sites externos. Os nomes nesta lista diferenciam maiúsculas de minúsculas. Por padrão, os contêineres de aplicativos não têm permissão para acessar a internet. Se você quiser permitir que seu trabalho acesse um site externo, crie uma integração de acesso externo (EAI) e configure seu trabalho para usar essa integração. Para obter mais informações, consulte Saída de rede.
QUERY_WAREHOUSE = warehouse_name
Warehouse a ser usado se um contêiner de serviço se conectar ao Snowflake para executar uma consulta, mas não especificar explicitamente um warehouse a ser usado.
Padrão: nenhum.
COMMENT = 'string_literal'
Especifica um comentário para o serviço.
Padrão: sem valor
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
Especifica o nome da tag e o valor da cadeia de caracteres dela.
O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.
Para obter informações sobre como especificar tags em uma instrução, consulte Cotas de tags para objetos e colunas.
USING ( key => value [ , key => value [ , ... ] ] )
Permite que você forneça valores para parametrizar a expansão do modelo de especificação.
USING
é necessário ao usar um modelo de especificação (FROM SPECIFICATION_TEMPLATE_FILE
ouFROM SPECIFICATION_TEMPLATE
). Os pares chave-valor devem formar uma lista separada por vírgulas.Onde:
key
é o nome da variável do modelo. O nome da variável do modelo pode, opcionalmente, ser colocado entre aspas duplas ("
).value
é o valor a ser atribuído à variável no modelo. Os valores da cadeia de caracteres devem ser colocados entre'
ou$$
. O valor deve ser alfanumérico ou JSON válido.
Requisitos de controle de acesso¶
Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:
Privilégio |
Objeto |
Notas |
---|---|---|
CREATE SERVICE |
Esquema |
|
USAGE |
Pool de computação |
|
READ |
Estágio |
Este é o estágio onde a especificação é armazenada. |
READ |
Repositório de imagens |
Repositório de imagens referenciadas pela especificação. |
Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.
Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.
Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
Notas de uso¶
Ao chamar EXECUTE JOB SERVICE, os parâmetros devem ser fornecidos nesta ordem: especifique o pool de computação, seguido por outras propriedades e, finalmente, a especificação do serviço (forneça o nome do arquivo de especificação no estágio ou a especificação em linha).
Em relação aos metadados:
Atenção
Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.
Exemplos¶
Executar um serviço de trabalho do 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';