Execução do Snowflake SQL com Snowpark Connect for Spark¶
Para executar comandos SQL específicos para Snowflake, é possível usar a interface SnowflakeSession. Assim como no método spark.sql, os resultados da consulta são retornados como Spark DataFrames, com os quais você pode continuar aplicando ou encadeando transformações e ações do Spark DataFrame nos dados resultantes.
Com a maioria das operações SQL, você pode usar o método spark.sql para executar instruções SQL diretamente e recuperar os resultados como Spark DataFrames. No entanto, algumas partes da sintaxe de SQL do Snowflake, incluindo QUALIFY, CONNECT BY, LATERAL FLATTEN e consultas do Time Travel, não são compatíveis com o Spark SQL.
O exemplo a seguir mostra como usar SnowflakeSession para executar um comando SQL do Snowflake que inclui a cláusula CONNECT BY.
import snowflake.snowpark_connect
from snowflake.snowpark_connect.snowflake_session import SnowflakeSession
spark = snowflake.snowpark_connect.server.init_spark_session()
snowflake_session = SnowflakeSession(spark)
result_df = snowflake_session.sql("""
SELECT
employee_name,
manager_name,
LEVEL
FROM employees
START WITH employee_name = 'Alice'
CONNECT BY PRIOR manager_name = employee_name
""").show()
result_df.limit(1).show()
Você também pode usar a interface SnowflakeSession para executar diretrizes de configuração específicas para Snowflake. Essas diretrizes incluem a definição de parâmetros em nível de sessão, como o banco de dados ativo, esquema ou warehouse.
O exemplo a seguir mostra como usar SnowflakeSession para definir parâmetros em nível de sessão.
import snowflake.snowpark_connect
from snowflake.snowpark_connect.client import SnowflakeSession
spark = snowflake.snowpark_connect.server.init_spark_session()
snowflake_session = SnowflakeSession(spark)
snowflake_session.use_database("MY_DATABASE")
snowflake_session.use_schema("MY_SCHEMA")
snowflake_session.use_warehouse("MY_WH")
snowflake_session.use_role("PUBLIC")