メインコンテンツへジャンプ
ログイン
      • Databricks を知る
        • For App Developers
          • エグゼクティブ向け
            • スタートアップ向け
              • レイクハウスアーキテクチャ
                • Databricks AIリサーチ
                • 導入事例
                  • 注目の導入事例
                  • パートナー
                    • パートナー概要
                      Databricks パートナー エコシステムの詳細
                      • パートナースポットライト
                        注目のパートナーの発表
                        • パートナープログラム
                          特典、レベル、パートナーになる方法をご覧ください
                          • クラウドプロバイダー
                            AWS、Azure、GCP 上の Databricks
                            • パートナーを探す
                              ニーズに合った Databricks パートナーを見つける
                              • パートナーソリューション
                                業界別および移行ソリューションを見つける
                              • Databricks プラットフォーム
                                • プラットフォームの概要
                                  データ・分析・AI のための統合プラットフォーム
                                  • データ管理
                                    データの信頼性・セキュリティ・パフォーマンス
                                    • 共有
                                      オープン、セキュア、ゼロコピーでのデータ共有
                                      • データウェアハウジング
                                        バッチ、ストリーミングデータのための ETL とオーケストレーション
                                        • ガバナンス
                                          データ・分析・AI のための統合ガバナンス
                                          • データエンジニアリング
                                            バッチ、ストリーミングデータのための ETL とオーケストレーション
                                            • 人工知能(AI)
                                              ML と生成 AI アプリケーションの構築とデプロイメント
                                              • データサイエンス
                                                データサイエンスの大規模な連携
                                                • BI
                                                  実世界データのインテリジェント分析
                                                  • アプリケーション開発
                                                    安全なデータと AI アプリを迅速に構築
                                                    • Database
                                                      Postgres for data apps and AI agents
                                                      • セキュリティ
                                                        AI時代のために構築されたオープンなエージェント型SIEM
                                                      • 統合とデータ
                                                        • マーケットプレイス
                                                          データ、分析、AI のためのオープンマーケットプレイス
                                                          • IDE 統合
                                                            お気に入りの IDE(統合開発環境)でレイクハウスを構築
                                                            • パートナーコネクト
                                                              Databricks エコシステムの検索と統合
                                                            • ご利用料金
                                                              • Databricks のご利用料金
                                                                料金設定、DBU、その他
                                                                • コスト計算ツール
                                                                  クラウド利用でのコンピュートコストの試算
                                                                • オープンソース
                                                                  • オープンソーステクノロジー
                                                                    プラットフォームを支えるイノベーションをもっと詳しく
                                                                  • 業界向け Databricks
                                                                    • 通信
                                                                      • メディア・エンターテイメント
                                                                        • 金融サービス
                                                                          • 官公庁・公共機関
                                                                            • 医療・ライフサイエンス
                                                                              • リテール・消費財
                                                                                • 製造
                                                                                  • 全て見る
                                                                                  • クロスインダストリーソリューション
                                                                                    • AI Agents
                                                                                      • サイバーセキュリティ
                                                                                        • マーケティング
                                                                                        • 移行・デプロイメント
                                                                                          • データの移行
                                                                                            • プロフェッショナルサービス
                                                                                            • ソリューションアクセラレータ
                                                                                              • ソリューションアクセラレータ一覧
                                                                                                成果を加速
                                                                                              • トレーニング・認定試験
                                                                                                • トレーニング概要
                                                                                                  ニーズに合わせたカリキュラムを探す
                                                                                                  • Databricks アカデミー
                                                                                                    Databricks ラーニングプラットフォームにサインインする
                                                                                                    • 認定
                                                                                                      スキル・認定で差別化を図る
                                                                                                      • 無料版
                                                                                                        専門家向けデータとAIツールを無料で学べます
                                                                                                        • 大学との連携
                                                                                                          Databricks を教材として活用
                                                                                                        • イベント
                                                                                                          • DATA+AI サミット
                                                                                                            • Data+AI ワールドツアー
                                                                                                              • AI Days
                                                                                                                • イベントカレンダー
                                                                                                                • ブログ・ポッドキャスト
                                                                                                                  • Databricks ブログ
                                                                                                                    最新情報、製品発表、その他の情報
                                                                                                                    • AI ブログ
                                                                                                                      当社のAI研究とエンジニアリングの取り組みをご覧ください
                                                                                                                      • Data Brew ポッドキャスト
                                                                                                                        ご相談・お問い合わせ
                                                                                                                        • ポッドキャスト:Data+AI のチャンピオン
                                                                                                                          イノベーションを支えるデータリーダーのインサイト
                                                                                                                        • お役立ちリソース
                                                                                                                          • カスタマーサポート
                                                                                                                            • ドキュメント
                                                                                                                              • コミュニティ
                                                                                                                              • もっと詳しく
                                                                                                                                • リソースセンター
                                                                                                                                  • デモセンター
                                                                                                                                    • アーキテクチャ センター
                                                                                                                                    • 企業概要
                                                                                                                                      • Databricks について
                                                                                                                                        • 経営陣
                                                                                                                                          • Databricks Ventures
                                                                                                                                            • ご相談・お問い合わせ
                                                                                                                                            • 採用情報
                                                                                                                                              • 採用情報概要
                                                                                                                                                • 求人情報
                                                                                                                                                • プレス・ニュース記事
                                                                                                                                                  • ニュースルーム
                                                                                                                                                    • 受賞歴と業界評価
                                                                                                                                                    • セキュリティと信頼
                                                                                                                                                      • セキュリティと信頼
                                                                                                                                                  • 是非ご検討ください!
                                                                                                                                                  • デモを見る
                                                                                                                                                  • ログイン
                                                                                                                                                  • Databricks 無料トライアル
                                                                                                                                                  1. すべてのブログ
                                                                                                                                                  2. /
                                                                                                                                                    エンジニアリング
                                                                                                                                                  • パラメータ化されたクエリの利点
                                                                                                                                                  • PySpark カスタム文字列フォーマットによるパラメータ化クエリ
                                                                                                                                                  • パラメータマーカーによるパラメータ化クエリ
                                                                                                                                                  • PySparkがパラメータ付きクエリをサニタイズする方法
                                                                                                                                                  • パラメータ化されたクエリーと文字列の補間
                                                                                                                                                  • まとめ
                                                                                                                                                  • パラメータ化されたクエリの利点
                                                                                                                                                  • PySpark カスタム文字列フォーマットによるパラメータ化クエリ
                                                                                                                                                  • パラメータマーカーによるパラメータ化クエリ
                                                                                                                                                  • PySparkがパラメータ付きクエリをサニタイズする方法
                                                                                                                                                  • パラメータ化されたクエリーと文字列の補間
                                                                                                                                                  • まとめ
                                                                                                                                                  オープンソース
                                                                                                                                                  2024年1月3日

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

                                                                                                                                                  によって マシュー・パワーズ, Daniel Tenedorio 、 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のパラメータ付きクエリを活用することで、より高品質なコードベースのメリットをすぐに享受できます。

                                                                                                                                                  最新の投稿を受信トレイで受け取る

                                                                                                                                                  ブログを購読して、最新の投稿を受信トレイにお届けします。

                                                                                                                                                  Sign up

                                                                                                                                                  すべてのブログを見る
                                                                                                                                                  databricks logo
                                                                                                                                                  Databricks を選ぶ理由
                                                                                                                                                  Databricks を選ぶ理由
                                                                                                                                                  • For App Developers
                                                                                                                                                  • エグゼクティブ向け
                                                                                                                                                  • スタートアップ向け
                                                                                                                                                  • レイクハウスアーキテクチャ
                                                                                                                                                  • Databricks AIリサーチ
                                                                                                                                                  導入事例
                                                                                                                                                  • 注目の導入事例
                                                                                                                                                  パートナー
                                                                                                                                                  • パートナー概要
                                                                                                                                                  • パートナープログラム
                                                                                                                                                  • パートナーを探す
                                                                                                                                                  • パートナースポットライト
                                                                                                                                                  • クラウドプロバイダー
                                                                                                                                                  • パートナーソリューション
                                                                                                                                                  Databricks を選ぶ理由
                                                                                                                                                  • For App Developers
                                                                                                                                                  • エグゼクティブ向け
                                                                                                                                                  • スタートアップ向け
                                                                                                                                                  • レイクハウスアーキテクチャ
                                                                                                                                                  • Databricks AIリサーチ
                                                                                                                                                  導入事例
                                                                                                                                                  • 注目の導入事例
                                                                                                                                                  パートナー
                                                                                                                                                  • パートナー概要
                                                                                                                                                  • パートナープログラム
                                                                                                                                                  • パートナーを探す
                                                                                                                                                  • パートナースポットライト
                                                                                                                                                  • クラウドプロバイダー
                                                                                                                                                  • パートナーソリューション
                                                                                                                                                  製品
                                                                                                                                                  レイクハウスプラットフォーム
                                                                                                                                                  • プラットフォーム
                                                                                                                                                  • 共有
                                                                                                                                                  • データガバナンス
                                                                                                                                                  • 人工知能(AI)
                                                                                                                                                  • BI
                                                                                                                                                  • Database
                                                                                                                                                  • データ管理
                                                                                                                                                  • データウェアハウス
                                                                                                                                                  • データエンジニアリング
                                                                                                                                                  • データサイエンス
                                                                                                                                                  • アプリケーション開発
                                                                                                                                                  • セキュリティ
                                                                                                                                                  ご利用料金
                                                                                                                                                  • 料金設定の概要
                                                                                                                                                  • 料金計算ツール
                                                                                                                                                  オープンソース
                                                                                                                                                  統合とデータ
                                                                                                                                                  • マーケットプレイス
                                                                                                                                                  • IDE 統合
                                                                                                                                                  • パートナーコネクト
                                                                                                                                                  レイクハウスプラットフォーム
                                                                                                                                                  • プラットフォーム
                                                                                                                                                  • 共有
                                                                                                                                                  • データガバナンス
                                                                                                                                                  • 人工知能(AI)
                                                                                                                                                  • BI
                                                                                                                                                  • Database
                                                                                                                                                  • データ管理
                                                                                                                                                  • データウェアハウス
                                                                                                                                                  • データエンジニアリング
                                                                                                                                                  • データサイエンス
                                                                                                                                                  • アプリケーション開発
                                                                                                                                                  • セキュリティ
                                                                                                                                                  ご利用料金
                                                                                                                                                  • 料金設定の概要
                                                                                                                                                  • 料金計算ツール
                                                                                                                                                  統合とデータ
                                                                                                                                                  • マーケットプレイス
                                                                                                                                                  • IDE 統合
                                                                                                                                                  • パートナーコネクト
                                                                                                                                                  ソリューション
                                                                                                                                                  業種別
                                                                                                                                                  • 通信
                                                                                                                                                  • 金融サービス
                                                                                                                                                  • 医療・ライフサイエンス
                                                                                                                                                  • 製造
                                                                                                                                                  • メディア・エンタメ
                                                                                                                                                  • 官公庁・公共機関
                                                                                                                                                  • リテール・消費財
                                                                                                                                                  • 全て表示
                                                                                                                                                  クロスインダストリーソリューション
                                                                                                                                                  • サイバーセキュリティ
                                                                                                                                                  • マーケティング
                                                                                                                                                  データの移行
                                                                                                                                                  プロフェッショナルサービス
                                                                                                                                                  ソリューションアクセラレータ
                                                                                                                                                  業種別
                                                                                                                                                  • 通信
                                                                                                                                                  • 金融サービス
                                                                                                                                                  • 医療・ライフサイエンス
                                                                                                                                                  • 製造
                                                                                                                                                  • メディア・エンタメ
                                                                                                                                                  • 官公庁・公共機関
                                                                                                                                                  • リテール・消費財
                                                                                                                                                  • 全て表示
                                                                                                                                                  クロスインダストリーソリューション
                                                                                                                                                  • サイバーセキュリティ
                                                                                                                                                  • マーケティング
                                                                                                                                                  リソース
                                                                                                                                                  ドキュメント
                                                                                                                                                  カスタマーサポート
                                                                                                                                                  コミュニティ
                                                                                                                                                  トレーニング・認定試験
                                                                                                                                                  • トレーニング
                                                                                                                                                  • 認定
                                                                                                                                                  • 無料版
                                                                                                                                                  • 大学との連携
                                                                                                                                                  • Databricks アカデミー
                                                                                                                                                  イベント
                                                                                                                                                  • DATA+AI サミット
                                                                                                                                                  • Data+AI ワールドツアー
                                                                                                                                                  • AI Days
                                                                                                                                                  • イベントカレンダー
                                                                                                                                                  ブログ・ポッドキャスト
                                                                                                                                                  • Databricks ブログ
                                                                                                                                                  • AI ブログ
                                                                                                                                                  • Data Brew ポッドキャスト
                                                                                                                                                  • Data+AI のチャンピオンシリーズ
                                                                                                                                                  トレーニング・認定試験
                                                                                                                                                  • トレーニング
                                                                                                                                                  • 認定
                                                                                                                                                  • 無料版
                                                                                                                                                  • 大学との連携
                                                                                                                                                  • Databricks アカデミー
                                                                                                                                                  イベント
                                                                                                                                                  • DATA+AI サミット
                                                                                                                                                  • Data+AI ワールドツアー
                                                                                                                                                  • AI Days
                                                                                                                                                  • イベントカレンダー
                                                                                                                                                  ブログ・ポッドキャスト
                                                                                                                                                  • Databricks ブログ
                                                                                                                                                  • 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 2026. All rights reserved. Apache, Apache Spark, Spark and the Spark logo are trademarks of the Apache Software Foundation.

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