CREATE STREAMLIT

Creates a new Streamlit object in Snowflake or replaces an existing Streamlit object in the same schema.

Consulte também:

SHOW STREAMLITS, DESCRIBE STREAMLIT, ALTER STREAMLIT, DROP STREAMLIT, UNDROP STREAMLIT

Sintaxe

CREATE [ OR REPLACE ] STREAMLIT [ IF NOT EXISTS ] <name>
  [ FROM <source_location> ]
  [ MAIN_FILE = '<filename>' ]
  [ QUERY_WAREHOUSE = <warehouse_name> ]
  [ RUNTIME_NAME = '<runtime_name>' ]
  [ COMPUTE_POOL = <compute_pool_name> ]
  [ COMMENT = '<string_literal>' ]
  [ TITLE = '<app_title>' ]
  [ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
  [ SECRETS = ( '<snowflake_secret_name>' = <snowflake_secret> [ , ... ] ) ]
Copy

A sintaxe a seguir é herdada:

Importante

ROOT_LOCATION is a legacy parameter and may be deprecated in a future release. For Streamlit apps created using ROOT_LOCATION, multi-file editing and Git integration are not supported.

CREATE [ OR REPLACE ] STREAMLIT [ IF NOT EXISTS ] <name>
  ROOT_LOCATION = '<stage_path_and_root_directory>'
  MAIN_FILE = '<path_to_main_file_in_root_directory>'
  [ QUERY_WAREHOUSE = <warehouse_name> ]
  [ COMMENT = '<string_literal>' ]
  [ TITLE = '<app_title>' ]
  [ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
Copy

Parâmetros obrigatórios

name

Specifies the identifier (i.e. name) for the Streamlit object. This identifier must be unique for the schema where the object is created.

In addition, the identifier must start with an alphabetic character and can’t contain spaces or special characters unless the entire identifier string is enclosed in double quotes (e.g. "My object"). Identifiers enclosed in double quotes are also case-sensitive.

Para obter mais detalhes, consulte Requisitos para identificadores.

Parâmetros opcionais

FROM source_location

Copia os arquivos de origem do aplicativo do local especificado. O local deve estar dentro de um estágio nomeado interno. O caminho pode ser relativo ou totalmente qualificado. Por exemplo, se o estágio for nomeado @streamlit_db.streamlit_schema.streamlit_stage, os locais de origem válidos podem incluir:

  • Um caminho totalmente qualificado para a raiz do estágio: FROM '@streamlit_db.streamlit_schema.streamlit_stage'

  • Um caminho relativo para a raiz do estágio: FROM '@streamlit_stage'

  • Um caminho totalmente qualificado ou relativo para um subdiretório dentro do estágio: FROM '@streamlit_db.streamlit_schema.streamlit_stage/subdir'

Os arquivos são copiados apenas uma vez quando o CREATE o comando é executado; Alterações futuras no local de origem não atualizam automaticamente o aplicativo Streamlit.

Se esse parâmetro não for especificado, o Snowflake copiará os arquivos de origem para um aplicativo padrão com um streamlit_app.py Arquivo de ponto de entrada.

MAIN_FILE = 'filename'

Especifica o do arquivo de ponto de entrada do Streamlit. Os requisitos dependem do tipo de tempo de execução:

  • Warehouse runtimes: The file must be in the root of the source directory specified in FROM. Only a filename is allowed, not a path.

  • Tempos de execução de contêiner: o arquivo pode estar na raiz ou em um subdiretório. Você pode especificar um caminho relativo da raiz do diretório de origem, como 'subdir/my_app.py'.

If you are using ROOT_LOCATION instead of FROM, then MAIN_FILE can be a path relative to ROOT_LOCATION even though ROOT_LOCATION only supports warehouse runtimes.

DEFAULT: 'streamlit_app.py'

QUERY_WAREHOUSE = warehouse_name

Especifica o warehouse usado pelo app Streamlit. O comportamento depende do tipo de tempo de execução:

  • Tempos de execução de warehouse: especifica o warehouse para executar o código do app e consultas SQL. Trata-se do warehouse de código. É recomendável alternar manualmente para um warehouse diferente no código do app no caso de consultas.

  • Tempos de execução de contêiner: especifica o warehouse para executar consultas SQL emitidas pelo app. O código do app é executado no pool de computação especificado por COMPUTE_POOL.

DEFAULT: sem valor

Nota

Embora você possa criar um objeto Streamlit sem esse parâmetro, o aplicativo não será executado até que você especifique um warehouse de consultas.

RUNTIME_NAME = 'runtime_name'

Especifica o ambiente de tempo de execução para o app Streamlit. O tempo de execução determina onde e como o app é executado. Os nomes dos tempos de execução seguem o padrão SYSTEM$ST_<tipo>_RUNTIME_PY<version>.

  • Tempos de execução de warehouse: executar o app em um warehouse virtual. Cada visualizador recebe uma instância pessoal do app. Os seguintes tempos de execução de warehouse são válidos:

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_9

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_10

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11

  • Tempos de execução de contêiner: executar o app em um pool de computação do Snowpark Container Services. Todos os visualizadores compartilham uma única instância de longa execução do app. Os seguintes tempos de execução de contêiner são válidos:

    • SYSTEM$ST_CONTAINER_RUNTIME_PY3_11

O tempo de execução assume como padrão o de warehouse mais recente.

DEFAULT: SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11

COMPUTE_POOL = compute_pool_name

Especifica o pool de computação em que o app Streamlit é executado. Esse parâmetro é necessário ao usar um tempo de execução de contêiner e é ignorado para tempos de execução de warehouse.

DEFAULT: sem valor

COMMENT = 'string_literal'

Especifica um comentário para o objeto Streamlit.

DEFAULT: sem valor

TITLE = 'app_title'

Specifies a title for the Streamlit object to display in Snowsight.

DEFAULT: O nome do objeto Streamlit passado para CREATE STREAMLIT.

IMPORTS = ( 'stage_path_and_file_name_to_read' [ , ... ] )

The location (stage), path, and name of the file(s) to import. This only applies to warehouse runtimes and is ignored for container runtimes.

DEFAULT: sem valor

EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )

Os nomes das integrações de acesso externo necessárias para que o código do aplicativo Streamlit acesse redes externas.

Para tempos de execução de contêiner, as integrações de acesso externo são necessárias para instalar pacotes de índices de pacotes externos como PyPI. Para todos os tipos de tempo de execução, as integrações de acesso externo permitem que o app faça solicitações de rede de saída.

DEFAULT: sem valor

SECRETS = ( 'snowflake_secret_name' = snowflake_secret [ , ... ] )

Mapeia os segredos do Snowflake para os nomes dos segredos que podem ser referenciados no código do app Streamlit. O nome do segredo (lado esquerdo) é como você faz referência ao segredo em seu código, e o objeto do segredo (lado direito) é o identificador do segredo do Snowflake.

Por exemplo: SECRETS = ('api_key' = my_database.my_schema.my_secret)

Os segredos só estão disponíveis em tempos de execução de warehouse por meio do módulo _snowflake e devem estar associados a uma integração de acesso externo em EXTERNAL_ACCESS_INTEGRATIONS. Nos tempos de execução de contêiner, esse parâmetro não é compatível e, em vez disso, você deve criar funções SQL para acessar os segredos. Para obter mais informações, consulte Gerenciamento de segredos e configuração do app Streamlit.

DEFAULT: sem valor

ROOT_LOCATION = 'stage_path_and_root_directory'

Specifies the path to the named stage containing the Streamlit Python files, media files, and the environment.yml file, for example:

ROOT_LOCATION = '@streamlit_db.streamlit_schema.streamlit_stage'
Copy

Neste exemplo, os arquivos Streamlit estão localizados em um estágio nomeado denominado streamlit_stage em um banco de dados denominado streamlit_db e esquema denominado streamlit_schema.

Nota

  • Este parâmetro deve apontar para um único diretório dentro de um estágio interno nomeado.

  • Estágios externos não são suportados pelo Streamlit in Snowflake.

  • Se você estiver criando ou substituindo um objeto de aplicativo Streamlit dentro do Snowflake Native App Framework, use FROM 'relative_path_from_stage_root_directory' em vez de ROOT_LOCATION = 'stage_path_and_root_directory'.

Requisitos de controle de acesso

Se sua função não possuir os objetos na tabela a seguir, sua função deverá ter os privilégios listados sobre esses objetos:

Privilégio

Objeto

Notes

CREATE STREAMLIT

Schema where you create the Streamlit object

READ

Estágio de onde você copia os arquivos de origem do aplicativo Streamlit

USAGE

Warehouse usado pelo app Streamlit

USAGE

Pool de computação usado pelo app Streamlit

Esse privilégio será necessário apenas se seu app usar um tempo de execução de contêiner.

USAGE

Integrações de acesso externo usadas pelo app Streamlit

Esse privilégio será necessário apenas se seu app usar integrações de acesso externo. Para tempos de execução de contêiner, esse privilégio é necessário para instalar pacotes de índices de pacotes externos como PyPI.

USAGE

Secrets used by the Streamlit app

Esse privilégio será necessário apenas se seu app usar segredos e será aplicado somente a tempos de execução de warehouse.

CREATE STAGE

Schema where you create the Streamlit object

Este privilégio só é necessário para criar objetos Streamlit com o ROOT_LOCATION Parâmetro.

A operação em um objeto de esquema requer pelo menos um privilégio no banco de dados pai e um privilégio no esquema pai.

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

  • Você deve inicializar o aplicativo após criá-lo.

    Importante

    Depois de usar a CREATE STREAMLIT, o aplicativo Streamlit não estará ativo até que você execute uma das seguintes ações:

    • Executar ALTER STREAMLIT … ADD LIVE VERSION FROM LAST no novo objeto Streamlit.

    • Acesse o aplicativo em Snowsight com a função proprietária do aplicativo.

  • Quando você clona um esquema ou banco de dados contendo um objeto Streamlit, o objeto Streamlit não é clonado.

  • Para especificar os pacotes usados pelo aplicativo Streamlit, inclua um arquivo de dependência nos arquivos de origem. O formato do arquivo de dependência depende do tipo de tempo de execução:

    • Tempo de execução de warehouse: use um arquivo environment.yml.

    • Tempo de execução de contêiner: use um arquivo pyproject.toml ou requirements.txt.

    Para obter mais informações, consulte Gerenciamento de dependências para o app Streamlit.

  • 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.

  • The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can’t both be used in the same statement.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

Exemplos

Criação de app Streamlit com arquivos de origem padrão

To create a container-runtime Streamlit app from built-in default files, run the CREATE STREAMLIT command as shown in the following example:

CREATE STREAMLIT hello_streamlit
  RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
  COMPUTE_POOL = my_compute_pool
  QUERY_WAREHOUSE = my_warehouse;
Copy

By default, apps use the latest warehouse runtime if RUNTIME_NAME isn’t specified. To create a warehouse-runtime Streamlit app from built-in default files, run the CREATE STREAMLIT command as shown in the following example:

CREATE STREAMLIT hello_streamlit
  QUERY_WAREHOUSE = my_warehouse;
Copy

Criação de app Streamlit com base em arquivos de origem personalizados

To create a container-runtime Streamlit app from custom source files, run the CREATE STREAMLIT command as shown in the following example:

CREATE STREAMLIT hello_streamlit
  FROM @streamlit_db.streamlit_schema.streamlit_stage
  MAIN_FILE = 'streamlit_main.py'
  QUERY_WAREHOUSE = my_warehouse
  RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
  COMPUTE_POOL = my_compute_pool;
Copy

To create a warehouse-runtime Streamlit app from custom source files, run the CREATE STREAMLIT command as shown in the following example:

CREATE STREAMLIT hello_streamlit
  FROM @streamlit_db.streamlit_schema.streamlit_stage
  MAIN_FILE = 'streamlit_main.py'
  QUERY_WAREHOUSE = my_warehouse;
Copy

Criação de app Streamlit de tempo de execução de warehouse com segredos

To create a warehouse-runtime Streamlit app with secrets, run the CREATE STREAMLIT command as shown in the following example:

CREATE STREAMLIT hello_streamlit
  FROM @streamlit_db.streamlit_schema.streamlit_stage
  MAIN_FILE = 'streamlit_main.py'
  QUERY_WAREHOUSE = my_warehouse
  SECRETS = ('api_key' = streamlit_db.streamlit_schema.my_api_secret);
Copy

Os apps Streamlit de tempo de execução de contêiner devem usar funções SQL para acessar segredos. Para obter mais informações, consulte Gerenciamento de segredos e configuração do app Streamlit.

Criação de app Streamlit de um repositório Git

To create a Streamlit app from a Git repository, run the CREATE STREAMLIT command as shown in the following example:

CREATE STREAMLIT hello_streamlit
  FROM @streamlit_db.streamlit_schema.streamlit_repo/branches/streamlit_branch/
  MAIN_FILE = 'streamlit_main.py'
  QUERY_WAREHOUSE = my_warehouse;
Copy