ブログ

【Salesforce】徹底解説!積み上げ集計を使用する際の考慮事項と制限

この記事をSNSでシェア!

Salesforce の積み上げ集計を使ってみたい方、うまく扱えていない方へ、積み上げ集計を使用する際に、知っておくと開発で役立つ考慮事項を紹介します。

積み上げ集計は主従関係を使用しますが、主従関係の概念はご存知の前提で説明していきます。

また、オブジェクトとレコードは図1のように、「オブジェクト」がレコードを格納している1つの塊を指し、「レコード」がオブジェクトに格納されているいわゆる行を指します。

図1 オブジェクトとレコードの定義

積み上げ集計とは

積み上げ集計とは、Salesforceの標準機能です。

主レコードに紐づく従レコードの項目の合計などを表示させることができます。

例えば、人件費(基本給や交通費等)の明細を子オブジェクトで持ち、親オブジェクトで社員毎の総人件費を集計して社員一人当たりのかかった総人件費を確認することができます。

これだけでは初めて使う方はイメージが付きにくいと思いますので、実際に積み上げ集計を作成していきます。

親オブジェクトで積み上げ集計を使用するためには、子オブジェクト側で「主従関係」項目を設定する必要があります。

図2のように、項目のデータ型を決める際に、「主従関係」があるので、子オブジェクトに作成してみます。

図2 子オブジェクトの主従関係作成方法(データ型の選択)

図3のように、関連先には親となるオブジェクトを選択します。

図3 子オブジェクトの主従関係作成方法(関連先オブジェクトの選択)

図4のように、表示ラベルや項目名の必須情報を入力します。

「親の変更を許可」のチェックは、デフォルトで外れているはずですが、外れていると最初に主従関係を設定後に変更ができなくなるため、今後も変更する可能性がある方はチェックを付けておくことをお勧めします。

以降の設定内容は、デフォルト値とするため割愛します。

図4 子オブジェクトの主従関係作成方法(必須情報の入力)

図5のように、子オブジェクトに「主従関係」項目が作成できていれば、親オブジェクト側で積み上げ集計を使用する準備が完了です。

図5 子オブジェクトの主従関係作成方法(「主従関係」項目の確認)

次は、親オブジェクトで積み上げ集計を作成していきます。

図6のように、項目のデータ型を決める際に、「積み上げ集計」があるので、親レコードに作成してみます。

ちなみに、子オブジェクトで「主従関係」項目が設定されていない場合は、図7のように、グレーアウトされており、選択できない状態になっています。

図6 親オブジェクトの積み上げ集計作成方法(子オブジェクトで「主従関係」項目が設定されている場合)

図7 親オブジェクトの積み上げ集計作成方法(子オブジェクトで「主従関係」項目が設定されていない場合)

図8のように、表示ラベルや項目名の必須情報を入力します。

図8 親オブジェクトの積み上げ集計作成方法(必須情報の入力)

図9のように、集計対象オブジェクトには子となるオブジェクトを選択します。

今回、積み上げ種別の選択は「件数」を選択しています。

検索条件は、条件を指定して積み上げ集計することもできますが、まずは「すべてのレコードを計算に含める」を選択しています。

以降の設定内容は、デフォルト値とするため割愛します。

図9 親オブジェクトの積み上げ集計作成方法(積み上げ種別の選択)

図10のように、親オブジェクトに「積み上げ集計」項目が作成できていれば、完了です。

図10 親オブジェクトの積み上げ集計作成方法(「積み上げ集計」項目の確認)

次に、図11~13の手順で、親オブジェクトのレコードを作成します。

アプリケーションまでの遷移方法は、ご存知の前提とします。

図11 親オブジェクトのレコード作成方法(新規ボタン押下)

図12 親オブジェクトのレコード作成方法(レコード内容入力)

図13 親オブジェクトのレコード作成方法(レコード保存後)

親オブジェクトのレコード作成完了後に、図14~16の手順で、作成した親レコードを親とする子レコードを作成します。

図14 子オブジェクトのレコード作成方法(新規ボタン押下)

図15 子オブジェクトのレコード作成方法(レコード内容入力)

図16 子オブジェクトのレコード作成方法(レコード保存後)

積み上げ集計の作成はここまでの手順で完了ですが、実際にどのような結果が得られるのかを説明していきます。

図17に、5つの子レコードに「金額」と「主従関係」が存在する場合の親レコードが、それぞれどのような結果を返すかを記載しています。

親レコードAは、子レコードAと子レコードBの2レコードなので、件数は「2」、合計は「¥300」、最大は「¥200」、最小は「¥100」となります。

親レコードBは、子レコードCと子レコードD、子レコードEの3レコードを基に、各積み上げ集計を計算しています。

親レコードCに至っては、子レコードが存在しないため、積み上げ集計の結果は「0」を返します。

親レコードCのように、子レコードを持たない親レコードを作成できますが、逆の親レコードを持たない子レコードは作成することができません。

図17 積み上げ集計説明資料

考慮事項と制限

本章では、主に下記の3つの考慮事項と制限をご紹介します。

・積み上げ集計の最大数

・主従関係の子リレーションの数

・積み上げ集計の検索条件

積み上げ集計の最大数

Salesforceのオブジェクトには、様々な制限があります。

