Tutorial: Desenvolvimento de um aplicativo com o Native Apps Framework¶
Introdução¶
Este tutorial descreve como usar o Native Apps Framework para criar um aplicativo para compartilhar dados e lógica de negócios relacionada com outras contas Snowflake.
O tutorial usa a interface da Web Snowsight, mas você pode usar qualquer cliente Snowflake que ofereça suporte à execução de SQL, por exemplo, SnowSQL.
O que você aprenderá¶
Neste tutorial, você aprenderá como:
Crie um pacote de aplicativo que contenha os dados e a lógica de negócios de seu aplicativo.
Compartilhe dados com um pacote de aplicativo.
Adicione a lógica de negócios a um pacote de aplicativo.
Teste o aplicativo localmente.
Visualize e teste o aplicativo na Snowsight.
Publique seu aplicativo criando uma listagem privada.
Instale o aplicativo a partir de uma listagem privada.
Sobre provedores e consumidores¶
No contexto do Native Apps Framework, os provedores são as funções e organizações que possuem dados e lógica de negócios que desejam compartilhar com outros usuários do Snowflake, que são os consumidores. Um consumidor pode ser outra conta em sua organização, uma organização diferente em sua empresa ou um usuário do Snowflake em outra empresa.
No contexto deste tutorial, a maioria das tarefas que você executará são aquelas normalmente executadas por provedores, mas incluem tarefas que podem ser executadas por várias funções em sua organização, incluindo desenvolvedores de aplicativos e administradores de banco de dados.
Neste tutorial, você também executará tarefas que imitam as ações executadas pelos consumidores para instalar um aplicativo.
Pré-requisitos¶
Você deve executar todos os comandos SQL na mesma sessão de comando SQL porque o contexto da sessão é necessário.
Para fazer isso na Snowsight, por exemplo, cole todo o seu código na mesma planilha à medida que avança. À medida que você avança de uma seção para outra, cada seção se baseia na anterior.
Você deve ser capaz de usar a função ACCOUNTADMIN.
Neste tutorial, você executará todas as etapas usando a função ACCOUNTADMIN. Na prática geral, no entanto, você deve usar funções com privilégios especificamente definidos para a ação que está executando. Por exemplo, você pode ter funções separadas para desenvolvedores que criam UDFs e procedimentos armazenados, para administradores de banco de dados que gerenciam funções e permissões e para administradores que gerenciam listagens usando o Snowflake Collaboration.
Para instalar seu aplicativo a partir de uma listagem privada, você deve ter acesso a uma segunda conta Snowflake. Você usará essa conta para imitar como os consumidores instalariam um aplicativo.
Nota
Embora o Native Apps Framework ofereça suporte ao compartilhamento de aplicativos com contas em diferentes organizações, para fins deste tutorial, ambas as contas devem estar na mesma organização.
Você deve definir um warehouse atual antes de executar o tutorial. Um warehouse deve ser especificado para uma sessão e o warehouse deve estar em execução antes que consultas e outras instruções DML possam ser executadas na sessão. Consulte USE WAREHOUSE para obter detalhes.
Criação dos arquivos do aplicativo¶
Nesta seção, você criará um script de configuração e um arquivo do manifesto. Ambos os arquivos são exigidos pelo Native Apps Framework.
- Script de configuração
Um script SQL que é executado automaticamente quando um consumidor instala um aplicativo em sua conta.
- Arquivo do manifesto
Um arquivo YAML que contém informações básicas de configuração sobre o aplicativo.
Você aprenderá mais sobre esses dois arquivos e seus conteúdos ao longo deste tutorial. Você também criará um arquivo leia-me que será útil ao visualizar e publicar seu aplicativo nas seções posteriores deste tutorial.
Criação do script de configuração¶
Para criar o script de configuração, faça o seguinte:
Em seu sistema de arquivos local, crie uma pasta chamada
tutorial
. Este será o diretório raiz para os arquivos externos do seu aplicativo.Nota
Você adicionará arquivos e subpastas extras a esta pasta em seções posteriores.
Na pasta
tutorial
, crie uma subpasta chamadascripts
.Nesta pasta crie um novo arquivo chamado
setup.sql
.Nota
Este tutorial se referirá a esta estrutura e nome de arquivo para o script de configuração. No entanto, ao criar seu próprio aplicativo, você pode escolher seu próprio nome e estrutura de diretório para esse arquivo.
Adicione a seguinte instrução SQL para este arquivo:
-- Setup script for the Hello Snowflake! application.
Você está adicionando esta linha como um espaço reservado porque o script de configuração não pode estar vazio.
Criação de um arquivo README para seu aplicativo¶
Um arquivo leia-me fornece uma descrição do que seu aplicativo faz. Você verá o leia-me quando visualizar seu aplicativo na Snowsight.
Para criar o arquivo readme.md para seu aplicativo:
Na pasta
tutorial
, crie um arquivo chamadoreadme.md
.Adicione o seguinte conteúdo a este arquivo:
This is the readme file for the Hello Snowflake Application!
Criação do arquivo do manifesto¶
O Native Apps Framework exige um arquivo do manifesto para cada aplicativo. O arquivo do manifesto contém metadados e parâmetros de configuração para um aplicativo.
Para criar o arquivo do manifesto:
Na pasta
tutorial
, crie um arquivo chamadomanifest.yml
.Nota
Este arquivo deve ser chamado
manifest.yml
e deve existir no nível raiz do seu projeto. Os caminhos para outros arquivos, incluindo o script de configuração, são relativos ao local desse arquivo.Adicione o seguinte conteúdo a este arquivo:
manifest_version: 1 artifacts: setup_script: scripts/setup.sql readme: readme.md
A propriedade
setup_script
especifica o local do script de configuração em relação ao local do arquivo do manifesto. O caminho e o nome do arquivo especificados aqui devem ser iguais ao local do script de configuração criado acima.Nota
As propriedades
manifest_version
,artifacts
esetup_script
são exigidas. A propriedadereadme
é opcional.
Revisão do que você aprendeu nesta seção¶
Depois de executar as etapas desta seção, você deve ter uma estrutura de diretório semelhante à seguinte:
/tutorial
manifest.yml
readme.md
/scripts/
setup.sql
Nesta seção, você aprendeu como criar o script de configuração e os arquivos do manifesto exigidos pelo Native Apps Framework. Embora o conteúdo adicionado a esses dois arquivos seja básico, todos os aplicativos devem ter esses arquivos.
Você também adicionou um arquivo leia-me que é exibido ao visualizar seu aplicativo na Snowsight ou ao publicar seu aplicativo como uma listagem.
Criação de um pacote de aplicativo¶
Nesta seção, você criará um pacote de aplicativo que funcionará como um contêiner para os recursos necessários para seu aplicativo. Você executará as seguintes tarefas:
Criar um pacote de aplicativo.
Criar um estágio nomeado no pacote de aplicativo.
Criação de um pacote de aplicativo¶
Basicamente, um pacote de aplicativo é um banco de dados Snowflake estendido para incluir informações adicionais sobre um aplicativo. Nesse sentido, é um contêiner para um aplicativo que inclui:
Conteúdo de dados compartilhados
Arquivos de aplicativos
Para criar um pacote de aplicativo:
Para conceder o privilégio CREATE APPLICATION PACKAGE para sua função, execute o seguinte comando:
GRANT CREATE APPLICATION PACKAGE ON ACCOUNT TO ROLE accountadmin;
Nota
Apesar da função ACCOUNTADMIN ter esse privilégio por padrão, para poder criar um pacote de aplicativo, você deve garantir que sua função tenha esse privilégio concedido.
Para criar o pacote de aplicativo, execute o seguinte comando:
CREATE APPLICATION PACKAGE hello_snowflake_package;
Nota
Depois de executar este comando, o contexto atual muda para HELLO_SNOWFLAKE_PACKAGE.
Para verificar se o pacote de aplicativo foi criado com sucesso, execute o seguinte comando:
SHOW APPLICATION PACKAGES;
Você deveria ver
HELLO_SNOWFLAKE_PACKAGE
na colunaname
da saída. Consulte SHOW APPLICATION PACKAGES para obter informações adicionais sobre este comando.
Nesta seção você aprendeu que um pacote de aplicativo é um contêiner para os recursos usados por um aplicativo. Você também aprendeu como criar um pacote de aplicativo.
Criação de um estágio nomeado¶
Nesta seção, você criará um estágio nomeado para armazenar os arquivos exigidos pelo Native Apps Framework. Um estágio nomeado também é necessário para armazenar qualquer arquivo de código externo que você deseja incluir em seu aplicativo. O upload desses arquivos para um estágio nomeado os torna disponíveis ao criar seu aplicativo.
Para criar um estágio externo nomeado, faça o seguinte:
Para definir o contexto para o pacote de aplicativo criado na seção anterior, execute o seguinte comando:
USE APPLICATION PACKAGE hello_snowflake_package;
Para criar o esquema necessário para o estágio nomeado, execute o seguinte comando:
CREATE SCHEMA stage_content;
Para criar o estágio nomeado, execute o seguinte comando.
CREATE OR REPLACE STAGE hello_snowflake_package.stage_content.hello_snowflake_stage FILE_FORMAT = (TYPE = 'csv' FIELD_DELIMITER = '|' SKIP_HEADER = 1);
Esse comando cria o estágio nomeado no banco de dados e no esquema que você criou nas etapas anteriores.
Nota
Você deve incluir
FILE_FORMAT = (TYPE = 'CSV' FIELD_DELIMITER = '|' SKIP_HEADER = 1);
como parte deste comando. Estes não são opcionais.
Agora você tem um estágio nomeado dentro do pacote de aplicativo onde pode carregar os arquivos que usará para criar seu aplicativo.
Nota
Embora este tutorial use um estágio nomeado no pacote de aplicativo, isso não é um requisito. Você também pode usar um estágio nomeado que existe em um banco de dados e esquema fora do pacote de aplicativo.
Carregamento dos arquivos do aplicativo para o estágio nomeado¶
Na seção anterior, você criou um pacote de aplicativo que servirá como contêiner para seu aplicativo. Você também criou um estágio nomeado no pacote de aplicativo que contém os arquivos do aplicativo necessários.
Nesta seção, você fará upload desses arquivos para o estágio nomeado.
Para fazer upload de arquivos de aplicativo, siga um destes procedimentos:
Carregue os arquivos do aplicativo usando Snowsight conforme descrito em Preparação de arquivos usando o Snowsight
Carregue os arquivos do aplicativo usando SnowSQL executando os seguintes comandos:
PUT file:///<path_to_your_root_folder>/tutorial/manifest.yml @hello_snowflake_package.stage_content.hello_snowflake_stage overwrite=true auto_compress=false; PUT file:///<path_to_your_root_folder>/tutorial/scripts/setup.sql @hello_snowflake_package.stage_content.hello_snowflake_stage/scripts overwrite=true auto_compress=false; PUT file:///<path_to_your_root_folder>/tutorial/readme.md @hello_snowflake_package.stage_content.hello_snowflake_stage overwrite=true auto_compress=false;
Nota
Modifique o caminho nos exemplos acima para refletir o caminho para a pasta raiz do seu projeto.
Em sua planilha, execute o seguinte comando para verificar se o upload do arquivo foi bem-sucedido:
LIST @hello_snowflake_package.stage_content.hello_snowflake_stage;
Depois de executar este comando, você deve ver cada um dos arquivos listados conforme mostrado na saída a seguir:
+----------------------------------------+------+----------------------------------+-------------------------------+
| name | size | md5 | last_modified |
|----------------------------------------+------+----------------------------------+-------------------------------|
| hello_snowflake_stage/manifest.yml | 80 | 9acab2ba718eebfa5f98f4e95c822db6 | Mon, 29 May 2023 22:51:04 GMT |
| hello_snowflake_stage/readme.md | 64 | 1bc95f95109dc60a09b478dd95c31808 | Mon, 29 May 2023 22:51:05 GMT |
| hello_snowflake_stage/scripts/setup.sql | 64 | 7807ee1f2f27312799fc83c66ba775cf | Mon, 29 May 2023 22:51:04 GMT |
+----------------------------------------+------+----------------------------------+-------------------------------+
Nesta seção, você carregou os arquivos do aplicativo para um estágio nomeado. Esses arquivos agora estão disponíveis para o pacote de aplicativo à medida que você continua a desenvolver seu aplicativo. Nas seções posteriores, à medida que adicionar recursos ao seu aplicativo, você retornará a esta seção para fazer upload de versões revisadas desses arquivos e de novos arquivos.
Adicione a lógica do aplicativo e instale seu primeiro aplicativo¶
Nesta seção, você adicionará código e instalará seu primeiro aplicativo. Para fazer isso, você executará as seguintes tarefas:
Adicione um procedimento armazenado ao script de configuração.
Adicione uma versão ao aplicativo.
Instale e teste o aplicativo.
Adição de um procedimento armazenado ao script de configuração¶
Na seção anterior, você criou um pacote de aplicativo. No entanto, o pacote de aplicativo ainda não contém nenhum conteúdo de dados ou arquivos de aplicativos.
Nesta seção, você adicionará um procedimento armazenado ao aplicativo adicionando o código do procedimento armazenado ao script de configuração em seu sistema de arquivos local.
Para adicionar um procedimento armazenado ao script de configuração:
Adicione as seguintes instruções SQL no fim do arquivo
setup.sql
que você criou em uma seção anterior:CREATE APPLICATION ROLE app_public; CREATE SCHEMA IF NOT EXISTS core; GRANT USAGE ON SCHEMA core TO APPLICATION ROLE app_public;
Quando o script de configuração é executado durante a instalação, essas instruções criam uma função de aplicativo chamada
app_public
. As funções de aplicativo são semelhantes às funções de banco de dados, mas só podem ser usadas no contexto de um aplicativo. Elas são usadas para conceder acesso a objetos dentro do aplicativo.Este exemplo também cria um esquema para conter o procedimento armazenado e concede o privilégio USAGE no esquema para a função do aplicativo. Criar uma função de aplicativo e conceder privilégios em um objeto, por exemplo, um esquema, para a função de aplicativo é um padrão comum no script de configuração.
Adicione o código para o procedimento armazenado no fim do arquivo
setup.sql
:CREATE OR REPLACE PROCEDURE CORE.HELLO() RETURNS STRING LANGUAGE SQL EXECUTE AS OWNER AS BEGIN RETURN 'Hello Snowflake!'; END;
Este exemplo cria um procedimento armazenado que gera a cadeia de cadeia de caracteres «Hello Snowflake!».
Adicione a seguinte instrução ao fim do arquivo
setup.sql
:GRANT USAGE ON PROCEDURE core.hello() TO APPLICATION ROLE app_public;
Este exemplo concede o privilégio USAGE no procedimento armazenado para a função de aplicativo.
Carregue o script de configuração revisado para o estágio nomeado.
Consulte a seção anterior Carregamento dos arquivos do aplicativo para o estágio nomeado para fazer upload do script de configuração revisado e retorne aqui para continuar o tutorial.
Nesta seção, você adicionou um procedimento armazenado ao script de configuração. Você também criou uma função de aplicativo e concedeu privilégios USAGE a esta função. Isso permite que o script de configuração crie o procedimento armazenado quando o aplicativo é criado. Ele também dá ao aplicativo permissão para executar o procedimento armazenado.
Instalação do aplicativo¶
Na seção anterior, você modificou o script de configuração para incluir um procedimento armazenado.
Nesta seção, você instalará o aplicativo e executará o procedimento armazenado usando Snowsight.
Para instalar um aplicativo, faça o seguinte:
Para criar o aplicativo, execute o seguinte comando:
CREATE APPLICATION HELLO_SNOWFLAKE_APP FROM APPLICATION PACKAGE HELLO_SNOWFLAKE_PACKAGE USING '@hello_snowflake_package.stage_content.hello_snowflake_stage';
Para verificar se o aplicativo foi criado com sucesso, execute o seguinte comando:
SHOW APPLICATIONS;
Você deve ver o
HELLO_SNOWFLAKE_APP
listado sob a colunaname
da saída.Para executar o procedimento armazenado
HELLO
que você adicionou asetup.sql
em uma seção anterior, execute o seguinte comando:CALL core.hello();
Você deve ver a seguinte saída após executar este comando:
+------------------+ | HELLO | |------------------| | HELLO SNOWFLAKE! | +------------------+
Revisão do que você aprendeu nesta seção¶
Parabéns! Você criou, instalou e testou seu primeiro aplicativo usando o Native Apps Framework! Embora o aplicativo tenha apenas uma funcionalidade básica, os componentes usados para criar o aplicativo são os mesmos para aplicativos mais complexos.
Nesta seção, você concluiu o seguinte:
Adicionou um procedimento armazenado ao script de configuração. O script de configuração especifica como seu aplicativo é instalado na conta do consumidor. Nas seções seguintes, você adicionará conteúdo de dados e outros tipos de lógica de aplicativo ao seu aplicativo.
Instalou e testou seu aplicativo executando o procedimento armazenado. Nas seções seguintes, você aprenderá sobre outras maneiras de visualizar e testar seu aplicativo.
Adição do conteúdo de dados ao seu aplicativo¶
Na seção anterior, você criou um aplicativo contendo um procedimento armazenado que demonstra como adicionar a lógica do aplicativo a um aplicativo.
Nesta seção, você incluirá conteúdo de dados em seu aplicativo criando um banco de dados dentro do pacote de aplicativo HELLO_SNOWFLAKE_PACAKAGE
e concedendo privilégios para compartilhar esse banco de dados com o aplicativo.
Adição de uma exibição para acessar o conteúdo de dados¶
Nesta seção, você atualizará o script de configuração para adicionar uma exibição que permite que o aplicativo acesse os dados na tabela ACCOUNTS
que você criou na subseção anterior.
Para adicionar uma exibição para acessar o conteúdo de dados:
Para criar um esquema para a exibição, adicione o seguinte ao script de configuração:
CREATE OR ALTER VERSIONED SCHEMA code_schema; GRANT USAGE ON SCHEMA code_schema TO APPLICATION ROLE app_public;
Essas instruções criam um esquema com versão para conter a exibição e conceder o privilégio USAGE no esquema. O Native Apps Framework usa o esquema com versão para lidar com diferentes versões de funções e procedimentos armazenados.
Para criar a exibição, adicione o seguinte ao script de configuração:
CREATE VIEW IF NOT EXISTS code_schema.accounts_view AS SELECT ID, NAME, VALUE FROM shared_data.accounts; GRANT SELECT ON VIEW code_schema.accounts_view TO APPLICATION ROLE app_public;
Essas instruções criam a exibição no esquema
code_schema
e concedem o privilégio necessário na exibição para a função do aplicativo.Carregue o script de configuração revisado para o estágio nomeado.
Consulte a seção anterior Carregamento dos arquivos do aplicativo para o estágio nomeado para carregar os arquivos que você atualizou nesta seção, então retorne aqui para continuar o tutorial.
Teste do aplicativo atualizado¶
Nesta subseção, você irá reinstalar o aplicativo e consultar a tabela de exemplo usando a exibição dentro do aplicativo instalado.
Para testar o aplicativo atualizado, faça o seguinte:
Para excluir o aplicativo existente, execute o seguinte comando:
DROP APPLICATION hello_snowflake_app;
Para criar uma nova versão do aplicativo, execute os seguintes comandos:
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package USING '@hello_snowflake_package.stage_content.hello_snowflake_stage';
Para verificar se a exibição funciona corretamente, execute o seguinte comando:
SELECT * FROM code_schema.accounts_view;
A saída deste comando é idêntica ao comando SELECT que você executou ao configurar os dados de exemplo:
+----+----------+-----------+ | ID | NAME | VALUE | |----+----------+-----------| | 1 | Nihar | Snowflake | | 2 | Frank | Snowflake | | 3 | Benoit | Snowflake | | 4 | Steven | Acme | +----+----------+-----------+
Revisão do que você aprendeu nesta seção¶
Nesta seção, você aprendeu como incluir conteúdo de dados compartilhados em seu aplicativo ao executar as seguintes tarefas:
Criar a tabela
ACCOUNTS
dentro do pacote de aplicativo e inserir dados na tabela.Conceder uso de referência na tabela
ACCOUNTS
para o pacote de aplicativo.Criar um esquema e visualizar essa referência à tabela
ACCOUNTS
no pacote do aplicativo.Conceder uso no esquema para a função de aplicativo.
Conceder a seleção na exibição para a função do aplicativo.
Você também atualizou o script de configuração para executar o seguinte quando o aplicativo é instalado:
Criar um esquema e exibição que o aplicativo usa para acessar os dados de exemplo.
Conceder uso no esquema para a função de aplicativo.
Conceder a seleção na exibição para a função do aplicativo.
Observe que os comandos executados para configurar o banco de dados HELLO_SNOWFLAKE_DATA
tem paralelos no script de configuração.
Adição do código Python ao seu aplicativo¶
Nesta seção, você expandirá a funcionalidade de seu aplicativo adicionando o código Python para aprimorar a lógica do aplicativo. Nesta seção, você incluirá o código Python como o seguinte:
Uma UDF inline Python que é uma função autocontida no script de configuração.
Uma UDF Python que faz referência a um arquivo Python fora do script de configuração.
Nota
Embora esta seção apresente exemplos usando Python, as mesmas técnicas são aplicáveis a Java e JavaScript.
Adicione uma função Python inline como uma função definida pelo usuário (UDF)¶
Nesta seção, você adicionará uma função Python como uma UDF.
Para incluir uma UDF Python em seu aplicativo, adicione o seguinte código ao seu arquivo de configuração.
CREATE OR REPLACE FUNCTION code_schema.addone(i int) RETURNS INT LANGUAGE PYTHON RUNTIME_VERSION = '3.8' HANDLER = 'addone_py' AS $$ def addone_py(i): return i+1 $$; GRANT USAGE ON FUNCTION code_schema.addone(int) TO APPLICATION ROLE app_public;
Esses comandos executam as seguintes tarefas quando o aplicativo é instalado:
Criar um esquema com versão chamado
code_schema
.Conceder o privilégio de uso no esquema à função de aplicativo
APP_PUBLIC
.Criar a UDF
ADDONE()
no esquemacode_schema
.Conceder o privilégio de uso na função à função de aplicativo
APP_PUBLIC
.
Observe que o esquema criado na amostra de código acima é um esquema com versão. Funções definidas pelo usuário e procedimentos armazenados devem ser definidos em um esquema com versão em vez de um esquema normal.
Adição de um módulo Python externo¶
Para adicionar um módulo Python externo ao seu aplicativo:
Adicione a seguinte função Python ao seu script de configuração:
CREATE or REPLACE FUNCTION code_schema.multiply(num1 float, num2 float) RETURNS float LANGUAGE PYTHON RUNTIME_VERSION=3.8 IMPORTS = ('/python/hello_python.py') HANDLER='hello_python.multiply'; GRANT USAGE ON FUNCTION code_schema.multiply(FLOAT, FLOAT) TO APPLICATION ROLE app_public;
Semelhante ao exemplo anterior, essas instruções criam uma UDF Python em um esquema e concedem privilégios na função para a função de aplicativo. No entanto, este exemplo contém uma cláusula IMPORTS que se refere a um arquivo Python externo que você criará.
Na pasta
tutorial
, crie uma subpasta chamadapython
.Na subpasta
python
, crie um arquivo chamadohello_python.py
.Adicione o seguinte ao arquivo
hello_python.py
:def multiply(num1, num2): return num1*num2
A função definida neste arquivo externo corresponde à função inline definida no script de configuração.
Nesta seção, você adicionou uma UDF Python ao seu aplicativo. Essa UDF refere-se a um módulo Python externo que pode ser referenciado por seu pacote de aplicativo.
Instalação e teste do aplicativo atualizado¶
Carregue os arquivos novos e revisados para o estágio nomeado.
Consulte a seção Carregamento dos arquivos do aplicativo para o estágio nomeado para fazer upload do arquivo Python externo e, em seguida, retorne aqui para continuar o tutorial.
Se você estiver usando SnowSQL para fazer upload do arquivo, execute os seguintes comandos:
PUT file:///<path_to_your_root_folder>/tutorial/scripts/setup.sql @hello_snowflake_package.stage_content.hello_snowflake_stage/scripts overwrite=true auto_compress=false; PUT file:///<path_to_your_root_folder>/tutorial/python/hello_python.py @hello_snowflake_package.stage_content.hello_snowflake_stage/python overwrite=true auto_compress=false;
Para remover o aplicativo existente, execute o seguinte comando:
DROP APPLICATION hello_snowflake_app;
Para criar uma nova versão do aplicativo, execute os seguintes comandos:
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package USING '@hello_snowflake_package.stage_content.hello_snowflake_stage';
Para testar o procedimento armazenado do Python, execute o seguinte comando:
SELECT code_schema.addone(1);
Para testar a função Python referenciada, execute o seguinte comando:
SELECT code_schema.multiply(1,2);
Revisão do que você aprendeu nesta seção¶
Nesta seção, você adicionou a seguinte nova funcionalidade ao seu aplicativo:
Uma função Python definida como uma UDF inline.
Uma função Python definida como uma UDF que faz referência ao código externo.
Você também testou cada um desses exemplos instalando uma versão atualizada de seu aplicativo e executando cada uma das funções.
Adição de um aplicativo Streamlit ao seu aplicativo¶
Nesta seção, você completará seu aplicativo adicionando um aplicativo Streamlit. Streamlit é o framework Python de código aberto para o desenvolvimento de aplicativos de ciência de dados e aprendizado de máquina. Você pode incluir aplicativos Streamlit em um aplicativo nativo para adicionar interação do usuário e visualização de dados.
Criação do arquivo do aplicativo Streamlit¶
Para criar um aplicativo Streamlit, faça o seguinte:
Na pasta
tutorial
, crie uma subpasta chamadastreamlit
.Na pasta
streamlit
, crie um arquivo chamadohello_snowflake.py
.Adicione o seguinte código a este arquivo:
# Import python packages import streamlit as st from snowflake.snowpark.context import get_active_session # Write directly to the app st.title("Hello Snowflake - Streamlit Edition") st.write( """The following data is from the accounts table in the application package. However, the Streamlit app queries this data from a view called code_schema.accounts_view. """ ) # Get the current credentials session = get_active_session() # Create an example data frame data_frame = session.sql("SELECT * FROM code_schema.accounts_view;") # Execute the query and convert it into a Pandas data frame queried_data = data_frame.to_pandas() # Display the Pandas data frame as a Streamlit data frame. st.dataframe(queried_data, use_container_width=True)
Adição do objeto Streamlit ao script de configuração¶
Para criar o objeto Streamlit no aplicativo, faça o seguinte:
Adicione a seguinte instrução no final do arquivo
setup.sql
para criar o objeto Streamlit:CREATE STREAMLIT code_schema.hello_snowflake_streamlit FROM '/streamlit' MAIN_FILE = '/hello_snowflake.py' ;
Esta instrução cria um objeto STREAMLIT no esquema principal.
Adicione a seguinte instrução no fim do arquivo
setup.sql
para permitir que a função APP_PUBLIC acesse o objeto Streamlit:GRANT USAGE ON STREAMLIT code_schema.hello_snowflake_streamlit TO APPLICATION ROLE app_public;
Carregue os arquivos de aplicativo novos e atualizados para o estágio nomeado:
Consulte a seção anterior Carregamento dos arquivos do aplicativo para o estágio nomeado para carregar o arquivo Streamlit que você acabou de criar, então retorne aqui para continuar o tutorial.
Se você estiver usando SnowSQL para fazer upload do arquivo, execute o seguinte comando:
PUT file:///<path_to_your_root_folder>/tutorial/scripts/setup.sql @hello_snowflake_package.stage_content.hello_snowflake_stage/scripts overwrite=true auto_compress=false; PUT file:///<path_to_your_root_folder>/tutorial/streamlit/hello_snowflake.py @hello_snowflake_package.stage_content.hello_snowflake_stage/streamlit overwrite=true auto_compress=false;
Instalação do aplicativo atualizado¶
Carregue o script de configuração revisado para o estágio nomeado.
Consulte a seção anterior Carregamento dos arquivos do aplicativo para o estágio nomeado para fazer upload do script de configuração revisado e retorne aqui para continuar o tutorial.
Para remover o aplicativo anterior, execute o seguinte comando:
DROP APPLICATION hello_snowflake_app;
Para criar uma nova versão do aplicativo, execute o seguinte comando:
CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package USING '@hello_snowflake_package.stage_content.hello_snowflake_stage';
Revisão do que você aprendeu nesta seção¶
Nesta seção, você adicionou um aplicativo Streamlit ao seu aplicativo fazendo o seguinte:
Criar um aplicativo Streamlit.
Adição de uma versão ao seu aplicativo¶
Nesta seção, você adicionará uma versão ao seu aplicativo que inclui todas as funcionalidades adicionadas neste tutorial. Para fazer isso, você usará o comando ALTER APPLICATION PACKAGE para atualizar o pacote de aplicativo que você criou anteriormente.
Para adicionar uma versão ao seu aplicativo:
Para adicionar uma versão ao pacote de aplicativo
HELLO_SNOWFLAKE_PACKAGE
, execute o seguinte comando:ALTER APPLICATION PACKAGE hello_snowflake_package ADD VERSION v1_0 USING '@hello_snowflake_package.stage_content.hello_snowflake_stage';
Neste comando, você modificou seu pacote de aplicativo para incluir uma versão com base nos arquivos do aplicativo que você carregou no estágio nomeado em uma seção anterior.
Nota
O valor especificado para VERSION é um rótulo, não um valor numérico ou cadeia de caracteres. Para obter mais informações, consulte ALTER APPLICATION PACKAGE.
Nota
O número do patch para a nova versão que você adicionou é criado automaticamente em
0
. À medida que você adiciona patches adicionais para uma versão, eles são incrementados automaticamente. No entanto, quando você cria uma nova versão, por exemploV1_1
, o número do patch dessa versão é redefinido para0
.Para verificar se a versão foi adicionada ao pacote de aplicativo, execute o seguinte comando:
SHOW VERSIONS IN APPLICATION PACKAGE hello_snowflake_package;
Este comando mostra informações adicionais sobre a versão, conforme mostrado na saída a seguir:
+---------+-------+-------+---------+-------------------------------+------------+-----------+-------------+-------+---------------+ | version | patch | label | comment | created_on | dropped_on | log_level | trace_level | state | review_status | |---------+-------+-------+---------+-------------------------------+------------+-----------+-------------+-------+---------------| | V1_0 | 0 | NULL | NULL | 2023-05-30 10:33:39.768 -0700 | NULL | OFF | OFF | READY | NOT_REVIEWED | +---------+-------+-------+---------+-------------------------------+------------+-----------+-------------+-------+---------------+
Para obter mais informações, consulte SHOW VERSIONS.
Para instalar o aplicativo com base em uma versão, execute o seguinte comando:
DROP APPLICATION hello_snowflake_app; CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package USING VERSION V1_0;
Nesta seção, você modificou o pacote de aplicativo para incluir uma versão para seu aplicativo.
Visualização de seu aplicativo no Snowsight¶
Nesta seção, você verá seu aplicativo na Snowsight. Nas seções anteriores, você usou instruções SQL para testar ou encontrar informações sobre seu aplicativo. No entanto, você também pode visualizar informações sobre seu aplicativo na Snowsight. Você também pode visualizar seu aplicativo Streamlit implantado.
Para visualizar seu aplicativo na Snowsight, faça o seguinte:
Entre em Snowsight.
Selecione Data Products » Apps.
Selecione
HELLO_SNOWFLAKE_APP
.A aba
Read Me
exibe o conteúdo que você adicionou ao arquivoreadme.md
em uma seção anterior.Para visualizar seu aplicativo Streamlit, selecione HELLOSNOWFLAKE_STREAMLIT.
O conteúdo do banco de dados
HELLO_SNOWFLAKE_DATA
é exibido em um dataframe Streamlit.Selecione Projects » Worksheets para abrir o aplicativo em uma planilha Snowflake.
Selecione HELLO_SNOWFLAKE_APP, em seguida selecione um esquema na lista.
A lista de esquema corresponde ao esquema que você adicionou ao seu aplicativo durante o tutorial.
A partir da planilha Snowflake, você pode testar seu aplicativo usando comandos SQL. Por exemplo, você pode executar novamente os comandos executados nas seções anteriores para testar os recursos adicionados ao seu aplicativo:
LIST @hello_snowflake_package.stage_content.hello_snowflake_stage;
CALL core.hello();
SELECT * FROM code_schema.accounts_view;
SELECT code_schema.addone(10);
SELECT code_schema.multiply(2,3);
Nota
Qualquer instrução SQL que você adiciona a esta planilha é perdida quando você navega para uma página diferente na Snowsight.
Publicação e instalação de seu aplicativo¶
Nesta seção, você publicará seu aplicativo criando uma listagem privada que usa o pacote de aplicativo como conteúdo de dados. Depois de criar a listagem, você fará login em outra conta para instalar a listagem.
Definição da diretriz de versão padrão¶
Antes de poder criar uma listagem para o pacote de aplicativo, você deve definir uma diretriz de versão. Uma diretriz de versão especifica qual versão do seu aplicativo ficará disponível para consumidores.
Neste tutorial, você definirá a diretriz de versão padrão usando a versão adicionada na seção anterior.
Para definir a diretriz de versão padrão para seu pacote de aplicativo, faça o seguinte:
Para visualizar as versões e patches definidos para seu pacote de aplicativo, execute o seguinte comando:
SHOW VERSIONS IN APPLICATION PACKAGE hello_snowflake_package;
Este comando exibe as versões e patches definidos para o pacote de aplicativo.
Para definir a diretriz de versão padrão para a versão
v1_0
e patch0
, execute o seguinte comando:ALTER APPLICATION PACKAGE hello_snowflake_package SET DEFAULT RELEASE DIRECTIVE VERSION = v1_0 PATCH = 0;
A saída desse comando é mostrada no exemplo a seguir:
+-----------------------------------------------------------+ | status | |-----------------------------------------------------------| | Default release directive set to version 'V1_0', patch 0. | +-----------------------------------------------------------+
Nesta seção, você verificou quais versões e patches existem em seu pacote de aplicativo. Usando essas informações, você definiu a diretriz de versão padrão para o pacote de aplicativo.
Criação de uma listagem para seu aplicativo¶
Agora que você especificou uma diretriz de versão para seu pacote de aplicativo, criará uma listagem e incluirá o pacote de aplicativo como o conteúdo de dados da listagem. Isso permite que você compartilhe seu aplicativo com outros usuários do Snowflake e permite que eles instalem e usem o aplicativo em suas contas.
Para criar uma listagem para seu aplicativo:
Entre em Snowsight.
No menu de navegação, selecione Data Products » Provider Studio.
Selecione + Listing. A janela Criar listagem é aberta.
Digite um nome para sua listagem.
Na seção In the Who can discover the listing, selecione Only specified consumers para compartilhar privadamente a listagem com contas específicas.
Clique em + Select para selecionar o pacote de aplicativo para a listagem.
Digite uma descrição para sua listagem.
Na seção Add consumer accounts, adicione o identificador da conta que você está usando para testar a experiência do consumidor de instalar o aplicativo a partir de uma listagem.
Nesta seção, você criou uma listagem privada contendo seu pacote de aplicativo como conteúdo de dados compartilhados.
Instalação do aplicativo¶
Nesta seção você instalará o aplicativo associado à listagem que você criou na seção anterior. Você instalará a listagem em uma conta diferente, que imitará como um consumidor instalaria o aplicativo em sua conta.
Para instalar seu aplicativo da listagem, faça o seguinte:
Entre em Snowsight.
No menu de navegação, selecione Data Products » Apps.
Selecione o bloco para a listagem em Recently shared with you.
Selecione Get.
Digite um nome voltado ao cliente para o aplicativo. Para este tutorial, use «Hello Snowflake App».
Selecione o warehouse onde deseja instalar o aplicativo.
Selecione Get.
Selecione Open para ver sua listagem ou Done para terminar.
Nesta seção, você aprendeu como publicar e instalar uma listagem que permite compartilhar seu aplicativo com outros usuários do Snowflake.
Saiba mais¶
Parabéns! Você não apenas concluiu este tutorial, mas também trabalhou no ciclo de vida de desenvolvimento e publicação de um aplicativo usando o Native Apps Framework.
Ao longo do caminho, você:
Usou Snowsight e planilhas Snowflake para criar um aplicativo usando o Native Apps Framework.
Para obter mais informações sobre Snowsight, consulte Introdução a planilhas e Gerenciamento e uso de planilhas no Snowsight.
Criou o manifesto e o script de configuração necessários para todos os aplicativos.
Consulte Criação do arquivo de manifesto para um pacote de aplicativo e Criação de um script de configuração para obter detalhes.
Criou um pacote de aplicativo que funciona como um contêiner para a lógica do aplicativo e o conteúdo de dados do seu aplicativo.
Consulte Criação de um pacote de aplicativo para obter detalhes.
Adicionou a lógica ao seu aplicativo usando procedimentos armazenados e UDFs escritos em Python.
Consulte Como adicionar lógica de aplicativo a um pacote de aplicativo para obter informações sobre como usar procedimentos armazenados, UDFs e função externa no Native Apps Framework.
Consulte API Snowpark, Como estender o Snowflake com funções e procedimentos e Como escrever funções externas para obter informações gerais sobre cada tipo de procedimento e função.
Adicionou conteúdo de dados compartilhados ao seu aplicativo.
Consulte Adição de conteúdo de dados compartilhados a um pacote de aplicativo para obter informações adicionais.
Incluiu um aplicativo Streamlit em seu aplicativo.
Consulte Adição de experiência front-end a um aplicativo usando Streamlit para obter informações adicionais.
Visualizou seu aplicativo em Snowsight.
Criou uma listagem privada para seu aplicativo e instalou o aplicativo em uma conta separada.
Consulte Compartilhamento de um aplicativo com os consumidores para obter mais informações sobre a publicação de uma listagem contendo um pacote de aplicativo.
Consulte Como instalar um aplicativo a partir de uma listagem para obter informações sobre como os consumidores instalam um aplicativo a partir de uma listagem.