REST ์์ฒญ์ผ๋ก ์์ธก ๊ฐ์ ธ์ค๊ธฐ
ํ์ต ๋ชฉํ
์ด ์ ๋์ ์๋ฃํ๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- REST ํด๋ผ์ด์ธํธ์์ Einstein ์์ธก ์๋น์ค์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ ์ฌํญ์ ์ค๋ช
ํ ์ ์์ต๋๋ค.
- REST API ์์ฒญ์ ๋ํ ์ธ์ฆ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฐ๊ฒฐ๋ ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค.
- REST ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ Einstein ์์ธก ์๋น์ค์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
๊ฐ์
์ด์ ๋ชจ๋ธ์ด Salesforce์ ๋ฐฐํฌ๋์์ผ๋ฏ๋ก Einstein ์์ธก ์๋น์ค์ ์ฆ๊ฒจ์ฐพ๋ REST ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ธก ๊ฐ์ ์ป์ ์ ์์ต๋๋ค.
์ฌ์ ์ค๋น ์ฌํญ
์ด์ ๊ธฐ๊ธฐ์์ ๊ฐ์ ํ CRM Analytics ์ง์ DE ์กฐ์ง์๋ ์ด ์ ๋์ ๋จ๊ณ๋ฅผ ์๋ฃํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.ย
๊ทธ๋ฌ๋ ์ด ๋ชจ๋์ ์๋ฃํ ํ REST ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ Einstein ์์ธก ์๋น์ค์ ์ํธ ์์ฉํ๋ ค๋ฉด ๋ค์ ์ ์ ์กฐ๊ฑด์ด ํ์ํฉ๋๋ค.
- CRM Analytics Plus ๋ผ์ด์ ์ค ๋๋ Einstein Predictions ๋ผ์ด์ผ์ค. ๋ ๋ผ์ด์ ์ค๋ ์ถ๊ฐ ๋น์ฉ ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
Einstein Discovery ์ถ์ฒ ๋ณด๊ธฐ ์์คํ
๊ถํ์ด ์๋ ์ฌ์ฉ์ ๊ณ์
- ์์ฒญ์ ์ ์ถํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์์์ REST ํด๋ผ์ด์ธํธ. ์ด ์ ๋์์๋ Postman ์ฑ(๋ฐ์คํฌํฑ ๋ฒ์ )์ ๋ํ ์ง์นจ ๋ฐ ์์ ์คํฌ๋ฆฐ์ท์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ Einstein ์์ธก ์๋น์ค ๋ฆฌ์์ค์ ์ํธ ์์ฉํ๊ธฐ ์ํ ์์
์ ๋๋ถ๋ถ์ REST ํด๋ผ์ด์ธํธ์์ ์ ์ฌํ๋ฏ๋ก ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ณ ๋น์ทํ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ๋ ์ข์ต๋๋ค. Postman ๋ฐ์คํฌํฑ ์ฑ์ ๋ค์ด๋ก๋ํ๋ ค๋ฉด www.postman.com์ผ๋ก ์ด๋ํ์ฌ Postman ์ฑ ๋ค์ด๋ก๋ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ฐธ๊ณ : ์ด ์ ๋์ ์ง์นจ์ Postman ๋ฐ์คํฌํฑ ๋ฒ์ ์ผ๋ก ํ ์คํธ๋์์ต๋๋ค. Salesforce์ ๋ํ ํน๋ณ ์ค์ ์ง์นจ์ด ํ์ํ Postman Web์ ์ด Trailhead ๋ชจ๋๊ณผ ํจ๊ป ์ฌ์ฉํ๋๋ก ์น์ธ๋์ง ์์์ต๋๋ค.
- REST ํด๋ผ์ด์ธํธ์ REST API ์์ฒญ์ ์น์ธํ๋ Salesforce์ ๊ด๋ฆฌํ ์ฑ์ ์ก์ธ์คํฉ๋๋ค. Salesforce์์ ์ฐ๊ฒฐ๋ ์ฑ์ ๋ง๋ค๋ ค๋ฉด ์ฌ์ฉ์ ๊ณ์ ์ Manage Connected App(์ฐ๊ฒฐ๋ ์ฑ ๊ด๋ฆฌ) ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
์ฐธ๊ณ : ์กฐ์ง์์ Salesforce ๊ด๋ฆฌ์๊ฐ ๊ด๋ฆฌ ์ฑ์ ๋ง๋ค ์๋ ์์ต๋๋ค.
1๋จ๊ณ: Salesforce์์ ์ฐ๊ฒฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ
REST ํด๋ผ์ด์ธํธ๊ฐ Salesforce org์ ์์ ํ๊ฒ ์ฐ๊ฒฐํ ์ ์๋๋ก ์ฐ๊ฒฐ๋ ์ฑ์ ๋ง๋๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฐ๊ฒฐ๋ ์ฑ ๊ธฐ๋ณธ์ฌํญ Trailhead ๋ชจ๋์ ์ฐธ์กฐํฉ๋๋ค. ย
- Setup(์ค์ )์์ Quick Find(๋น ๋ฅธ ์ฐพ๊ธฐ) ์์์
apps(์ฑ)๋ฅผ ์ ๋ ฅํ ๋ค์ App Manager(์ฑ ๊ด๋ฆฌ์)๋ฅผ ํด๋ฆญํฉ๋๋ค.
- Lightning Experience ์ฑ ๊ด๋ฆฌ์์์ New Connected App(์๋ก ์ฐ๊ฒฐ๋ ์ฑ)์ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ New Connected App(์๋ก์ด ์ฐ๊ฒฐ๋ ์ฑ) ํ์ด์ง์์ ๋ค์ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ์ง์ ํฉ๋๋ค.