その中に積み上げ集計の項目数も含まれます。

確認する方法は、図18のように各オブジェクトの「オブジェクト制限」を選択することで確認できます。

ここで確認すると、「積み上げ集計項目」の使用制限が「25」になっています。

つまり、このオブジェクト内で作成できる積み上げ集計は、合計で25個までということです。

図18 積み上げ集計の最大数

もし、この制限数25個の上限に達してしまい、まだ作成したいということであれば「40」まで制限数を上げることも可能です。

やり方は、Salesforceのヘルプから問い合わせを作成して依頼するというものです。(以下、URL)

https://help.salesforce.com/s/

依頼する際には、対象の機能名(積み上げ集計項目の使用制限拡張)、組織IDが必要になります。

場合によっては、Salesforceから、制限数を上げる理由を問われる可能性があります。

ちなみに、組織IDは以下の図19で確認できます。

図19 組織ID確認

依頼についての注意として、本番環境とSandboxの依頼は、各環境毎にする必要があります。

これは、組織IDが各環境で異なり、その都度拡張が必要になるものです。

ですが、拡張後の本番環境の状態で作成したSandboxであれば、拡張した制限数が引き継がれます。

主従関係の子リレーションの数

親オブジェクトで積み上げ集計を使用するためには、子オブジェクト側で「主従関係」項目を設定する必要があると説明しました。

子オブジェクトで作成できる「主従関係」項目の数にも制限があり、2つまでしか作成できません。

つまり、1つのオブジェクトの持てる親の数は2つ、ということです。

この制限に達している場合、図20のように子オブジェクトで「主従関係」項目を作成しようとするとグレーアウトされます。

図20 制限に抵触している場合の子オブジェクトの「主従関係」項目

ちなみに、子オブジェクトが持てる親オブジェクトの数は2つまでと制限されていますが、親オブジェクトが持てる子オブジェクトの数は制限されていません。

また、主従関係を設定できる世代は、図21のように3世代(親~ひ孫)までしか設定できません。

図21 設定できる主従関係の世代

積み上げ集計の検索条件

図22のように、積み上げ集計を作成する際に、検索条件を指定して集計するレコードを絞ることができます。

図22 積み上げ集計の検索条件

各選択肢の内容は、以下になります。(項目列は図23、演算子列は図24)

項目列の選択肢には、子オブジェクトの項目が表示されますが、

ロングテキストエリア、複数選択リスト項目、[説明] 項目、[最終活動日] などのシステム項目、クロスオブジェクト数式項目、および参照項目は、表示されません。

図23 積み上げ集計の検索条件(項目列の選択肢)

図24 積み上げ集計の検索条件(演算子列の選択肢)

値列には、固定値しか入力できず、相対値を使用することができません。

よって、使用する方法は、図25のようなレコードが存在する前提として、図26のように子オブジェクトの「選択リスト」項目がある値(ここでは「有効」)であれば集計する、ということが挙げられます。

図25 積み上げ集計の検索条件説明資料

図26 積み上げ集計の検索条件(一例)

検索条件を使用する注意点として、項目列で数式項目を使用する場合、数式の結果が「#Error!」となる数式項目を使用しないでください。

理由は、検索条件に一致する結果が返されなくなるためです。

まとめ

・子レコードを持たない親レコードは作成できるが、逆の親レコードを持たない子レコードは作成することができません。。

・1つのオブジェクト内で、作成できる積み上げ集計は合計で「25」までですが、「40」まで制限数を上げることは可能です。

・1つの子オブジェクトが持てる親オブジェクトの数は2つまでと制限されているが、親オブジェクトが持てる子オブジェクトの数は制限されていません。

・主従関係を設定できる世代は、3世代(親~ひ孫)までしか設定できません。

・積み上げ集計の検索条件における項目列の選択肢には、子オブジェクトの項目が表示されるが、ロングテキストエリア、複数選択リスト項目、[説明] 項目、[最終活動日] などのシステム項目、クロスオブジェクト数式項目、および参照項目は、表示されません。

・積み上げ集計の検索条件における値列には、固定値しか入力できず、相対値を使用することができません。

・検索条件に一致する結果が返されなくなるため、積み上げ集計の検索条件における項目列で数式項目を使用する場合、数式の結果が「#Error!」となる数式項目を使用しないでください。

最後に

本投稿では、積み上げ集計を使用する際の考慮事項と制限について説明しました。

使用すれば便利な機能ではありますが、今回説明した考慮事項や制約などが存在し、期待する集計や動作を得られない可能性があります。

Salesforceには、リソースを制限するガバナ制限とは別に、機能毎に制限があるものも存在します。

考慮できずに開発を進めてしまうと設計からやり直しになり、想定していた工数を大幅に超えて納期に間に合わなくなることにも繋がりかねません。

使用を試みる時や設計をする時に、事前に本記事に目を通していただき、失敗を回避するお力になれれば幸いです。

今後もSalesforceの開発で、気になる制限や公式には出し切れていない疑問点等がありましたら投稿していきます。

参考

積み上げ集計項目(Salesforce公式)

https://help.salesforce.com/s/articleView?id=sf.fields_about_roll_up_summary_fields.htm&type=5

この記事をSNSでシェア!