1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DatabricksにおけるSQLパラメーターの統合

Posted at

Unifying Parameters Across Databricks | Databricks Blogの翻訳です。

本書は著者が手動で翻訳したものであり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

本日、SQLエディタにおける名前付きパラメーターマーカーのサポートを発表できることを嬉しく思っています。この機能によって、構文を変更することなしにダッシュボードやノートブックに直接コピーして実行できる、パラメーター化されたコードをSQLエディタで記述できるようになります。これは、クエリー、ノートブック、ダッシュボードにおけるパラメーターを統合する我々のジャーニーの大きなマイルストーンとなります。

訳者註
これまでは、SQLエディタでパラメーター化するには{{ }}という構文を用いていました。

名前付きパラメーターマーカーの活用

パラメーターによって、データセットに対するクエリーの実行時に値を置き換えることが可能となり、日付や製品カテゴリーのような評価条件でデータをフィルタリングできるようになります。これは、SQLクエリーでデータを集計する前の効率的なクエリーや正確な分析につながることになります。

パラメーターマーカーは、クエリー、ノートブック、ダッシュボード、ワークフロー、そして、SQL Execution APIでサポートされます。これらは厳密な型定義が行われ、SQL文から指定されれる値を明確に分離することで、SQLインジェクション攻撃に対してより堅牢なものとなります。名前付きパラメーター構文は、:parameter_nameあるいは:`parameter with a space`のように、アルファベットの頭にコロン:を追加するだけで使用できます。

カラム名やテーブル名のようなキーワードを指定するために、identifier(:parameter_name)のようにラッパーとしてidentifier()句を使います。

名前付きパラメーターマーカー構文で既存のパラメーターを更新することをお勧めします。 自動でパラメーターを変換するアシスタントのアクションをまもなく提供する予定です。

一般的なユースケース

パラメーターが有用であるいくつかのユースケースを示します。

特定の時間フレームにあるレコードを選択できるように、クエリーにパラメーター化された日付レンジを追加

SELECT * FROM samples.nyctaxi.trips where tpep_pickup_datetime BETWEEN :start_date AND :end_date

カタログ、スキーマ、テーブルを動的に選択あるいは作成

SELECT * FROM IDENTIFIER(:catalog || '.' || :schema || '.' || :table)

CREATE TABLE IDENTIFIER(:catalog || '.' || :schema || '.' || :table) AS SELECT 1;

パラメーターでスキーマを選択

USE SCHEMA IDENTIFIER(:selected_schema)

電話番号のようなアウトプットを整形するためにテンプレート化された文字列をパラメーター化

SELECT format_string("(%d) %d", :area_code, :phone_number) as phone_number

日、月、年でのロールアップのパラメーター化

SELECT DATE_TRUNC(:date_granularity, tpep_pickup_datetime) AS date_rollup, COUNT(*) AS total_trips FROM trips GROUP BY date_rollup

単一のクエリーで複数のパラメーター値を選択

SELECT * FROM trips WHERE

  array_contains(

    TRANSFORM(SPLIT(:list_parameter, ','), s -> TRIM(s)),

    dropoff_zip

  )

間もなく提供

以下のように、日付範囲複数値を用いて、フィールドやパラメーターのフィルタリングに更なるシンプルさと柔軟性を提供しようとしています。

SELECT * FROM trips where tpep_pickup_datetime BETWEEN :date.min AND :date.max 
SELECT * FROM trips where WHERE array_contains(:zipcodes, dropoff_zip)

名前付きパラメーターマーカー構文を使い始める

クエリー、ノートブック、ダッシュボード、ワークフロー、SQL Execution APIにおける名前付きパラメーターマーカー構文は今から利用できます。フィードバックや質問がある場合には、sql-editor-feedback@databricks.com にコンタクトください。Databricksでパラメーターの活用をスタートする際の詳細なリソースについては、ドキュメントをご覧ください。

Databricks SQLについて学ぶには、Webサイトやドキュメントをご覧ください。また、Databricks SQLの製品ツアーをチェックすることもできます。既存のウェアハウスを、優れたユーザー体験とコスト削減を実現する高性能かつサーバレスなデータウェアハウスに移行したいのであれば、Databricks SQLがソリューションとなります。無料で試して見ましょう

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?