質問するログイン新規登録

Q&A

1回答

154閲覧

SnowparkSQLでJOINする際のデータフレーム名の指定方法が知りたい

shishi_maru440

総合スコア38

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

Snowflake

Snowflakeとは、Snowflake社が提供しているクラウドベースのSaaS型データプラットフォーム。従来のDWHとしてだけではなく、他社にデータを共有できるデータシェアリングや、他クラウド製品と連携できるマルチクラウド環境などが特徴です。

0グッド

0クリップ

投稿2026/03/08 22:54

0

0

実現したいこと

SnowparkSQLでデータフレームに対してalias()を使用せずにJOINしたい。

前提

データフレームに対するalias()はコマンドリファレンスに記載もなく
実行しようとするとウォーニングが発生。

発生している問題・エラーメッセージ

WARNING:snowpark:DataFrame.alias() is experimental since 1.5.0 Do not use it n production.

該当のソースコード

SnowparkSQL

1from snowflake.snowpark import functions as F 2from snowflake.snowpark.session import session 3 4session.builder.configs(PARM).create() 5 6temp_df1 = session.sql(f"SELECT * FROM tbl1") 7temp_df2 = session.sql(f"SELECT * FROM tbl2") 8 9#ここをalias()使用せずにデータフレーム名を指定したい 10df1 = temp_df1.alias("tbl1") 11df2 = temp_df2.alias("tbl2") 12 13result_df = df1.JOIN(df2, df1.cola == df2.cola & df1.colb == df2.colb, how = "left).select( 14F.col(df1.cola), 15F.col'df1.colb), 16F.col(colc) 17) 18 19### 試したこと 20 21alias()を使用しない場合にカラム名がcola**df1**ではなく 22**1_0000_**colaのようにカラム名の前に内部値のような数値が入る形になってしまう。 23この数値は繰り返す都度、カウントアップされていく。 24その為、データフレーム名の指定ができずにJOINができない・ 25

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

MasahikoHirata

2026/03/11 07:12

まず色々と目につく部分が。 大文字小文字の使い方とか’(’の閉じ忘れとか。
guest

回答1

0

これで試してみてください。

SQL

1from snowflake.snowpark import Session 2import snowflake.snowpark.functions as F 3 4# セッション作成(PARMは定義済みと想定) 5session = Session.builder.configs(PARM).create() 6 7# SQLで取得 8df1 = session.sql("SELECT * FROM tbl1") 9df2 = session.sql("SELECT * FROM tbl2") 10 11# JOINの実行(カッコによる優先順位指定が必須) 12# カラム指定にデータフレームオブジェクトそのものを使います 13result_df = df1.join( 14 df2, 15 on=[df1["cola"] == df2["cola"], df1["colb"] == df2["colb"]], 16 how="left" 17) 18 19# セレクト時のカラム指定 20# df1["cola"] と書くことで、背後の「1_0000_」という別名をSnowparkが自動で解決します 21final_df = result_df.select( 22 df1["cola"], 23 df1["colb"], 24 F.col("colc") # df2にしかない、または名前が重複していないならこれでもOK 25) 26

投稿2026/03/11 07:13

MasahikoHirata

総合スコア3793

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問