目次
概要
SalesforceのSpring ’21のリリースにて、SOQLにFIELDS() 関数が追加されました
使い方は以下の3パターンとなります
種別 | 詳細 |
FIELDS(ALL) | オブジェクトのすべての項目を選択 |
FIELDS(CUSTOM) | オブジェクトのすべてのカスタム項目を選択 |
FIELDS(STANDARD) | オブジェクトのすべての標準項目を選択 |
※項目レベルのセキュリティが考慮されるため、自分にアクセス権がある項目しか表示されないようです
実際に使ってみた
FIELDS(ALL)
FIELDS(CUSTOM)
FIELDS(STANDARD)
また、FIELDS関数と他の項目を混在させて使用することもできるようです(以下例となります)
SELECT Name, Id, FIELDS(CUSTOM) FROM Account LIMIT 200
SELECT someCustomField__c, FIELDS(STANDARD) FROM Account
FIELDS関数 は、次のプラットフォーム機能でサポートされるようです
- Apex
- SOQL 言語 (query または queryAll 操作を実行できる場所であればどこでも)
- Salesforce CLI
- Lightning Platform REST API の /query および /queryAll リソース
- Lightning Platform SOAP API の query() および queryAll() 操作
- Bulk API 2.0 のクエリジョブ
サポートされる機能でも、一部制限(以下)があるので注意が必要となります
機能 | 制限FIELDS(STANDARD) | 制限FIELDS(ALL) および FIELDS(CUSTOM) |
Apex (インラインおよび動的) | サポート | 未サポート |
Bulk API 2.0 | サポート | 未サポート |
CLI | サポート | 結果行が制限されている場合にのみサポートされます。「結果行の制限」を参照してください。 |
SOAP API および REST API | サポート | 結果行が制限されている場合にのみサポートされます。「結果行の制限」を参照してください。 |
まとめ
FIELDS関数の登場によって、データ確認時の際に項目のAPI参照名などを探す手間をなくすことができそうですね(項目数が多いオブジェクトでは、表示の面で問題がありますが。。)
Apex開発である機能として、レコードのすべての値を含めた完全コピーのような機能で使用できる!と期待していたのですが、ApexではFIELDS(ALL)が未サポートなので、ダメですね、残念、、今後のアップデートでサポートされることに期待!
参考情報
- SOQL および SOSL リファレンス 「FIELDS()」
- 新機能リリースで知っておくべき4つのアクション 〜Spring’21