์ค์
์ค๋ช
์ฐ๊ฒฐ๋ ์ฑ ์ด๋ฆ
์๊ธฐ ์ฝ๊ณ ๊ตฌ๋ณํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
API ์ด๋ฆ
Salesforce API ์ด๋ฆ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฉ์ผ
์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช ๊ณผ ์ฐ๊ฒฐ๋ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ง์ ํฉ๋๋ค.
- ๋ค์์ผ๋ก Enable OAuth Settings(OAuth ์ค์ ํ์ฑํ) ํ์ธ๋์ ์ ํํ๊ณ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.

์ค์ |
์ค๋ช |
|---|---|
์ฝ๋ฐฑ URL |
์ด ์์ ์์๋ |
์ ํ๋ OAuth ๋ฒ์ |
๋ค์ OAuth ๋ฒ์๋ฅผ ์ถ๊ฐํฉ๋๋ค:
|
- ์ค์ ์ ์ ์ฅํ ๋ค์ Continue(๊ณ์)๋ฅผ ํด๋ฆญํ์ฌ ์ฐ๊ฒฐ๋ ์ฑ์ ๋ง๋ญ๋๋ค.
-
Manage Consumer Details(์๋น์ ์ธ๋ถ ์ ๋ณด ๊ด๋ฆฌ)๋ฅผ ํด๋ฆญํฉ๋๋ค.

- ํ๋กฌํํธ๊ฐ ํ์๋๋ฉด ์ด๋ฉ์ผ๋ก ์ ์ก๋ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ Verify(ํ์ธ)๋ฅผ ํด๋ฆญํฉ๋๋ค.

์ฐ๊ฒฐ๋ ์ฑ์ ๋ง๋ค ๋ Salesforce๋ Consumer Key(์๋น์ ํค)์ Customer Secret(์๋น์ ์ํฌ๋ฆฟ)์ด๋ผ๋ ๋ ๊ฐ์ง ์๊ฒฉ ์ฆ๋ช ์ ๋ง๋ญ๋๋ค.

