Carregamento e consulta de dados de amostra usando Snowpark Python¶
Introdução¶
Este tutorial usa uma marca fictícia de food truck chamada Tasty Bytes para mostrar como carregar e consultar dados no Snowflake usando o Snowpark Python. Você usa uma planilha Python pré-carregada em Snowsight para concluir essas tarefas.
A ilustração a seguir fornece uma visão geral do Tasty Bytes.
Nota
A Snowflake fatura uma quantidade mínima para o armazenamento em disco utilizado para os dados das amostras neste tutorial. Este tutorial fornece passos para descartar um banco de dados e minimizar o custo de armazenamento.
O Snowflake requer um warehouse virtual para carregar os dados e executar consultas. Um warehouse virtual em execução consome créditos do Snowflake. Neste tutorial, você usará uma conta de avaliação de 30 dias, que fornece créditos gratuitos, portanto você não terá custos.
O que você aprenderá¶
Neste tutorial, você aprenderá como concluir as tarefas a seguir usando a Snowpark Python API:
Crie um banco de dados e um esquema.
Crie um estágio que retenha dados em um bucket S3 do Amazon.
Crie um DataFrame para especificar o estágio que é a origem dos dados.
Crie uma tabela que contenha dados de arquivos em um estágio.
Configure um DataFrame para consultar a nova tabela e filtrar os dados.
Pré-requisitos¶
Este tutorial considera o seguinte:
Você tem um navegador compatível.
Você tem uma conta de avaliação. Se você ainda não tem uma conta de avaliação, inscreva-se para uma avaliação gratuita. Você pode escolher qualquer região de nuvem do Snowflake.
Seu usuário é o administrador da conta e recebeu a função de sistema ACCOUNTADMIN. Para obter mais informações, consulte Uso da função ACCOUNTADMIN.
Nota
Este tutorial está disponível apenas para usuários com conta de avaliação. A planilha de exemplo não está disponível para outros tipos de contas.
Etapa 1. Faça login usando Snowsight¶
Para acessar a Snowsight pela internet pública, faça o seguinte:
Em um navegador da Web compatível, abra https://app.snowflake.com.
Forneça seu identificador de conta ou URL de conta. Se você tiver feito login anteriormente na Snowsight, poderá ver um nome de conta que pode ser selecionado.
Faça login usando as credenciais de sua conta Snowflake.
Etapa 2. Abrir a planilha Python¶
Você pode usar planilhas Python para escrever e executar o código Python. Sua conta de avaliação tem acesso a uma planilha Python pré-carregada para este tutorial. A planilha contém o código Python que você executará para criar um banco de dados, carregar dados nele e consultá-los. Para obter mais informações sobre planilhas Python, consulte Como escrever o código Snowpark nas planilhas Python.
Para abrir a planilha Python do tutorial pré-carregada:
Selecione Projects » Worksheets para abrir a lista de planilhas.
Abra [Tutorial] Using Python to load and query sample data.
Sua planilha é semelhante à imagem a seguir.
Esta planilha Python pré-carregada usa automaticamente a função de sistema ACCOUNTADMIN para que você possa visualizar e gerenciar objetos em sua conta. Para obter mais informações, consulte Uso da função ACCOUNTADMIN.
A planilha também usa o warehouse virtual COMPUTE_WH. Um warehouse fornece os recursos necessários para criar e gerenciar objetos e executar comandos SQL. Esses recursos incluem CPU, memória e armazenamento temporário. Para obter mais informações, consulte Warehouses virtuais.
Etapa 3. Como usar planilhas Python¶
As planilhas Python permitem que você utilize Snowpark Python na Snowsight para executar instruções SQL. Esta etapa deste tutorial descreve o código em cada etapa da planilha Python. Ao usar uma planilha Python, você não pode executar blocos de código individuais separadamente. Você deve executar a planilha inteira. Antes de selecionar Run na planilha, revise as etapas a seguir para entender melhor o código Python.
Na planilha Python aberta, esta etapa inclui o seguinte código:
import snowflake.snowpark as snowpark from snowflake.snowpark.functions import col from snowflake.snowpark.types import StructField, StructType, IntegerType, StringType, VariantType
Este tutorial importa o pacote
snowpark
e as classes e funções selecionadas para que fiquem disponíveis para seu código.Esta etapa da planilha inclui o seguinte código:
def main(session: snowpark.Session):
Esta linha define a função do manipulador
main
padrão. A função do manipulador contém o código que você executará neste tutorial. Esta linha passa um objetoSession
que você pode usar para executar instruções SQL no Snowflake.# Use SQL to create our Tasty Bytes Database session.sql('CREATE OR REPLACE DATABASE tasty_bytes_sample_data;').collect()
Esta linha cria um banco de dados denominado
tasty_bytes_sample_data
. Este banco de dados armazena dados em tabelas que você pode gerenciar e consultar. Para obter mais informações, consulte Bancos de dados, tabelas e exibições - Visão geral.O código usa o método sql para criar um DataFrame que representa os resultados da instrução SQL. No Snowpark, você pode consultar e processar dados com um DataFrame. O código também usa o método coletar para executar a instrução SQL representada por DataFrame. As outras linhas de código nesta etapa da planilha também usam esses métodos.
# Use SQL to create our Raw POS (Point-of-Sale) Schema session.sql('CREATE OR REPLACE SCHEMA tasty_bytes_sample_data.raw_pos;').collect()
Esta linha cria um esquema denominado
raw_pos
no banco de dadostasty_bytes_sample_data
. Um esquema é um agrupamento lógico de objetos de banco de dados, como tabelas e exibições. Por exemplo, um esquema pode conter os objetos de banco de dados necessários para um aplicativo específico.# Use SQL to create our Blob Stage session.sql('CREATE OR REPLACE STAGE tasty_bytes_sample_data.public.blob_stage url = "s3://sfquickstarts/tastybytes/" file_format = (type = csv);').collect()
Esta linha cria um estágio chamado
blob_stage
. Um estágio é um local que contém arquivos de dados para carregar em um banco de dados Snowflake. Este tutorial cria um estágio que carrega dados de um bucket S3 do Amazon. O tutorial usa um bucket existente com um arquivo CSV que contém os dados. Ele carrega os dados deste arquivo CSV na tabela criada posteriormente neste tutorial. Para obter mais informações, consulte Carregamento em massa a partir do Amazon S3.Esta etapa da planilha inclui o seguinte código:
# Define our Menu Schema menu_schema = StructType([StructField("menu_id",IntegerType()),\ StructField("menu_type_id",IntegerType()),\ StructField("menu_type",StringType()),\ StructField("truck_brand_name",StringType()),\ StructField("menu_item_id",IntegerType()),\ StructField("menu_item_name",StringType()),\ StructField("item_category",StringType()),\ StructField("item_subcategory",StringType()),\ StructField("cost_of_goods_usd",IntegerType()),\ StructField("sale_price_usd",IntegerType()),\ StructField("menu_item_health_metrics_obj",VariantType())])
Este código cria um objeto
StructType
chamadomenu_schema
. Este objeto consiste em umalist
de objetosStructField
descrevendo os campos no arquivo CSV no estágio. Para obter mais informações, consulte Como trabalhar com arquivos em um estágio.Esta etapa da planilha inclui o seguinte código:
# Create a Dataframe from our Menu file from our Blob Stage df_blob_stage_read = session.read.schema(menu_schema).csv('@tasty_bytes_sample_data.public.blob_stage/raw_pos/menu/')
Esta linha cria o
df_blob_stage_read
DataFrame. Este DataFrame está configurado para ler dados do arquivo CSV localizado no estágio especificado, usando o esquemamenu_schema
especificado. O esquema contém informações sobre os tipos e nomes das colunas de dados.# Save our Dataframe as a Menu table in our Tasty Bytes Database and Raw POS Schema df_blob_stage_read.write.mode("overwrite").save_as_table("tasty_bytes_sample_data.raw_pos.menu")
Este código usa o método salvar_como_tabela para criar a tabela
menu
e carregar os dados do estágio nela.Esta etapa da planilha inclui o seguinte código:
# Create a new Dataframe reading from our Menu table and filtering for the Freezing Point brand df_menu_freezing_point = session.table("tasty_bytes_sample_data.raw_pos.menu").filter(col("truck_brand_name") == 'Freezing Point')
Esta linha cria o
df_menu_freezing_point
DataFrame e o configura para consultar a tabelamenu
. O método filtro prepara o SQL para execução com uma expressão condicional. A expressão condicional filtra as linhas da tabelamenu
para retornar as linhas em que a colunatruck_brand_name
é igual aFreezing Point
(semelhante a uma cláusula WHERE).# return our Dataframe return df_menu_freezing_point
Esta linha retorna
df_menu_freezing_point
DataFrame para que a consulta esteja pronta para execução. DataFrames são avaliados preguiçosamente, o que significa que esta linha não envia a consulta ao servidor para execução.
Quando estiver pronto, selecione Run para executar o código e visualizar a saída. Quando você seleciona Run, a planilha Python executa o código Python, que gera e executa as instruções SQL. A consulta para o DataFrame retornado é executada e os resultados são exibidos na planilha.
Seu resultado é semelhante à imagem a seguir.
Etapa 4. Limpeza, resumo e recursos adicionais¶
Parabéns! Você concluiu com êxito este tutorial para contas de avaliação.
Reserve alguns minutos para ver um pequeno resumo e os pontos principais abordados neste tutorial. Considere fazer uma limpeza descartando todos os objetos criados neste tutorial. Saiba mais revisando outros tópicos na documentação do Snowflake.
Limpeza dos objetos do tutorial (opcional)¶
Se os objetos criados neste tutorial não forem mais necessários, você poderá removê-los do sistema com os comandos DROP <objeto>. Para remover o banco de dados que você criou, execute o seguinte comando:
DROP DATABASE IF EXISTS tasty_bytes_sample_data;
Resumo e pontos principais¶
Em resumo, você usou uma planilha Python pré-carregada na Snowsight para concluir as seguintes etapas no código Python:
Importe módulos do Snowpark para um aplicativo Python.
Crie uma função Python.
Crie um banco de dados e um esquema.
Crie um estágio que retenha dados em um bucket S3 do Amazon.
Crie um DataFrame para especificar a origem dos dados em um estágio.
Crie uma tabela que contenha dados de arquivos no estágio,
Configure um DataFrame para consultar a nova tabela e filtrar os dados.
Aqui estão alguns pontos importantes a serem lembrados sobre o carregamento e a consulta de dados:
Você usou o Snowpark para executar instruções SQL no código Python.
Você criou um estágio para carregar dados de um arquivo CSV.
Você criou um banco de dados para armazenar os dados e um esquema para agrupar logicamente os objetos do banco de dados.
Você usou um DataFrame para especificar a fonte de dados e filtrar dados para uma consulta.
Qual é o próximo passo?¶
Continue aprendendo sobre o Snowflake com os seguintes recursos:
Conclua os outros tutoriais fornecidos pelo Snowflake:
Familiarize-se com os principais conceitos e recursos do Snowflake, bem como com as classes e os métodos do Snowpark Python usados para realizar consultas e inserir/atualizar dados:
Experimente os guias de início rápido do Tasty Bytes fornecidos pela Snowflake: