【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らしくてスマートです。