์ด ์๊ฒฉ ์ฆ๋ช ์ ๋์ค์ ์ด ์ฐ๊ฒฐ๋ ์ฑ์ ํตํด REST ํด๋ผ์ด์ธํธ์์ Salesforce๋ก ์ฐ๊ฒฐํ ๋ ํ์ํฉ๋๋ค.
- ์๋น์ ํค๋ ํด๋ผ์ด์ธํธ ID ์ญํ ์ ํฉ๋๋ค.
- ์๋น์ ์ํฌ๋ฆฟ์ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ด ์ ๋์์ ๋์ค์ ์๋น์ ํค ์ ์๋น์ ์ํฌ๋ฆฟ์ ๋ณต์ฌํ ์ ์๋๋ก ์ด ์ฐฝ์ ์ด์ด ๋ก๋๋ค.
2๋จ๊ณ: OAuth 2.0์ ๋ํ ์ฌ์ฉ์ ์ด๋ฆ-์ํธ ํ๋ก ํ์ฉ
์ด ๋ชจ๋์์๋ ์ธ์ฆ์ ์ฌ์ฉ์ ์ด๋ฆ-์ํธ ํ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Setup(์ค์ )์ Quick Find(๋น ๋ฅธ ์ฐพ๊ธฐ) ์์์
oauth๋ฅผ ์ ๋ ฅํ ๋ค์ Oauth and Open ID Connect Settings(Oauth ๋ฐ Open ID Connect ์ค์ )๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
Allow Oauth Username-Password Flows(OAuth ์ฌ์ฉ์ ์ด๋ฆ-์ํธ ํ๋ก ํ์ฉ)๊ฐ ์ผ์ ธ ์๋์ง ํ์ธํฉ๋๋ค.
3๋จ๊ณ: REST ํด๋ผ์ด์ธํธ์์ ์ธ์ฆ ์ค์
๋ฐฉ๊ธ ๋ง๋ Connected App ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ REST ํด๋ผ์ด์ธํธ์์ ์ธ์ฆ์ ์ค์ ํ๊ฒ ์ต๋๋ค. Einstein ์์ธก ์๋น์ค์ ์ก์ธ์คํ๋ ค๋ฉด ์ธ์ฆ์ด ํ์ํฉ๋๋ค.
์ฐธ๊ณ : ๋ค์ ์ง์นจ์ Postman ํด๋ผ์ด์ธํธ(๋ฐ์คํฌํฑ ์ฑ)๋ฅผ ์์๋ก ์ฌ์ฉํ์ง๋ง, ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ค๋ฅธ REST API ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ Postman์์ ์ ์ํฌ์คํ์ด์ค๋ฅผ ๋ง๋ญ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ค๋ช ์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ ์ปฌ๋ ์ (์ ํ ์ฌํญ์ด์ง๋ง ๊ถ์ฅํจ)์ ๋ง๋ญ๋๋ค. ์ปฌ๋ ์ ์ ๋ชจ๋ Einstein ์์ธก ์๋น์ค ์์ฒญ์ ํ๊ณณ์ ์ ์ฅํฉ๋๋ค.

- ๋ชฉ๋ก์์ ์ปฌ๋ ์
์ ์ ํํ๊ณ Add request(์์ฒญ ์ถ๊ฐ)๋ฅผ ํด๋ฆญํ ๋ค์ ์ด ์์ฒญ์ ์ด๋ฆ์ Authenticate(์ธ์ฆ)๋ก ๋ณ๊ฒฝํฉ๋๋ค.

- ๊ทธ๋ฐ ๋ค์ Authenticate ์์ฒญ์ ๋ํด ๋ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.

์ค์
์ค๋ช
์์ฒญ ์ ํ
POST๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์์ฒญ URL
https://login.salesforce.com/services/oauth2/token์ ์ง์ ํฉ๋๋ค. -
Body(๋ณธ๋ฌธ) ํญ์ ํด๋ฆญํ๊ณ Body Type(๋ณธ๋ฌธ ์ ํ)์ x-www-form-urlencoded๋ก ๋ณ๊ฒฝํ๊ณ ๋์ ํค์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํฉ๋๋ค.

ํค
๊ฐ
grant_typepassword๋ก ์ง์ ํฉ๋๋ค.client_id์ด์ ์ ๋ง๋ Connected App(์ฐ๊ฒฐ๋ ์ฑ)์์ Consumer Key(์๋น์ ํค)๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
client_secret์ด์ ์ ๋ง๋ Connected App(์ฐ๊ฒฐ๋ ์ฑ)์์ Consumer Secret(์๋น์ ์ํฌ๋ฆฟ)์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
usernameDE Trailhead ์กฐ์ง๊ณผ ์ฐ๊ฒฐ๋ ๊ณ์ ์ ์ฌ์ฉ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
passwordDE Trailhead ์กฐ์ง๊ณผ ์ฐ๊ฒฐ๋ ๊ณ์ ์ ์ํธ๋ฅผ ์ง์ ํฉ๋๋ค.
- ์์ฒญ์ ์ ์ฅํ ๋ค์ Send(์ ์ก)๋ฅผ ํด๋ฆญํฉ๋๋ค. ์ค์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ๋ค์ ์์ ์ ์ฌํ ์๋ต์ด ํ์๋์ด์ผ ํฉ๋๋ค(๋ณด์ ์ ๋ณด๋ ์๋์ ์ผ๋ก ๊ฐ๋ ค์ ธ ์์ต๋๋ค).

