0
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?

More than 1 year has passed since last update.

【クエリビルダ】プロンプトフィルターを使いこなす

Last updated at Posted at 2023-03-28

データを扱うアプリケーションで必ず必要なクエリ、そのクエリの作成を支援するSharperlightアプリケーションがクエリビルダです。
そのクエリビルダにはフィルター定義に関するオプション群のなかにプロンプト専用フィルターというものがあります。
image.png
今回は、そのプロンプト専用フィルターを使用してみます。

Sharperlightクエリビルダで作成されたクエリは、Sharperlightエンジンにより動的にSQL文となり実行されます。
定義されるフィルターは、基本的にクエリ対象テーブルに存在する列に対して作成され、それらがSQL文のWHERE句を構成します。
しかしながら、そういった通常のフィルターに対してプロンプト専用フィルターオプションをオンにすると、そのフィルターはWHERE句から除外されます。

またクエリ対象テーブルに存在しない列をフィルターに追加し、引数あるいは変数としてクエリの拡張に使用する際、そういった列は強制的にプロンプト専用フィルターとなり、WHERE句として生成されることはありません。

プロンプト専用フィルターの動き

このようなクエリがあります。フィルターのCanceledを使用します。
image.png
通常では、このクエリのSQL文のWHERE句はこのようになります。Canceledフィルターが使用されていますね。
image.png
今度はプロンプト専用フィルターオプションをオンにしてみます。
image.png
背景が薄い黄色になります。
image.png
生成されたSQL文では、このようにWHERE句には存在しなくなります。
image.png

プロンプト専用フィルターの利用例

デバッグ時

クエリの作成中は、結果を確認しながら作業をします。その作業中クエリに必要なフィルターなのに、結果確認のため一時的にWHERE句から外したい場合があります。そのような場合にそのフィルターを削除してしまうのではなく、プロンプト専用フィルターオプションをオンにして結果を確認し、その後はまたオフにすれば再度フィルターを定義し直す必要はありません。複雑な定義のフィルターであれば尚更のことです。

間接的にフィルターとして

クエリーへの引数的な使い方です。
プロンプト専用フィルターとして定義したフィルターにある値を渡します。その値を元に別の通常フィルターの値を決定します。
参照:【クエリビルダ】プロンプトフィルター:通常フィルター値の決定要因として使う

クエリ結果に値を渡す

これもクエリーへの引数的な使い方です。
プロンプト専用フィルターとして定義したフィルターにある値を渡します。その値を出力アイテムとして出力したり、その値を元に他の出力アイテムの値を計算したりします。
参照:【クエリビルダ】プロンプトフィルター:出力アイテムで使用する






プロンプト専用フィルターを使用することで、かなりクエリ定義の幅が拡がるのではないでしょうか。
では、失礼します。

0
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
0
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?