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>' , ... ] ) ]
Copy

Onde:

fromSpecification ::=
  {
    FROM @<stage> SPECIFICATION_FILE = '<yaml_file_stage_path>'
    | FROM SPECIFICATION <specification_text>
  }
Copy
fromSpecificationTemplate ::=
  {
    FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>'
    | FROM SPECIFICATION_TEMPLATE <specification_text>
  }
  USING ( <key> => <value> [ , <key> => <value> [ , ... ] ]  )
Copy

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'. Quando SPECIFICATION_TEMPLATE_FILE é especificado, o parâmetro USING é 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. Quando SPECIFICATION_TEMPLATE é especificado, o parâmetro USING é 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 ou FROM 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';
Copy