Snowpark Connect for Spark を使用してSnowflake SQL を実行¶
Snowflakeに固有の SQL コマンドを実行するには、 SnowflakeSession インターフェースを使用できます。spark.sql メソッドと動揺に、クエリ結果はSpark DataFrames として返され、結果のデータに対してSpark DataFrame 変換とアクションを適用または連鎖し続けることができます。
大半の SQL 操作では、 spark.sql メソッドを使用して SQL ステートメントを直接実行し、結果をSpark DataFrames として取得できます。ただし、 QUALIFY、 CONNECTBY、 LATERALFLATTEN およびTime Travelクエリを含むSnowflake SQL 構文の一部は、Spark SQL と互換性がありません。
次の例は、 SnowflakeSession を使用して CONNECTBY 句を含むSnowflake SQL コマンドを実行する方法を示しています。
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()
SnowflakeSession インターフェースを使用して、Snowflakeに固有の構成ディレクティブを実行することもできます。これらのディレクティブには、アクティブなデータベース、スキーマ、ウェアハウスなどのセッションレベルのパラメーターの設定が含まれます。
次の例は、 SnowflakeSession を使用してセッションレベルのパラメーターを設定する方法を示しています。
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")