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.

Contém uma visão geral do Tasty Bytes, uma rede global de food trucks com 15 marcas de opções de food truck localizadas em vários países e cidades. A imagem descreve a missão, visão, localização, estado atual e objetivos futuros da empresa.

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:

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:

  1. Em um navegador da Web compatível, abra https://app.snowflake.com.

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

  3. 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:

  1. Selecione Projects » Worksheets para abrir a lista de planilhas.

  2. Abra [Tutorial] Using Python to load and query sample data.

    Sua planilha é semelhante à imagem a seguir.

A planilha de carregamento e consulta do Python, que contém o código deste tutorial, juntamente com comentários descritivos.

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.

  1. 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
    
    Copy

    Este tutorial importa o pacote snowpark e as classes e funções selecionadas para que fiquem disponíveis para seu código.

  2. Esta etapa da planilha inclui o seguinte código:

    def main(session: snowpark.Session):
    
    Copy

    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 objeto Session 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()
    
    Copy

    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()
    
    Copy

    Esta linha cria um esquema denominado raw_pos no banco de dados tasty_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()
    
    Copy

    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.

  3. 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())])
    
    Copy

    Este código cria um objeto StructType chamado menu_schema. Este objeto consiste em uma list de objetos StructField descrevendo os campos no arquivo CSV no estágio. Para obter mais informações, consulte Como trabalhar com arquivos em um estágio.

  4. 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/')
    
    Copy

    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 esquema menu_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")
    
    Copy

    Este código usa o método salvar_como_tabela para criar a tabela menu e carregar os dados do estágio nela.

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

    Esta linha cria o df_menu_freezing_point DataFrame e o configura para consultar a tabela menu. O método filtro prepara o SQL para execução com uma expressão condicional. A expressão condicional filtra as linhas da tabela menu para retornar as linhas em que a coluna truck_brand_name é igual a Freezing Point (semelhante a uma cláusula WHERE).

    # return our Dataframe
    return df_menu_freezing_point
    
    Copy

    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.

Saída da tabela com as seguintes colunas: MENU_ID, MENU_TYPE_ID, MENU_TYPE, TRUCK_BRAND_NAME, MENU_ITEM_ID. A primeira linha possui os seguintes valores: 10001, 1, Sorvete, Ponto de congelamento, 10.

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;
Copy

Resumo e pontos principais

Em resumo, você usou uma planilha Python pré-carregada na Snowsight para concluir as seguintes etapas no código Python:

  1. Importe módulos do Snowpark para um aplicativo Python.

  2. Crie uma função Python.

  3. Crie um banco de dados e um esquema.

  4. Crie um estágio que retenha dados em um bucket S3 do Amazon.

  5. Crie um DataFrame para especificar a origem dos dados em um estágio.

  6. Crie uma tabela que contenha dados de arquivos no estágio,

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