세일즈포스(Salesforce)에서 데이터를 효율적으로 검색하고 활용하려면 **SOQL(Salesforce Object Query Language)**을 잘 활용하는 것이 필수입니다.
SOQL은 세일즈포스의 데이터베이스인 **오브젝트(Object)와 레코드(Record)**를 조회하는 강력한 쿼리 언어입니다.
오늘은 SOQL을 활용하여 데이터를 추출하는 방법, 필수적인 구문 및 실전 예제를 알아보겠습니다.
세일즈포스 개발자, 관리자, 데이터 분석가라면 꼭 숙지해야 할 SOQL 활용법을 정리해드릴게요! 🚀
🔍 SOQL이란? Salesforce 데이터 검색을 위한 전용 언어
SOQL(Salesforce Object Query Language)은 세일즈포스에서 데이터를 검색하기 위한 전용 언어입니다.
SOQL은 SQL과 비슷하지만, 세일즈포스의 데이터 모델에 맞게 설계되어 있어 표준 및 사용자 정의 오브젝트의 데이터를 검색할 수 있습니다.
📌 SOQL의 주요 특징
✅ 클라우드 기반 데이터 조회
✅ SELECT 문을 사용하여 특정 필드 검색 가능
✅ WHERE, ORDER BY, LIMIT 등 조건 필터링 제공
✅ 서브쿼리(Subquery) 및 관계형 데이터 조회 가능
✅ API, Apex 코드, Developer Console, Workbench 등 다양한 환경에서 실행 가능
💡 쉽게 말해, 세일즈포스에서 원하는 데이터를 SQL처럼 조회하는 방법입니다!
📌 SOQL 기본 구문 (Syntax)
SOQL은 SQL의 SELECT 구문과 유사하지만 테이블 대신 **세일즈포스 오브젝트(Object)**를 대상으로 데이터를 검색합니다.
SELECT 필드명1, 필드명2, ... FROM 오브젝트명 WHERE 조건 ORDER BY 필드명 LIMIT 숫자
🔹 예제 1: 모든 고객(Account) 데이터 조회
SELECT Id, Name, Industry FROM Account
✔ Account 오브젝트에서 Id, Name, Industry 필드를 조회
🔹 예제 2: 특정 조건을 만족하는 데이터 검색 (WHERE)
SELECT Id, Name FROM Account WHERE Industry = 'Technology'
✔ Industry가 ‘Technology’인 계정만 조회
🔹 예제 3: 정렬된 데이터 검색 (ORDER BY)
SELECT Id, Name, AnnualRevenue FROM Account ORDER BY AnnualRevenue DESC
✔ AnnualRevenue(연매출) 기준으로 내림차순 정렬
🔹 예제 4: 데이터 개수 제한 (LIMIT)
SELECT Id, Name FROM Contact WHERE LastName = 'Kim' LIMIT 10
✔ 성과가 ‘Kim’인 고객 중 10명만 조회
🛠 SOQL을 활용한 데이터 추출 & 필터링 고급 예제
1️⃣ 여러 개의 조건을 적용하여 데이터 검색 (AND & OR 활용)
SELECT Id, Name FROM Account WHERE Industry = 'Technology' AND AnnualRevenue > 1000000
✔ Industry가 ‘Technology’이고, 연매출이 100만 이상인 계정만 조회
SELECT Id, Name FROM Account WHERE Industry = 'Technology' OR Industry = 'Finance'
✔ Industry가 ‘Technology’ 또는 ‘Finance’인 계정 조회
2️⃣ 관계형 데이터 검색 (Parent-Child & Child-Parent Query)
세일즈포스의 데이터 구조는 **오브젝트 간 관계(Parent-Child, Child-Parent)**로 구성됩니다.
SOQL은 이러한 관계형 데이터를 효율적으로 검색할 수 있습니다.
📌 Parent → Child 데이터 검색 (서브쿼리 사용)
SELECT Id, Name, (SELECT LastName FROM Contacts) FROM Account
✔ Account 데이터와 해당 계정(Account)과 연결된 Contact 정보를 함께 검색
📌 Child → Parent 데이터 검색 (Relationship 사용)
SELECT Id, LastName, Account.Name FROM Contact
✔ Contact 정보와 해당 Contact가 속한 Account의 Name을 조회
🔥 실전 SOQL 활용 사례
실무에서 SOQL을 활용하는 몇 가지 사례를 살펴보겠습니다.
1️⃣ 최근 30일 동안 생성된 고객 조회
SELECT Id, Name, CreatedDate FROM Account WHERE CreatedDate = LAST_N_DAYS:30
✔ 최근 30일 동안 생성된 Account 조회
2️⃣ 이메일이 등록된 연락처(Contact) 검색
SELECT Id, FirstName, LastName, Email FROM Contact WHERE Email != NULL
✔ 이메일 정보가 있는 고객(Contact)만 조회
3️⃣ 특정 캠페인에 등록된 리드(Lead) 검색
SELECT Id, FirstName, LastName FROM Lead WHERE CampaignId = '7015g000000XXXXX'
✔ 특정 캠페인에 포함된 리드 데이터 조회
🛠 SOQL 실행 방법 (Developer Console & Workbench 활용)
SOQL은 다양한 환경에서 실행할 수 있습니다.
✅ 1. Developer Console 활용
- 세일즈포스 로그인 → 우측 상단 ‘⚙ 설정 아이콘’ 클릭
- ‘Developer Console’ 선택
- ‘Query Editor’에서 SOQL 입력 후 실행
✅ 2. Workbench 활용
- Salesforce Workbench 접속
- 로그인 후 Queries → SOQL Query 선택
- SOQL 입력 후 실행
💡 Developer Console과 Workbench를 활용하면 빠르게 데이터 조회 및 검증이 가능합니다!
⚡ SOQL 사용 시 주의할 점 & 성능 최적화 팁
SOQL은 강력한 도구이지만, 잘못 사용하면 성능 저하나 쿼리 제한에 걸릴 수 있습니다.
다음과 같은 최적화 전략을 적용해보세요!
✅ 1️⃣ SELECT * 대신 필요한 필드만 조회하기
🚫 잘못된 예제 (비효율적인 조회)
SELECT * FROM Account
✅ 올바른 예제 (필요한 필드만 조회)
SELECT Id, Name, Industry FROM Account
✅ 2️⃣ LIMIT & WHERE 조건 활용하여 쿼리 최적화
SELECT Id, Name FROM Account WHERE Industry = 'Technology' LIMIT 100
✔ 불필요한 데이터를 가져오지 않도록 WHERE 및 LIMIT 활용
✅ 3️⃣ 서브쿼리 사용 시 주의
🚫 한 번에 너무 많은 데이터 조회 X
SELECT Id, Name, (SELECT LastName FROM Contacts) FROM Account WHERE CreatedDate > LAST_N_DAYS:365
✔ 서브쿼리 데이터가 너무 많아질 경우 성능 저하 발생
📢 마무리 – SOQL, 이렇게 활용하세요!
세일즈포스에서 데이터를 효율적으로 검색하려면 SOQL을 정확히 이해하고 활용하는 것이 중요합니다.
💡 SOQL 핵심 정리
✔ SELECT 문법 사용하여 데이터 검색 가능
✔ WHERE, ORDER BY, LIMIT을 활용하여 데이터 필터링 최적화
✔ Parent-Child 관계형 데이터 조회 가능
✔ Developer Console & Workbench에서 쉽게 실행 가능
✔ 쿼리 성능을 높이기 위해 SELECT 필드 최적화 & LIMIT 사용
🚀 SOQL을 잘 활용하면 세일즈포스 데이터를 효과적으로 검색하고 활용할 수 있습니다!