SQLによるデータのフィルタリングと選択
メニューを表示するにはスワイプしてください
一時ビューは、DataFrameに対するセッションスコープのエイリアスであり、標準SQL構文を使用してデータを操作することが可能。データの移動や複製は行われず、クラスターのメモリ上にあるDataFrameへのSQLフレンドリーな「ウィンドウ」を提供。
Pythonは複雑なパイプラインの構築に優れている一方、多くのデータプロフェッショナルはデータのフィルタリングや選択において、SQLの可読性と迅速さを好む。Databricksでは、どちらか一方を選ぶ必要はなく、PythonのDataFrameを一時的なSQLテーブル(「ビュー」)に変換し、すぐにクエリを実行することが可能。
一時ビューの作成
DataFrameに対してSQLクエリを実行する前に、SQLエンジンが認識できる名前を付ける必要がある。これには createOrReplaceTempView メソッドを使用。
# Create a SQL view named 'diamond_view' from our existing DataFrame
df.createOrReplaceTempView("diamond_view")
このコマンドの「Replace」部分は重要であり、セルを再実行した場合でもエラーを発生させず、ビューを単純に更新します。このビューは現在のノートブックセッションの間だけ存在します。
%sqlマジックによるクエリ実行
ビューが登録されたので、言語を切り替えることができます。新しいセルの先頭で%sqlマジックコマンドを使用することで、Pythonで行ったのと同じ選択やフィルタを標準SQL構文で実行できます。
%sql
SELECT carat, cut, depth
FROM diamond_view
WHERE price > 500
SQLフィルタリングの強力さ
SQLは複雑なフィルタリングに特に直感的。IN演算子を使用して複数の値でフィルタリングしたり、LIKE演算子でパターンマッチングを行うことが可能。これらの操作はPythonではより冗長になることが多い。
%sql
SELECT * FROM diamond_view
WHERE cut IN ('Good', 'Premium')
AND clarity LIKE '%V%'
列の選択とエイリアス付け
SQLでは、ASキーワードを使って列を選択し、名前を変更することが簡単にできます。これは、最終的なレポートのヘッダーをよりプロフェッショナルに見せるためによく使われる手法です。
%sql
SELECT
carat,
cut AS Diamond_Quality,
price AS Selling_Price
FROM diamond_view
一時ビューを使う理由
「なぜカタログから直接テーブルをクエリしないのか?」と疑問に思うかもしれません。一時ビューの利点は、Pythonで部分的にクリーンアップや加工を行ったDataFrameをクエリできる点にあります。これにより、データエンジニアリングの「重い処理」はPythonで行い、最終的な分析や可視化はSQLで実施するという橋渡しが可能になります。
1. DataFrame を %sql でクエリする前に実行しなければならない Python メソッドはどれですか?
2. ノートブックをクラスターから切断するかセッションを終了した場合、「一時ビュー」はどうなりますか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください