IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > SalesforceのTYPEOFとは?概要や使い方をご紹介

SalesforceのTYPEOFとは?概要や使い方をご紹介

IT・技術関連 更新日:2024.09.05
エンジニア採用
SalesforceのTYPEOFとは?概要や使い方をご紹介

TYPEOFとは? SalesforceのTYPEOFとは、オブジェクト種別を確認するために使用する命令です。 TYPEOFは、SalesforceのSOQLクエリのSELECTステートメントにて使用することができ、多態的なリレーションが含まれているオブジェクト種別を確認することができます。 TYPEOFは、APIバージョンの46.0以降または、SOQLのPolymorphism機能の開発者プレビューで使用可能です。 TYPEOFには、多態的なランタイム型に一致する選択項目を指定します。複数の多態的な項目を確認する場合は、一つのSELECTステートメントに複数のTYPEOFを使用します。

サンプルコード

以下は、SalesforceのTYPEOFのサンプルコードです。 TYPEOFは、オブジェクト種別ごとに1つのWHEN句を必要な分だけ指定することができます。ELSE句は、多態的なリレーション項目のオブジェクト種別が、WHEN句で指定したオブジェクト種別と一致しない場合の処理です。ELSE句は省略することも可能です。
SELECT [fieldList,]
    [TYPEOF typeOfField
        {WHEN whenObjectType THEN whenFieldList}[...]
        [ELSE elseFieldList]
    END][...]
FROM objectType

TYPEOFの構文

サンプルコードに出てきたSalesforceのTYPEOF固有の構文は、次のものがあります。 1.fieldList 2.typeOfField 3.whenObjectType 4.whenFieldList 5.elseFieldList 6.objectType

fieldList

fieldListには、objectTypeから取得する項目を指定します。 取得する項目が複数ある場合はカンマ区切りのリストで指定します。fieldListは、SELECTステートメントで使用できる標準リストで、多態的なオブジェクト種別に関係なく使用可能です。 もし、多態的なリレーションのオブジェクト項目のみが必要な場合、SELECTステートメントからこのリストを除外することができます。

typeOfField

typeOfFieldには、複数のオブジェクト種別を参照できる多態的なリレーション項目を指定します。 または、objectTypeの親の多態的なリレーション項目を指定することも可能です。例えば、Whoリレーション項目は、ContactかLeadを使用することができます。

whenObjectType

whenObjectTypeには、指定したWHEN句のオブジェクト種別を指定します。 SELECTステートメント実行時、typeOfFieldに指定した多態的なリレーションのオブジェクト種別が、WHEN句のオブジェクト種別と一致するか判定されます。

whenFieldList

whenFieldListには、whenObjectTypeから取得するリストを指定します。 リストは1つ以上の項目をカンマで区切ります。このリストは参照されるオブジェクト種別または、関連オブジェクト項目へのパスです。SELECTステートメントのオブジェクト種別ではありません。

elseFieldList

elseFieldListには、指定した多態的なリレーション項目に一致しない場合のリストを指定します。 リストは1つ以上の項目をカンマで区切ります。このリストは、Nameオブジェクト種別で有効な項目か、Name関連オブジェクトへのパスが含まれる可能性があります。

objectType

objectTypeには、照会するオブジェクト種別を指定します。 照会する対象のオブジェクト種別は、SELECTステートメントでは必ず指定する標準のオブジェクト種別です。

TYPEOFの注意点

SalesforceのTYPEOFを使用する場合、次の注意点があります。 1.namePointing属性がfalseになっているリレーションでは使用することができません。 2.relationshipName属性がfalseになっているリレーションでは使用することができません。 3.クエリのSELECT句のみ使用することができます。 4.オブジェクトを返さないクエリで使用することはできません。例えば、COUNTなどの集計クエリです。 5.ストリーミングAPI PushTopicベースのSOQLクエリで使用することはできません。 6.Bulk APIのSOQLクエリで使用することはできません。 7.ネストができません。つまり、TYPEOFのWHEN句の中で別のTYPEOFは使用できません。 8.準結合クエリのSELECT句では使用することはできません。

準結合クエリのサンプルコード

準結合クエリのSELECT句のサンプルコードです。 この場合、TYPEOFは無効になります。
SELECT Name FROM Account
WHERE CreatedById IN
    (
    SELECT
        TYPEOF Owner
            WHEN User THEN Id
            WHEN Group THEN CreatedById
        END
    FROM CASE
    )
ただし、以下のサンプルコードのように外側のSELECT句でTYPEOFが使用されている場合は、TYPEOFは有効になります。
SELECT
    TYPEOF What
        WHEN Account THEN Phone
        ELSE Name
    END
FROM Event
WHERE CreatedById IN
    (
    SELECT CreatedById
    FROM Case
    )

関数を含むクエリのサンプルコード

SalesforceのTYPEOFは、SELECT句で関数を含むクエリでは使用することができません。 以下のサンプルコードは、TYPEOFの中にFORMAT関数が含まれているので、TYPEOFは無効になります。
SELECT
 TYPEOF What
  WHEN Account THEN Id, FORMAT(LastModifiedDate) LastModifiedDate__f
  WHEN Oppty THEN Id
 END
FROM Task
ただし、以下のように2つの処理に分ければ、TYPEOFを有効にできます。まず、FORMAT関数を使用せずにIDのリストを取得します。
SELECT
    TYPEOF What
        WHEN Account THEN Id, LastModifiedDate
        WHEN Opportunity THEN Id
    END
FROM Task
次に、IDリストに対してFORMAT関数を使用します。
SELECT
    FORMAT(LastModifiedDate) LastModifiedDate__f
FROM Account
WHERE Id in RetrievedIdList

TYPEOFの応用

多態的なリレーションのオブジェクト種別に応じて、処理を分けるサンプルコードです。 このSELECTステートメントでは、What項目で参照するオブジェクト種別によって処理を分岐しています。オブジェクト種別がAccountの場合は、Phone項目とNumberOfEmployees項目を返し、オブジェクト種別がOpportunityの場合は、Amount項目とCloseDate項目を返します。 ELSE句が無いので、オブジェクト種別がAccountでもOpportunityでもない場合、nullを返します。
SELECT
  TYPEOF What
    WHEN Account THEN Phone, NumberOfEmployees
    WHEN Opportunity THEN Amount, CloseDate
    ELSE Name, Email
  END
FROM Event

SalesforceのTYPEOFを活用しよう!

今回は、SalesforceのTYPEOFについて、概要と使い方を説明しました。 TYPEOFは、多態的なリレーションのオブジェクト種別を確認する場合に使用する命令です。オブジェクト種別ごとに処理を分けたり、指定したオブジェクト種別に当てはまらない場合の処理を追加したりすることが可能です。 ぜひこの機会に使用できるように理解しておきましょう。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニアAWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。

・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