Salesforceに特化した情報をお届けします

Salesforceで使われるSOQLとは?便利なブラウザ拡張機能と併せてご紹介
Salesforceで使われるSOQLとは?
SOQLとは、Salesforceのオブジェクトから条件を指定してレコードを取得する際に使われる言語のことです。
SOQLを使うことにより、例えば、取引先責任者オブジェクトの中から、取引先名に「株式会社」が含まれるレコードのみを抽出し、最終更新日が新しい順に並び替えて表示する、というような操作が容易にできるようになります。
SOQLは「Salesforce Object Query Language」の略で、日本語に訳すと「Salesforce オブジェクトクエリ言語」となります。SOQLは一文字ずつ「エスオーキューエル」と読む人もいれば、「ソークル」のように一つの単語のように読む人もいます。
SOQLの使用方法
ここではブラウザの拡張機能であるSalesforce inspectorを用いてSOQLの使い方を紹介します。
SOQLを使用する方法は他にも、開発者コンソールやWorkbenchなどいくつかありますが、Salesforce inspectorは機能が豊富でとても便利です。ChromeまたはFirefoxに対応しています。
それでは実際に使ってみましょう。
ブラウザで「Salesforce inspector」と検索し、拡張機能の追加が完了したら、Salesforceの環境を開きます。すると、画面右端に三角ボタン(◁)が表示されるようになります。
その三角ボタンをクリックするとSalesforce inspectorのウィンドウが現れ、色々な項目が選択できますが、SOQLを使用する場合は「Data Export」をクリックします(またはキーボードの「E」を押しても同じです)。
画面が切り替わると「Export query」の下にテキストボックスが表示されます。
ここがSOQLのクエリを実際に記述する場所です。
SOQLの具体的な書き方
SOQLの具体的な書き方は以下のようになります。
1
2
3
4
|
select 項目名 from オブジェクト名
where 条件式
order by 項目名
limit 表示する件数
|
where以降は省略可能です。改行を入れると区切りが見やすくなりますが、改行が無くても動作上の問題はありません。また、上記の他に「group by」や「having」などを使った指定方法もあります。
selectで項目名を複数指定する場合は、項目名1, 項目名2のように、半角カンマで区切ります。
では具体例として、次のクエリを入力してみましょう。
1
|
select Name, Account.Name from Contact
|
Exportボタンを押すと実行結果が表示されます。
実行結果はこちらです。(下記表)
_ | Name | Account | Account.Name |
---|---|---|---|
Contact | Rose Gonzalez | Account | Edge Communications |
Contact | Sean Forbes | Account | Edge Communications |
Contact | Jack Rogers | Account | Burlington Textiles Corp of America |
Contact | Pat Stumuller | Account | Pyramid Construction Inc. |
Contact | Andy Young | Account | Dickenson plc |
Contact | Tim Barr | Account | Grand Hotels & Resorts Ltd |
Contact | John Bond | Account | Grand Hotels & Resorts Ltd |
上記の結果は、Contact(取引責任者)オブジェクトから全てのレコードを取得し、Name(氏名)とAcount.Name(取引先名)を表示しています。
(TrailheadのPlayground環境を使用しています。実際には20件のレコードが表示されていますが、ここではスペースの関係上、一部のレコードのみを抜粋しています。)
AccountとContactは親-子の関係であり、子から親を参照するときは「.」(ピリオド)を使うことで、親オブジェクトの項目を参照することができます。
Salesforce inspectorの便利な機能
Salesforce inspectorでは、実行結果をExcel format、CSV、JSONの3つの形式でコピーできます。
先ほどの例ではクエリを一文にまとめて入力しましたが、オブジェクト名や項目名を正確に覚えていない場合は、以下の手順でクエリを入力すると便利です。
まず初めに「from 」(fromのあとに半角スペース)と入力すると、選択できるオブジェクトの候補がテキストボックスの下に表示されます。
半角スペースに続けてオブジェクト名の一部を入力すると、さらに候補が絞られます。この機能はオブジェクト名を正確に覚えていない場合に便利です。
次に、「select 」(selectのあとに半角スペース)と入力すると、選択されているオブジェクト(先ほどの例ではContact)の中から、指定できるフィールドの候補がテキストボックスの下に表示されます。
SOQLではSQLと同様に大文字、小文字の区別はしませんが、Salesforce inspectorで「FROM」と大文字で入力すると候補が正しく表示されないため、「from」と小文字で入力するのがポイントです。
また、Query Historyからは、直近に使用したクエリを20個まで遡って呼び出すことができます。Saved queriesの右の+ボタンを押すと、現在表示しているクエリを保存していつでも好きな時に呼び出せるようになります。
ただし、ブラウザのクラッシュなどによって保存したクエリが全て消えてしまうこともあるので、確実に保存しておきたいクエリはどこか別の場所に保存するようにしましょう。
SOQLの応用例
Exportボタンの左下にある「Filter results」の欄に文字列を入力すると、結果の中からその文字列が含まれたレコードのみを表示することもできます。
ただしこの状態でCopy CSVなどのボタンをクリックしても、フィルターをかける前の全てのレコードがコピーされてしまいます。
表示結果をマウスでドラッグ選択してコピーすればフィルターをかけたあとのレコードのみをコピーすることは可能ですが、Filter resultsでは複数のフィルターを設定することはできません。
例えば、Account.Nameが「Edge Communications」のレコードと、「Grand Hotels & Resorts Ltd」のレコードのみを表示させる、ということはできません。
このような場合は、以下のようにwhere句を組み合わせることで、目的のレコードのみを簡単に抽出できます。
1
2
3
4
5
|
select Name, Account.Name from Contact
where Account.Name in
('Edge Communications', 'Grand Hotels & Resorts Ltd')
|
このクエリの実行結果は以下のようになります。
Account.Nameが「Edge Communications」のレコードと、「Grand Hotels & Resorts Ltd」のレコードのみを抽出することができました。
_ | Name | Account | Account.Name |
---|---|---|---|
Contact | Rose Gonzalez | Account | Edge Communications |
Contact | Sean Forbes | Account | Edge Communications |
Contact | Tim Barr | Account | Grand Hotels & Resorts Ltd |
Contact | John Bond | Account | Grand Hotels & Resorts Ltd |
SOQLを活用して業務に役立てよう
今回はSalesforce inspectorを用いてSOQLについて紹介しました。
SOQLの基本的な使い方を知るだけでも、膨大なデータの中から条件に一致した情報のみを容易に抽出できるようになります。データの分析や一括更新する際にも大変役立ちますので、是非活用できるようになりましょう。