SOQLのFIELDS関数を使ってみました

概要

SalesforceのSpring ’21のリリースにて、SOQLにFIELDS() 関数が追加されました

https://developer.salesforce.com/docs/atlas.ja-jp.230.0.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_fields.htm

使い方は以下の3パターンとなります

種別 詳細
FIELDS(ALL) オブジェクトのすべての項目を選択
FIELDS(CUSTOM) オブジェクトのすべてのカスタム項目を選択
FIELDS(STANDARD) オブジェクトのすべての標準項目を選択

※項目レベルのセキュリティが考慮されるため、自分にアクセス権がある項目しか表示されないようです

実際に使ってみた

FIELDS(ALL)

FIELDS(ALL)

FIELDS(CUSTOM)

FIELDS(CUSTOM)

FIELDS(STANDARD)

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)が未サポートなので、ダメですね、残念、、今後のアップデートでサポートされることに期待!

参考情報