- ๋ง์ง๋ง์ผ๋ก ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํฉ๋๋ค.
-
access_token๋ฌธ์์ด์ ๋ณต์ฌํ์ฌ ๋์ค์ ์ฌ์ฉํ ์ ์๋๋ก ๋ค๋ฅธ ๊ณณ์ ๋ถ์ฌ๋ฃ์ต๋๋ค. Einstein ์์ธก ์๋น์ค์ ๋ํ API ์์ฒญ์ ์คํํ๋ ค๋ฉด ํด๋น ๋ฌธ์์ด์ด ํ์ํฉ๋๋ค.
-
instance_URL๋ฌธ์์ด์ ๋ณต์ฌํ์ฌ ๋์ค์ ์ฌ์ฉํ ์ ์๋๋ก ๋ค๋ฅธ ๊ณณ์ ๋ถ์ฌ๋ฃ์ต๋๋ค. ํ์ ์์ฒญ์ ํ์ํฉ๋๋ค.
์ด์ REST API ์์ฒญ์ Einstein ์์ธก ์๋น์ค์ ์์ฑํ๊ณ ์ ์ถํ ์ค๋น๊ฐ ๋์์ต๋๋ค!
4๋จ๊ณ: ์ฌ์ฉํ ์ ์๋ ์์ธก ์ ์ ๊ฐ์ ธ์ค๊ธฐ
์กฐ์ง์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ์์ธก ์ ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ๊ฒ์ผ๋ก ์์ํ๊ฒ ์ต๋๋ค.
- ์ GET ์์ฒญ์ ์์ฑํ๊ณ ์ด๋ฆ์ Get Prediction Definitions(์์ธก ์ ์ ๊ฐ์ ธ์ค๊ธฐ)๋ก ์ง์ ํฉ๋๋ค. ๋ค์ ์ค์ ์ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ค์ ํฉ๋๋ค.

์ค์
์ค๋ช
์์ฒญ ์ ํ
GET
์์ฒญ URL
instance_URL/services/data/v55.0/smartdatadiscovery/predictionDefinitions๋ฅผ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์instance_URL์ ์ธ์ฆ ์์ฒญ์์ ๋ฐํ๋ ๊ฒ์ ๋๋ค. -
Authorization(์ธ์ฆ) ํญ์ ํด๋ฆญํ๊ณ ๋ค์ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.

