2025年2月19日水曜日

APEX 24.2のファセット検索に追加された新機能について

Oracle APEX 24.2ではファセット検索に、以下の2つの新機能が追加されています。
  • 「ファイルの追加」ダイアログ
  • ファセットの同期化
それぞれの機能について、簡単に紹介します。

「ファセットの追加」ダイアログ


ファセットのプロパティの外観に表示が追加されました。インラインと「フィルタの追加」ダイアログのどちらかを選択できます。


インラインはOracle APEX 24.2以前の表示形式です。


JobとSalaryのファセットを「フィルタの追加」ダイアログに変更してみます。


JobとSalaryのファセットが表示されなくなります。代わりに検索フィールドの右にボタンとしてフィルタの追加が表示されます。


フィルタの追加をクリックすると、表示として「フィルタの追加」ダイアログを設定したファセットが現れます。


選択リストよりファセットを選択します。


ファセットの選択方法は同じです。

追加されたファセットを変更するには、ファセット名をクリックします。


画面の高さには限りがあるため、あまり多くのファセットをファセット検索に含めると使い勝手が悪くなりました。あまり使用されないファセットを「フィルタの追加」ダイアログに移動することにより、使いやすさを確保した上で詳細な条件指定ができるようになります。


ファセットの同期化


ファセットのコンテキスト・メニューにファセットの同期化が追加されました。


ファセットの同期化を実行すると、ファセットのソースのフィルタ済リージョンの列に対応したファセットが作成されます。同期化という名前ですが、リージョンから列が削除されても対応したファセットは削除されないようです。同期化ではファセットの作成のみが行われます。

リージョンに列EMPNO、ENAME、MGR、JOB、HIREDATE、SAL、COMM、DEPTNOがあり、ファセットとしてP3_DEPTNO、P3_MGR、P3_JOB、P3_SALがある場合、ファセットの同期化を実行すると、ファセットとしてP3_EMPNO、P3_ENAME、P3_HIREDATE、P3_COMMが作成されます。


列EMPNOは主キーなのでデータの行数だけ選択肢があります。ファセットには向いていません。列ENAMEもほぼユニークな名前なので同様にファセット向きの列ではありません。そういった点を考慮せず、列に対応したファセットがなければ、ファセットが新規に作成されるようです。

ファセットの同期化の後にこれらの不要なファセットは削除できます。しかし、再度、ファセットの同期化を実行すると再作成されます。何度も削除するのは手間なので、削除の代わりに構成のビルド・オプションにコメント・アウトを設定します。


上記の例では、列HIREDATEに対応したファセットP3_HIREDATEが作成されています。列HIREDATEのデータ型はDATEですが、作成されたファセットP3_HIREDATEではデータ型がVARCHAR2になっています。


列COMMも同様で、本来NUMBER型であるところが、VARCHAR2になっています。


ファセットはデータ型に依存して指定できる条件が変わります。DATE型やNUMBER型であれば条件として範囲が含まれますが、VARCHAR2にはありません。ファセットの同期化によって作成されたファセットのデータ型は(VARCHAR2以外であれば)必ず手動で設定する必要があります。

以前に記事「Oracle APEX 24.2のRESTデータ・ソースのトークンによるページネーションのサポートを確認する」にて、ファセットの作成で作成したファセットはマップ・リージョンと連動しなかったことがあります。そのため、ファセットの同期化によりファセットを作成しました。データ型の選択が適切でない点はありますが、ファセットの作成でファセットを作成するよりは、ファセットの同期化でファセットを作成した上でプロパティを調整する方をお勧めします。

今回の記事は以上になります。

完