複雑なSQLを含むクエリー
シナリオ
レポートディフィニッションでサポートされていないデータを照会する方法がいくつかあります。 たとえば、BookingアプリケーションソリューションのFSGエンタープライズレイヤーで使用されているHaversine式です。 クエリーは、FSG-Data-Address HaversineFormula Connect-SQLルールの「Browse 」タブにあります。
ソリューション設計
|
D_AddressesWithinDistanceデータページのソースを取得するCode-Pega-List Connect_SQL_pr_fsg_data_addressアクティビティ内のRDB-Listステップに注意してください。
このタイプのクエリには2つのFROM句SELECT(1つは「z」、もう1つは「d」)があるため、レポートディフィニッションを使用して定義することはできません。レポートディフィニッションとは異なり、Connect SQLルールには、パラメーター値が空であることに基づいてフィルター条件をダイナミックに変更する機能はありません。 レポートディフィニッションが、パラメーターに値がない場合に「is null」を生成するよう構成されている場合を除き、Pegaはフィルター条件を無視します。これは、返される行数に制限がない限り、リスクが高くなる場合もあります。
HaversineFormulaクエリー内では、フィルター条件を生成する必要はありません。 IsFor列(現在は「HOTEL」または「VENUE」のいずれか)を除くすべてのクエリーパラメーターに値が入力されない限り、クエリーを実行しても意味がありません。
Connect-SQLルールを使用すると、列名がエイリアスとして返されない場合があるため、注意が必要です。 たとえば、小文字の郵便番号列をキャメルケースのPostalCodeにエイリアス化しても、Postgresデータベースに存在するのと同じように列名はすべて小文字で返されます。
PostgreSQLでは、引用符で囲まれていない名前は大文字小文字を区別しません。たとえば、Select Street as STREETをSTREET、Select Street as Street、Select Street as street
のいずれにしても、列名は「street」となります。列名を「Street」としたいのであれば、「Select Street as “Street”
」のように、列を引用符で囲む必要があります。
このトピックは、下記のモジュールにも含まれています。
- 高度なクエリー設計 v3