【Dynamics CRM】【Web API】Lookupフィールド先のデータ取得
前回の記事で【Prefer : odata.include-annotations="*"】を利用した、Lookup表示名の取得を紹介しましたが、
じゃあ、Lookup先のデータをJoinする場合はどうすんの、というところですけど。
expandパラメータを指定して取得します。
https://msdn.microsoft.com/en-us/library/gg334767.aspx#bkmk_lookupProperty
ただ、注意として、このexpandパラメータを使用する場合、対象レコードを1つに絞る必要があります。
【accounts({レコードGUID})】みたいな形で。
面倒ですね。素直にJoinさせろよというところですが。
【Request】
【Result】
{ "@odata.context": "https://***.api.crm7.dynamics.com/api/data/v8.0/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,firstname,lastname))/$entity", "@odata.etag": "W/\"712019\"", "name": "フォース コーヒー (サンプル)", "accountid": "2bb50cdf-71a5-e511-80de-c4346bc4ef3c", "primarycontactid": { "@odata.etag": "W/\"556653\"", "fullname": "早川 諭 (サンプル)", "firstname": "諭 (サンプル)", "lastname": "早川", "contactid": "91b50cdf-71a5-e511-80de-c4346bc4ef3c" } }
ですので、expandアプローチは紹介しておいて、個人的にはそこまでおすすめしません。
別途Viewを利用した方法とFetchXMLを利用した方法がありますので、そちらのほうが通常のSQL Joinらしくてスマートです。