์ค์
์ค๋ช
์ธ์ฆ ์ ํ
OAuth2.0์ ์ ํํฉ๋๋ค.
์ก์ธ์ค ํ ํฐ ์ค์
์ด์ ๋จ๊ณ์์ ์ ์ฅํ ์ก์ธ์ค ํ ํฐ์ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
- ์์ฒญ์ ์ ์ฅํ ๋ค์ Send(์ ์ก)๋ฅผ ํด๋ฆญํฉ๋๋ค. ์์ฒญ ์ค์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ๋ค์ ์์ ์ ์ ์ฌํ ์๋ต์ ๋ณผ ์ ์์ต๋๋ค.
{
"nextPageUrl": null,
"predictionDefinitions": [
{
"countOfActiveModels": 1,
"countOfModels": 1,
"createdBy": {
"id": "your-account-id",
"name": "your-name",
"profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T"
},
"createdDate": "2022-06-09T21:23:54.000Z",
"id": "1ORB00000008RSROA2",
"label": "Sales_per_Customer",
"lastModifiedBy": {
"id": "your-account-id",
"name": "your-name",
"profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T"
},
"lastModifiedDate": "2022-06-09T21:23:54.000Z",
"modelsUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models",
"name": "Sales_per_Customer",
"outcome": {
"goal": "Maximize",
"label": "Sales per Customer",
"name": "Sales_per_Customer"
},
"predictionType": "Regression",
"status": "Enabled",
"url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2"
}
],
"totalSize": 1,
"url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions?pageSize=25"
}5๋จ๊ณ: ์์ธก ์ ์ ๋ฉํ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
3๋จ๊ณ์ ์๋ต์๋ ์ด์ ์ ๋์์ ๋ง๋ ์์ธก ์ ์์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ URL์ด ํฌํจ๋ฉ๋๋ค. ์๋ต์ ๋ค์ ์์์ ๋น์ทํ๊ฒ ํ์๋์ด์ผ ํฉ๋๋ค.
/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
์์ธก ID๋ ์ด์ ์ ๋ชจ๋ธ ๊ด๋ฆฌ์์์ ๋ณธ ์์ธก ID์ ์ผ์นํฉ๋๋ค.ย
- ์ GET ์์ฒญ์ ์ถ๊ฐํ๊ณ Get Prediction Definition(์์ธก ์ ์ ๊ฐ์ ธ์ค๊ธฐ)์ด๋ผ๋ ์ด๋ฆ์ ์ง์ ํ๊ณ URL์ ๋ค์ ์์ฒญ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํฉ๋๋ค.
instance_Url์ ๊ผญ ํฌํจํ์ธ์.instance_Url /services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
- ๋ํ ์ด์ ๊ณผ ๊ฐ์ด ์ธ์ฆ ์ค์ (์ธ์ฆ ์ ํ ๋ฐ ์ก์ธ์ค ํ ํฐ)์ ๊ตฌ์ฑํฉ๋๋ค. Send(์ ์ก)๋ฅผ ํด๋ฆญํ๊ณ ์๋ต์ ๊ฒํ ํฉ๋๋ค. ์๋ต์ ๋ค์ ์์์ ๋น์ทํ๊ฒ ํ์๋์ด์ผ ํฉ๋๋ค.
{ "countOfActiveModels": 1, "countOfModels": 1, "createdBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "createdDate": "2022-06-09T21:23:54.000Z", "id": "1ORB00000008RSROA2", "label": "Sales_per_Customer", "lastModifiedBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "lastModifiedDate": "2022-06-09T21:23:54.000Z", "modelsUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models", "name": "Sales_per_Customer", "outcome": { "goal": "Maximize", "label": "Sales per Customer", "name": "Sales_per_Customer" }, "predictionType": "Regression", "status": "Enabled", "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2" }
6๋จ๊ณ: ์์ธก๊ณผ ์ฐ๊ฒฐ๋ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ
4๋จ๊ณ์ ์๋ต์๋ ์ด์ ์ ๋์์ ๋ฐฐํฌํ ๋ชจ๋ธ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ URL์ด ํฌํจ๋ฉ๋๋ค. ์๋ต์ ๋ค์ ์์์ ๋น์ทํ๊ฒ ํ์๋์ด์ผ ํฉ๋๋ค.
/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
- ์๋ก์ด GET ์์ฒญ์ ์ถ๊ฐํ๊ณ Get Models(๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ)๋ก ์ด๋ฆ์ ์ง์ ํ๊ณ URL์ ๋ค์ ์์ฒญ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํฉ๋๋ค.
instance_Url์ ๊ผญ ํฌํจํ์ธ์.instance_Url /services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
- ๋ํ ์ด์ ๊ณผ ๊ฐ์ด ์ธ์ฆ ์ค์ (์ธ์ฆ ์ ํ ๋ฐ ์ก์ธ์ค ํ ํฐ)์ ๊ตฌ์ฑํฉ๋๋ค. Send(์ ์ก)๋ฅผ ํด๋ฆญํ๊ณ ์๋ต์ ๊ฒํ ํฉ๋๋ค. ์๋ต์ ๋ค์ ์์์ ๋น์ทํ๊ฒ ํ์๋์ด์ผ ํฉ๋๋ค.
{ "models": [ { "createdBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "createdDate": "2022-06-09T21:23:55.000Z", "fieldMappingList": [ { "modelField": { "label": "Quantity", "name": "Quantity", "type": "Number" } }, { "modelField": { "label": "Sub-Category", "name": "Sub_Category", "type": "Text" } }, { "modelField": { "label": "Category", "name": "Category", "type": "Text" } }, { "modelField": { "label": "Sales", "name": "Sales", "type": "Number" } }, { "modelField": { "label": "Profit per Order", "name": "Profit_per_Order", "type": "Number" } } ], "filters": [], "historyUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models/1ORB00000008RSROA2/histories", "id": "1Ot4W000000XezqSAC", "isRefreshEnabled": false, "label": "Sales_per_Customer", "lastModifiedBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "lastModifiedDate": "2020-08-31T21:23:55.000Z", "model": { "id": "1OT4W000000LejUWAS" }, "modelType": "Regression", "name": "Sales_per_Customer", "predictionDefinitionUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2", "prescribableFields": [ { "customDefinitions": [], "field": { "label": "Quantity", "name": "Quantity", "type": "Number" } } ], "sortOrder": 0, "status": "Enabled", "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models/1Ot4W000000XezqSAC" } ], "totalSize": 1, "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models" }
๋ชจ๋ธ์ ํ๋ ๋ชฉ๋ก์ ์ ๊ณตํ๋ fieldMappingList๋ฅผ ํ์ธํฉ๋๋ค. ๋ค์ ๋จ๊ณ์์ ํด๋น ํญ๋ชฉ์ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค.
7๋จ๊ณ: ์์ธก ๊ฐ์ ธ์ค๊ธฐ
Einstein ์์ธก ์๋น์ค์์ ์ํธ ์์ฉ์ ์ฐ์ตํ์ผ๋ฏ๋ก ๋ช ๊ฐ์ง ์์ธก์ ๊ฐ์ ธ์ค๊ฒ ์ต๋๋ค.
- ์ ์์ฒญ์ ์ถ๊ฐํ๊ณ ์ด๋ฆ์ Get Predictions(์์ธก ๊ฐ์ ธ์ค๊ธฐ)๋ก ์ง์ ํ๊ณ ๋์ ๋ค์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.

