メインコンテンツへジャンプ
ログイン
      • Databricks を知る
        • エグゼクティブ向け
          • スタートアップ向け
            • レイクハウスアーキテクチャ
              • Mosaic Research
              • 導入事例
                • 注目の導入事例
                  • 導入事例一覧へ
                  • パートナー
                    • クラウドプロバイダ
                      Databricks on AWS、Azure、GCP
                      • コンサルティング・SI
                        Databricks の構築・デプロイ、Databricks への移行のエキスパート
                        • 技術パートナー
                          既存のツールをレイクハウスに接続
                          • C&SI パートナー
                            レイクハウスの構築・デプロイメント、レイクハウスへの移行
                            • データパートナー
                              データコンシューマーのエコシステムにアクセス
                              • パートナーソリューション
                                業界・移行のニーズに応じたカスタムソリューション
                                • Databricks で構築
                                  ビジネスの創造・マーケティング・成長
                                • Databricks プラットフォーム
                                  • プラットフォームの概要
                                    データ・分析・AI のための統合プラットフォーム
                                    • データ管理
                                      データの信頼性・セキュリティ・パフォーマンス
                                      • 共有
                                        オープン、セキュア、ゼロコピーでのデータ共有
                                        • データウェアハウジング
                                          バッチ、ストリーミングデータのための ETL とオーケストレーション
                                          • ガバナンス
                                            データ・分析・AI のための統合ガバナンス
                                            • リアルタイム分析
                                              リアルタイム分析、AI、アプリケーションをシンプルに
                                              • 人工知能(AI)
                                                ML と生成 AI アプリケーションの構築とデプロイメント
                                                • データエンジニアリング
                                                  バッチ、ストリーミングデータのための ETL とオーケストレーション
                                                  • BI
                                                    実世界データのインテリジェント分析
                                                    • データサイエンス
                                                      データサイエンスの大規模な連携
                                                    • 統合とデータ
                                                      • マーケットプレイス
                                                        データ、分析、AI のためのオープンマーケットプレイス
                                                        • IDE 統合
                                                          お気に入りの IDE(統合開発環境)でレイクハウスを構築
                                                          • パートナーコネクト
                                                            Databricks エコシステムの検索と統合
                                                          • ご利用料金
                                                            • Databricks のご利用料金
                                                              料金設定、DBU、その他
                                                              • コスト計算ツール
                                                                クラウド利用でのコンピュートコストの試算
                                                              • オープンソース
                                                                • オープンソーステクノロジー
                                                                  プラットフォームを支えるイノベーションをもっと詳しく
                                                                • 業界向け Databricks
                                                                  • 通信
                                                                    • メディア・エンターテイメント
                                                                      • 金融サービス
                                                                        • 官公庁・公共機関
                                                                          • 医療・ライフサイエンス
                                                                            • リテール・消費財
                                                                              • 製造
                                                                                • 全て見る
                                                                                • クロスインダストリーソリューション
                                                                                  • サイバーセキュリティ
                                                                                    • マーケティング
                                                                                    • 移行・デプロイメント
                                                                                      • データの移行
                                                                                        • プロフェッショナルサービス
                                                                                        • ソリューションアクセラレータ
                                                                                          • ソリューションアクセラレータ一覧
                                                                                            成果を加速
                                                                                          • トレーニング・認定試験
                                                                                            • 学習の概要
                                                                                              トレーニング、認定、イベントなどのハブ
                                                                                              • トレーニング概要
                                                                                                ニーズに合わせたカリキュラムを探す
                                                                                                • Databricks アカデミー
                                                                                                  Databricks ラーニングプラットフォームにサインインする
                                                                                                  • 認定
                                                                                                    スキル・認定で差別化を図る
                                                                                                    • 大学との連携
                                                                                                      Databricks を教材として活用
                                                                                                    • イベント
                                                                                                      • DATA+AI サミット
                                                                                                        • Data+AI ワールドツアー
                                                                                                          • Data Intelligence Days
                                                                                                            • イベントカレンダー
                                                                                                            • ブログ・ポッドキャスト
                                                                                                              • Databricks ブログ
                                                                                                                最新情報、製品発表、その他の情報
                                                                                                                • Databricks Mosaic AIリサーチブログ
                                                                                                                  AI世代に関する最新リサーチ
                                                                                                                  • Data Brew ポッドキャスト
                                                                                                                    ご相談・お問い合わせ
                                                                                                                    • ポッドキャスト:Data+AI のチャンピオン
                                                                                                                      イノベーションを支えるデータリーダーのインサイト
                                                                                                                    • お役立ちリソース
                                                                                                                      • カスタマーサポート
                                                                                                                        • ドキュメント
                                                                                                                          • コミュニティ
                                                                                                                          • もっと詳しく
                                                                                                                            • リソースセンター
                                                                                                                              • デモセンター
                                                                                                                              • 企業概要
                                                                                                                                • Databricks について
                                                                                                                                  • 経営陣
                                                                                                                                    • Databricks Ventures
                                                                                                                                      • ご相談・お問い合わせ
                                                                                                                                      • 採用情報
                                                                                                                                        • 採用情報概要
                                                                                                                                          • 求人情報
                                                                                                                                          • プレス・ニュース記事
                                                                                                                                            • ニュースルーム
                                                                                                                                              • 受賞歴と業界評価
                                                                                                                                              • セキュリティと信頼
                                                                                                                                                • セキュリティと信頼
                                                                                                                                            • 是非ご検討ください!
                                                                                                                                            • デモを見る
                                                                                                                                            • ログイン
                                                                                                                                            • Databricks 無料トライアル
                                                                                                                                            1. ブログ
                                                                                                                                            2. /
                                                                                                                                              オープンソース
                                                                                                                                            3. /
                                                                                                                                              記事

                                                                                                                                            PySparkによるパラメータ化クエリ

                                                                                                                                            Parameterized queries with PySpark

                                                                                                                                            Published: January 3, 2024

                                                                                                                                            オープンソース2分で読めます

                                                                                                                                            マシュー・パワーズ、ダニエル・テネドリオ、Hyukjin Kwon による投稿

                                                                                                                                            この投稿を共有する

                                                                                                                                            最新の投稿を通知します

                                                                                                                                            PySparkは常にデータを問い合わせるための素晴らしいSQLとPython APIを提供してきました。 Databricks Runtime 12.1とApache Spark 3.4の時点で、パラメータ化されたクエリは、Pythonicプログラミングパラダイムを使用してSQLでデータをクエリする安全で表現力豊かな方法をサポートしています。

                                                                                                                                            この投稿では、PySparkでパラメータ化されたクエリを作成する方法と、それがあなたのコードにとって良いデザインパターンである場合について説明します。

                                                                                                                                            パラメータは、Sparkコードの再利用やテストを容易にするのに役立ちます。 また、良いコーディングの実践も奨励しています。 この記事では、PySparkのクエリをパラメータ化する2つの異なる方法を示します:

                                                                                                                                            1. PySparkカスタム文字列フォーマット
                                                                                                                                            2. パラメータマーカー

                                                                                                                                            両方のタイプのPySparkパラメータ付きクエリの使い方を見て、組み込みの機能が他の選択肢よりも優れている理由を探ってみましょう。

                                                                                                                                            パラメータ化されたクエリの利点

                                                                                                                                            パラメータ化されたクエリは、"Don't Repeat yourself" (DRY)パターンを奨励し、ユニットテストを容易にし、SQLを再利用しやすくします。 また、セキュリティの脆弱性をもたらすSQLインジェクション攻撃も防ぐことができます。

                                                                                                                                            似たようなクエリを書くとき、SQLの大きな塊をコピー&ペーストしたくなることがあります。 パラメータ化されたクエリは、パターンを抽象化し、DRYパターンでコードを書くことを推奨します。

                                                                                                                                            パラメータ化されたクエリはテストも簡単です。 クエリをパラメータ化することで、本番データやテストデータセットで簡単に実行できます。

                                                                                                                                            一方、Pythonのf-stringsを使ってSQLクエリを手動でパラメータ化するのは、あまり良い方法ではありません。 以下のデメリットを考えてみてください:

                                                                                                                                            1. Pythonのf-stringsはSQLインジェクション攻撃への防御を提供しません。
                                                                                                                                            2. Pythonのf-stringsはDataFramesやカラム、特殊文字などのPythonネイティブオブジェクトを理解しません。

                                                                                                                                            SQLインジェクションの脆弱性からコードを保護し、文字列形式の一般的なPySparkインスタンスの自動型変換をサポートするパラメータマーカーでクエリをパラメータ化する方法を見てみましょう。

                                                                                                                                            PySpark カスタム文字列フォーマットによるパラメータ化クエリ

                                                                                                                                            h20_1e9という9列のデータ・テーブルがあるとします:

                                                                                                                                            以下の SQL クエリをパラメータ化したいとします:

                                                                                                                                            このクエリを、id1 の値を変えて簡単に実行できるようにしたいとします。 ここでは、id1 の値を変えてクエリをパラメータ化して実行する方法を説明します。

                                                                                                                                            別の引数を指定してクエリを再実行します:

                                                                                                                                            PySpark の文字列フォーマッタを使うと、明示的に一時ビューを定義することなく DataFrame に対して直接 SQL クエリを実行することもできます。

                                                                                                                                            次のようなperson_dfというDataFrameがあるとします:

                                                                                                                                            SQLでDataFrameに問い合わせる方法は以下の通りです。

                                                                                                                                            一時ビューを手動で登録することなく、SQL構文を使ってDataFrame上でクエリを実行できるのは非常に便利です!

                                                                                                                                            それでは、パラメータマーカーで引数を指定してクエリをパラメータ化する方法を見てみましょう。

                                                                                                                                            パラメータマーカーによるパラメータ化クエリ

                                                                                                                                            引数のディクショナリを使用して、パラメータマーカーでパラメータ化された SQL クエリを作成することもできます。

                                                                                                                                            some_purchasesという名前の以下のビューがあるとします:

                                                                                                                                            ここでは、名前付きパラメータマーカーを使用してパラメータ化されたクエリを作成し、指定されたアイテムの合計金額を計算する方法を示します。

                                                                                                                                            靴下に費やした総額を計算してください。

                                                                                                                                            無名のパラメータマーカーを使用してクエリをパラメータ化することもできます。

                                                                                                                                            Apache Sparkはパラメータマーカーをサニタイズするので、このパラメータ化手法はSQLインジェクション攻撃からも保護されます。

                                                                                                                                            PySparkがパラメータ付きクエリをサニタイズする方法

                                                                                                                                            以下は、Sparkが名前付きパラメータ化クエリをどのようにサニタイズするかについての高レベルの説明です:

                                                                                                                                            • SQLクエリは、オプションのキー/値パラメータ・リストとともに送信されます。
                                                                                                                                            • Apache SparkはSQLクエリを解析し、パラメータ参照を対応する解析ツリーノードに置き換えます。
                                                                                                                                            • 分析中、Catalystルールが実行され、これらの参照をパラメータから提供されたパラメータ値に置き換えます。
                                                                                                                                            • この方法はリテラル値のみをサポートするため、SQLインジェクション攻撃から保護されます。 正規文字列補間はSQL文字列に対して置換を適用します。文字列が意図したリテラル値以外のSQL構文を含んでいる場合、この戦略は攻撃に対して脆弱になる可能性があります。

                                                                                                                                            前述したように、PySparkでは2種類のパラメータ付きクエリがサポートされています:

                                                                                                                                            • PEP 3101に基づく{}構文を使用したクライアント側のパラメータ化(私たちはこれをカスタム文字列フォーマットと呼んでいます)
                                                                                                                                            • 名前付きパラメータマーカーまたは無名パラメータマーカーを使用したサーバサイドのパラメータ化

                                                                                                                                            構文 {} はクライアント側でSQLクエリの文字列置換を行い、使いやすさとプログラムしやすさを向上させます。 ただし、クエリテキストは Spark サーバーに送信される前に置換されるため、SQL インジェクション攻撃からは保護されません。

                                                                                                                                            パラメータ化はsql() API のargs引数を使用し、SQL テキストとパラメータを別々にサーバに渡します。 SQLテキストはパラメータのプレースホルダと共に解析され、解析されたクエリツリーのargsで指定されたパラメータの値に置き換えられます。

                                                                                                                                            サーバサイドパラメータ化クエリには、名前付きパラメータマーカーと無名パラメータマーカーの2種類があります。 名前付きパラメータマーカーでは、プレースホルダに :<param_name> 構文を使用します。 無名パラメータマーカーの使用方法の詳細については、ドキュメントを参照してください。

                                                                                                                                            パラメータ化されたクエリーと文字列の補間

                                                                                                                                            通常のPython文字列補間を使用してクエリをパラメータ化することもできますが、それほど便利ではありません。

                                                                                                                                            Pythonのf-stringsを使った先ほどのクエリのパラメータは以下のようになります:

                                                                                                                                            次のような理由から、これはあまりいいことではありません:

                                                                                                                                            • 一時的なビューを作成する必要があります。
                                                                                                                                            • Python の日付ではなく、文字列として日付を表現する必要があります。
                                                                                                                                            • SQL文字列を適切にフォーマットするために、クエリ内で日付をシングルクォートで囲む必要があります。
                                                                                                                                            • これはSQLインジェクション攻撃を防御するものではありません。

                                                                                                                                            まとめると、組み込みのクエリ・パラメータ化機能は、文字列補間よりも安全で効果的です。

                                                                                                                                            まとめ

                                                                                                                                            PySpark のパラメータ化されたクエリは、使い慣れた SQL 構文できれいなコードを書くための新しい機能を提供します。 SQLでSpark DataFrameをクエリするときに便利です。 浮動小数点値、文字列、日付、datetimeのような一般的なPythonデータ型を使うことができ、これらは自動的にSQL値に変換されます。 このようにして、一般的なPythonイディオムを活用し、美しいコードを書くことができるようになりました。

                                                                                                                                            今すぐPySparkのパラメータ付きクエリを活用することで、より高品質なコードベースのメリットをすぐに享受できます。

                                                                                                                                            最新の投稿を通知します

                                                                                                                                            関連記事

                                                                                                                                            この投稿を共有する

                                                                                                                                            Databricksの投稿を見逃さないようにしましょう

                                                                                                                                            興味のあるカテゴリを購読して、最新の投稿を受信トレイに届けましょう

                                                                                                                                            Sign up

                                                                                                                                            次は何ですか?

                                                                                                                                            Introducing Apache Spark™ 3.5

                                                                                                                                            オープンソース

                                                                                                                                            September 14, 2023/4分で読めます

                                                                                                                                            Apache Spark™ 3.5のご紹介

                                                                                                                                            GGML GGUF File Format Vulnerabilities

                                                                                                                                            オープンソース

                                                                                                                                            March 22, 2024/6分で読めます

                                                                                                                                            GGML GGUF ファイルフォーマットの脆弱性

                                                                                                                                            databricks logo
                                                                                                                                            Databricks を選ぶ理由
                                                                                                                                            Databricks を選ぶ理由
                                                                                                                                            • エグゼクティブ向け
                                                                                                                                            • スタートアップ向け
                                                                                                                                            • レイクハウスアーキテクチャ
                                                                                                                                            • Mosaic Research
                                                                                                                                            導入事例
                                                                                                                                            • 全て見る
                                                                                                                                            • 注目の導入事例
                                                                                                                                            パートナー
                                                                                                                                            • クラウドプロバイダ
                                                                                                                                            • 技術パートナー
                                                                                                                                            • データパートナー
                                                                                                                                            • Databricks で構築
                                                                                                                                            • コンサルティング・SI
                                                                                                                                            • C&SI パートナー
                                                                                                                                            • パートナーソリューション
                                                                                                                                            Databricks を選ぶ理由
                                                                                                                                            • エグゼクティブ向け
                                                                                                                                            • スタートアップ向け
                                                                                                                                            • レイクハウスアーキテクチャ
                                                                                                                                            • Mosaic Research
                                                                                                                                            導入事例
                                                                                                                                            • 全て見る
                                                                                                                                            • 注目の導入事例
                                                                                                                                            パートナー
                                                                                                                                            • クラウドプロバイダ
                                                                                                                                            • 技術パートナー
                                                                                                                                            • データパートナー
                                                                                                                                            • Databricks で構築
                                                                                                                                            • コンサルティング・SI
                                                                                                                                            • C&SI パートナー
                                                                                                                                            • パートナーソリューション
                                                                                                                                            製品
                                                                                                                                            レイクハウスプラットフォーム
                                                                                                                                            • プラットフォーム
                                                                                                                                            • 共有
                                                                                                                                            • データガバナンス
                                                                                                                                            • 人工知能(AI)
                                                                                                                                            • DBRX
                                                                                                                                            • データ管理
                                                                                                                                            • データウェアハウス
                                                                                                                                            • データストリーミング
                                                                                                                                            • データエンジニアリング
                                                                                                                                            • データサイエンス
                                                                                                                                            ご利用料金
                                                                                                                                            • 料金設定の概要
                                                                                                                                            • 料金計算ツール
                                                                                                                                            オープンソース
                                                                                                                                            統合とデータ
                                                                                                                                            • マーケットプレイス
                                                                                                                                            • IDE 統合
                                                                                                                                            • パートナーコネクト
                                                                                                                                            レイクハウスプラットフォーム
                                                                                                                                            • プラットフォーム
                                                                                                                                            • 共有
                                                                                                                                            • データガバナンス
                                                                                                                                            • 人工知能(AI)
                                                                                                                                            • DBRX
                                                                                                                                            • データ管理
                                                                                                                                            • データウェアハウス
                                                                                                                                            • データストリーミング
                                                                                                                                            • データエンジニアリング
                                                                                                                                            • データサイエンス
                                                                                                                                            ご利用料金
                                                                                                                                            • 料金設定の概要
                                                                                                                                            • 料金計算ツール
                                                                                                                                            統合とデータ
                                                                                                                                            • マーケットプレイス
                                                                                                                                            • IDE 統合
                                                                                                                                            • パートナーコネクト
                                                                                                                                            ソリューション
                                                                                                                                            業種別
                                                                                                                                            • 通信
                                                                                                                                            • 金融サービス
                                                                                                                                            • 医療・ライフサイエンス
                                                                                                                                            • 製造
                                                                                                                                            • メディア・エンタメ
                                                                                                                                            • 官公庁・公共機関
                                                                                                                                            • リテール・消費財
                                                                                                                                            • 全て表示
                                                                                                                                            クロスインダストリーソリューション
                                                                                                                                            • サイバーセキュリティ
                                                                                                                                            • マーケティング
                                                                                                                                            データの移行
                                                                                                                                            プロフェッショナルサービス
                                                                                                                                            ソリューションアクセラレータ
                                                                                                                                            業種別
                                                                                                                                            • 通信
                                                                                                                                            • 金融サービス
                                                                                                                                            • 医療・ライフサイエンス
                                                                                                                                            • 製造
                                                                                                                                            • メディア・エンタメ
                                                                                                                                            • 官公庁・公共機関
                                                                                                                                            • リテール・消費財
                                                                                                                                            • 全て表示
                                                                                                                                            クロスインダストリーソリューション
                                                                                                                                            • サイバーセキュリティ
                                                                                                                                            • マーケティング
                                                                                                                                            リソース
                                                                                                                                            ドキュメント
                                                                                                                                            カスタマーサポート
                                                                                                                                            コミュニティ
                                                                                                                                            トレーニング・認定試験
                                                                                                                                            • トレーニング概要
                                                                                                                                            • トレーニング
                                                                                                                                            • 認定
                                                                                                                                            • 大学との連携
                                                                                                                                            • Databricks アカデミー
                                                                                                                                            イベント
                                                                                                                                            • DATA+AI サミット
                                                                                                                                            • Data+AI ワールドツアー
                                                                                                                                            • Data Intelligence Days
                                                                                                                                            • イベントカレンダー
                                                                                                                                            ブログ・ポッドキャスト
                                                                                                                                            • Databricks ブログ
                                                                                                                                            • Databricks Mosaic AIリサーチブログ
                                                                                                                                            • Data Brew ポッドキャスト
                                                                                                                                            • Data+AI のチャンピオンシリーズ
                                                                                                                                            トレーニング・認定試験
                                                                                                                                            • トレーニング概要
                                                                                                                                            • トレーニング
                                                                                                                                            • 認定
                                                                                                                                            • 大学との連携
                                                                                                                                            • Databricks アカデミー
                                                                                                                                            イベント
                                                                                                                                            • DATA+AI サミット
                                                                                                                                            • Data+AI ワールドツアー
                                                                                                                                            • Data Intelligence Days
                                                                                                                                            • イベントカレンダー
                                                                                                                                            ブログ・ポッドキャスト
                                                                                                                                            • Databricks ブログ
                                                                                                                                            • Databricks Mosaic AIリサーチブログ
                                                                                                                                            • Data Brew ポッドキャスト
                                                                                                                                            • Data+AI のチャンピオンシリーズ
                                                                                                                                            企業情報
                                                                                                                                            企業概要
                                                                                                                                            • Databricks について
                                                                                                                                            • 経営陣
                                                                                                                                            • Databricks Ventures
                                                                                                                                            • ご相談・お問い合わせ
                                                                                                                                            採用情報
                                                                                                                                            • 採用情報概要
                                                                                                                                            • 求人情報
                                                                                                                                            プレス・ニュース記事
                                                                                                                                            • ニュースルーム
                                                                                                                                            • 受賞歴と業界評価
                                                                                                                                            セキュリティと信頼
                                                                                                                                            企業概要
                                                                                                                                            • Databricks について
                                                                                                                                            • 経営陣
                                                                                                                                            • Databricks Ventures
                                                                                                                                            • ご相談・お問い合わせ
                                                                                                                                            採用情報
                                                                                                                                            • 採用情報概要
                                                                                                                                            • 求人情報
                                                                                                                                            プレス・ニュース記事
                                                                                                                                            • ニュースルーム
                                                                                                                                            • 受賞歴と業界評価
                                                                                                                                            databricks logo

                                                                                                                                            Databricks Inc.
                                                                                                                                            160 Spear Street, 15th Floor
                                                                                                                                            San Francisco, CA 94105
                                                                                                                                            1-866-330-0121

                                                                                                                                            採用情報

                                                                                                                                            © Databricks 2025. All rights reserved. Apache, Apache Spark, Spark and the Spark logo are trademarks of the Apache Software Foundation.

                                                                                                                                            • プライバシー通知
                                                                                                                                            • |利用規約
                                                                                                                                            • |現代奴隷法に関する声明
                                                                                                                                            • |カリフォルニア州のプライバシー権利
                                                                                                                                            • |プライバシー設定