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

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