์ค์
์ค๋ช
์์ฒญ ์ ํ
POST๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์์ฒญ URL
์ธ์ฆ ์์ฒญ์์
instance_URL์ด ๋ฐํ๋๋instance_URL/services/data/v55.0/smartdatadiscovery/predict๋ฅผ ์ง์ ํฉ๋๋ค. - ์ด์ ๊ณผ ๊ฐ์ด ์ธ์ฆ ์ค์ (์ธ์ฆ ์ ํ ๋ฐ ์ก์ธ์ค ํ ํฐ)์ ๊ตฌ์ฑํฉ๋๋ค. Add Authorization Request To(๊ถํ ๋ถ์ฌ ์์ฒญ ์ถ๊ฐ)ํ๋ ค๋ฉด Request Headers(์์ฒญ ํค๋)๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- POST ํธ์ถ์ด๋ฏ๋ก ์์ฒญ ๋ณธ๋ฌธ์ ์ง์ ํด์ผ ํฉ๋๋ค. Body(๋ณธ๋ฌธ) ํญ์ ํด๋ฆญํ๊ณ ๋ค์ ์ต์
์ ์ ํํฉ๋๋ค.
์ค์
์ค๋ช
๋ณธ๋ฌธ ์ ํ
RAW๋ฅผ ์ ํํฉ๋๋ค.
๋ณธ๋ฌธ ์ ํ ์์ฒญ
JSON์ ์ ํํฉ๋๋ค.
- JSON ํ์์ผ๋ก ์์ฒญ ๋ณธ๋ฌธ์ ์ถ๊ฐํฉ๋๋ค.
{ ย "predictionDefinition": "
yourPredictionDefinitionId
",
"type": "RawData",
"columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"],
"rows": [
["2","Furniture","Chairs","300","10"]
]
}-
yourPredictionDefinitionId๋ฅผ ์ด์ ์ ์กฐํํ ์์ธก ID๋ก ๋์ฒดํฉ๋๋ค. ์ด ์์ฒญ ๋ณธ๋ฌธ์ ๋ํ ๋ช ๊ฐ์ง ํ์ธ ์ฌํญ์ ๋๋ค.์์
ํ์ธ ์ฌํญ
"type":"RawData"RawData์ ํ์ ์ฌ์ฉํ๋ฉด ์์ธก ์์ฒญ์์ ์์ ์ ๋ ฅ ๊ฐ์ ์ง์ ์ง์ ํ ์ ์์ต๋๋ค. ์์ธก์ด Salesforce ๊ฐ์ฒด์ ์ฐ๊ฒฐ๋ ๋ ์ฌ์ฉํ ์ ์๋ ๋ค๋ฅธ ๋ ๊ฐ์ง ์ ํ์ธRecords๋ฐRecordOverrides๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Salesforce ์์ธก์ Salesforce ๊ฐ์ฒด์ ๊ด๋ จ์ด ์์ต๋๋ค."columnNames"๋ชจ๋ธ์ ์ ๋ ฅ ๋ณ์๋ก ๋ํ๋ด๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ด๋ฆ ๋ชฉ๋ก์ ๋๋ค. ์ด๋ 5๋จ๊ณ์ ์๋ต์์ ๋ฐํ๋
fieldMappingList์"modelField":"Nameโ์์์ ํด๋นํฉ๋๋ค."rows"๋ชจ๋ธ์ ์ ์กํ ํ ์คํธ ๊ฐ์ ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก์ ๋๋ค. ๋ชจ๋ธ์ด ์์ธก์ ๋์ถํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ ๋ ฅ ๋ณ์์ ๋๋ค.
- ์์ฒญ์ ์ ์ฅํ๊ณ Send(์ ์ก)๋ฅผ ํด๋ฆญํ ํ ์๋ต์ ๊ฒํ ํฉ๋๋ค. ์๋ต์ ๋ค์ ์์์ ๋น์ทํ๊ฒ ํ์๋์ด์ผ ํฉ๋๋ค.
{
"predictionDefinition": "1ORB00000008RSR",
"predictions": [
{
"model": {
"id": "1OtB00000008S34KAE"
},
"prediction": {
"middleValues": [],
"total": 88.68177540182317
},
"prescriptions": [],
"status": "Success"
}
],
"settings": {
"maxMiddleValues": 0,
"maxPrescriptions": 0,
"prescriptionImpactPercentage": 0
}
}"prediction":"totalโ ๊ฐ์ ๋ชจ๋ธ์ด ์
๋ ฅ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐํ ๊ณ ๊ฐ๋น ์์ ๋งค์ถ์
๋๋ค.
- ๊ทธ๋ฐ ๋ค์, ๋ค์ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ ์์ฒญ ๋ณธ๋ฌธ์ ๋ถ์ฌ๋ฃ์ต๋๋ค(ํ์ฌ ์ฝ๋๋ฅผ ๋์ฒด). ์์ธก ID๋ฅผ ์ถ๊ฐํ ๋ค์ Send(์ ์ก)๋ฅผ ํด๋ฆญํฉ๋๋ค.
{ ย "predictionDefinition": "yourPredictionDefinitionId",
"type": "RawData",
"columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"],
"rows": [
["2","Furniture","Chairs","262","42"],
["5","Office Supplies","Art","7","25"]ย ย
]
}์๋ต์ ๋ค์ ์์ ๋น์ทํด์ผ ํฉ๋๋ค(์์ธก๊ฐ์ ๋ค๋ฅผ ์ ์์).
{
"predictionDefinition": "1ORB00000008RSR",
"predictions": [
{
"model": {
"id": "1OtB00000008S34KAE"
},
"prediction": {
"middleValues": [],
"total": 88.68177540182317
},
"prescriptions": [],
"status": "Success"
},
{
"model": {
"id": "1OtB00000008S34KAE"
},
"prediction": {
"middleValues": [],
"total": -155.263449836085
},
"prescriptions": [],
"status": "Success"
}
],
"settings": {
"maxMiddleValues": 0,
"maxPrescriptions": 0,
"prescriptionImpactPercentage": 0
}
}์๋ต์์์ ์์ธก์ ์์๋ ์์ฒญ ๋ณธ๋ฌธ์์์ ์ ๋ ฅ ๊ฐ์ ์์์ ์ผ์นํฉ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก, ์๋ต์ ์ฃผ์ ์์ธ๊ณผ ๊ฐ์ ์ฌํญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ํ์ ์ ๊ฑฐํ๊ณ ๋ค์์ ํ์ ์์ฒญ์ ์ถ๊ฐํ ๋ค์ Send(์ ์ก)๋ฅผ ํด๋ฆญํฉ๋๋ค.
{ ย "predictionDefinition": "yourPredictionDefinitionId",
"type": "RawData",
"columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"],
"rows": [
["2","Furniture","Chairs","262","42"]
],
"settings": {
"maxMiddleValues": 2,
"maxPrescriptions": 2}
}์ด ์์ฒญ์์ ๋ค์ ์์ ์ ์ํํฉ๋๋ค.
-
maxMiddleValues๋ ์์ ์ธ์๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค(์ด ์์์๋ ์ต๋ 2๊ฐ).
-
maxPrescriptions๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ์ฌํญ์ ๋ฐํํ ์ ์์ต๋๋ค(์ด ์์์๋ ์ต๋ 2๊ฐ).
์๋ต์ ๋ค์ ์์์ ๋น์ทํ๊ฒ ํ์๋์ด์ผ ํฉ๋๋ค.
{
"predictionDefinition": "1ORB00000008RSR",
"predictions": [
{
"model": {
"id": "1OtB00000008S34KAE"
},
"prediction": {
"baseLine": 438.5059113062626,
"middleValues": [
{
"columns": [
{
"columnLabel": "Sub-Category",
"columnName": "Sub_Category",
"columnValue": "Chairs"
},
{
"columnLabel": "Sales",
"columnName": "Sales",
"columnValue": "262"
}
],
"value": -730.8852909080902
},
{
"columns": [
{
"columnLabel": "Sales",
"columnName": "Sales",
"columnValue": "262"
}
],
"value": 244.82002630727217
}
],
"other": 136.2411286963786,
"smallTermCount": 3,
"total": 88.68177540182317
},
"prescriptions": [],
"status": "Success"
}
],
"settings": {
"maxMiddleValues": 2,
"maxPrescriptions": 2,
"prescriptionImpactPercentage": 0
}
}์ด ์๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.ย
-
total์ ์์ธก ๊ฐ์ ๋ํ๋ ๋๋ค.
-
middlevalues์น์ ์์๋ ์ด ์์ธก์ ๋ํด ๋ฐํ๋๋ ๋ ๊ฐ์ง ์์ ์์ธ์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ด ์์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ์ ๋ฒ์ฃผ๊ฐ ์์์ด๋ฉฐ ๋งค์ถ์ด 262์ผ ๋ ํจ๊ณผ๋ ์์ธก์น๊ฐ ๊ฑฐ์ 731(730.8852)๋งํผ ๊ฐ์ํ๋ ๊ฒ์
๋๋ค.
- ๋งค์ถ์ด 262์ธ ๊ฒฝ์ฐ ํจ๊ณผ๋ ์์ธก์น๊ฐ ์ฝ 245(244.8200) ์ฆ๊ฐํ ๊ฒ์
๋๋ค.
์๋ต์ ๋ค๋ฅธ ์์์ ๋ํ ์์ธํ ๋ด์ฉ์ Salesforce ๋์๋ง์์ Get Predictions(์์ธก ๊ฐ์ ธ์ค๊ธฐ)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฌ์ฉ๋ ๋ชจ๋ํฐ๋ง ๊ฒํ ํ๊ธฐ
Einstein Discovery๋ ์ฌ์ฉ๋ ํต๊ณ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์กฐ์ง์ ์ฌ์ฉ๋ ํต๊ณ๋ฅผ ๋ณด๋ ค๋ฉด Setup(์ค์ )์ Quick Find(๋น ๋ฅธ ์ฐพ๊ธฐ) ์์์ discovery(๊ฒ์)๋ฅผ ์
๋ ฅํ๊ณ Usage(์ฌ์ฉ๋)๋ฅผ ์ ํํฉ๋๋ค.

Einstein์ Number of prediction API calls run today(์ค๋ ์คํ๋๋ ์์ธก API ํธ์ถ ์)์์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ์์ธก ์์ฒญ๊ณผ ํจ๊ป REST API ์์ฒญ์ ์ถ์ ํฉ๋๋ค.
๋ฆฌ์์ค
- Salesforce ๋์๋ง: Einstein ์์ธก ์๋น์ค๋ก ์์ธก ๋ฐ ๊ฐ์ ์ฌํญ ๊ฐ์ ธ์ค๊ธฐ
- Salesforce ๋์๋ง: Einstein Discovery์ ๋ํ ์ฌ์ฉ๋ ํต๊ณ ๋ชจ๋ํฐ๋ง
- Github: Postman์ฉ Salesforce API