SalesforceのDMLについての操作方法について前回簡単に触れました。今回はQueryについてテーマを絞っていきたいと思います。
今回使うコンポーネント
コンポーネント | アイコン | 用途 |
---|---|---|
Query | Salesforce内オブジェクトに対し、SOQLを実行する | |
Query xml stream | Salesforce内オブジェクトに対し、SOQLを実行する |
基本的な使い方
Queryコンポーネント自体はSOQL文を知っていれば特に難しい設定はありません。Queryコンポーネントを配置後、Salesforce queryにSOQL文を入力することによってクエリーが実行されるようになります。Connector configrationについては、前回でも使用したSalesforce Config(Salesforce接続情報設定)を使用します。
Queryだけでも動作しますが、取得結果を見やすくするために、Query直後にTransform Messageコンポーネントを入れて、JSON形式にします。
実用的な使い方
上記の使い方では、固定のSOQLを実行していることになるため、条件を変えたい場合はまた別のコンポーネントを使用せねばならず、汎用性・柔軟性に欠けていること言えます。
このQueryコンポーネントをより実用的に使うためには、SOQL文に渡すパラメータを変えたり、SOQL文の条件文を動的に変更したりとある程度汎用的にSOQL文を組み立てる必要があります。
今回は2種類の方法で、SOQLを工夫して組み立てる実用的な方法で組んでいきたいと思います。
バインド変数として使用する
where文で指定する条件などで、特定の項目での絞り込みは決まっているが値が可変になるような形のSOQLにはバインド変数を使用してQueryを作成します。この場合、以下のような形にして、値が変わる部分をバインド変数(:変数名)としてSOQL文を作成します。
バインド変数が何を示すかの定義については、下のParameters欄内で定義します。今回は「salesforceId」というバインド変数を定義し、クエリパラメータから受け取った値をそのままバインド変数にセットします。
動的SOQLのように使用する
バインド変数は、SOQLの一部を変数に置き換えることができるため、値を可変にするだけでなく、条件分全体をバインド変数にして、以下のように動的SOQLのような形にすることも可能です(Dataweaveでエラー表示が出ていますが問題なく動作上は問題ありません)。
Query xml streamを使用した場合
最新のSalesforce ConnectorはQueryではなくQuery xml streamの使用が推奨されています。設定方法自体はQueryと同じですが、以下のように出力の表示が少し異なるので、結果を解析するときは注意が必要です。
コメント