Salesforceのクエリー操作

SalesforceのDMLについての操作方法について前回簡単に触れました。今回はQueryについてテーマを絞っていきたいと思います。

スポンサーリンク

今回使うコンポーネント

コンポーネントアイコン用途
QuerySalesforce内オブジェクトに対し、SOQLを実行する
Query xml streamSalesforce内オブジェクトに対し、SOQLを実行する

基本的な使い方

Queryコンポーネント自体はSOQL文を知っていれば特に難しい設定はありません。Queryコンポーネントを配置後、Salesforce queryにSOQL文を入力することによってクエリーが実行されるようになります。Connector configrationについては、前回でも使用したSalesforce Config(Salesforce接続情報設定)を使用します。

Queryの設定内容

Queryだけでも動作しますが、取得結果を見やすくするために、Query直後にTransform Messageコンポーネントを入れて、JSON形式にします。

Query直後にTransformMessageでJSON変換

実用的な使い方

上記の使い方では、固定のSOQLを実行していることになるため、条件を変えたい場合はまた別のコンポーネントを使用せねばならず、汎用性・柔軟性に欠けていること言えます。
このQueryコンポーネントをより実用的に使うためには、SOQL文に渡すパラメータを変えたり、SOQL文の条件文を動的に変更したりとある程度汎用的にSOQL文を組み立てる必要があります。
今回は2種類の方法で、SOQLを工夫して組み立てる実用的な方法で組んでいきたいと思います。

バインド変数として使用する

where文で指定する条件などで、特定の項目での絞り込みは決まっているが値が可変になるような形のSOQLにはバインド変数を使用してQueryを作成します。この場合、以下のような形にして、値が変わる部分をバインド変数(:変数名)としてSOQL文を作成します。

バインド変数が何を示すかの定義については、下のParameters欄内で定義します。今回は「salesforceId」というバインド変数を定義し、クエリパラメータから受け取った値をそのままバインド変数にセットします。

バインド変数を使用したQuery使用のフロー

動的SOQLのように使用する

バインド変数は、SOQLの一部を変数に置き換えることができるため、値を可変にするだけでなく、条件分全体をバインド変数にして、以下のように動的SOQLのような形にすることも可能です(Dataweaveでエラー表示が出ていますが問題なく動作上は問題ありません)。

バインド変数を動的SOQLとして使用する

Query xml streamを使用した場合

最新のSalesforce ConnectorはQueryではなくQuery xml streamの使用が推奨されています。設定方法自体はQueryと同じですが、以下のように出力の表示が少し異なるので、結果を解析するときは注意が必要です。

Query xml streamを使用した時の出力
MuleSoft
スポンサーリンク

コメント