반응형
foreach는 동일한 작업을 여러 필드나 값에 일괄 적용할 수 있는 SPL 명령입니다.
테스트 결과, 필드 내 합계 계산, JSON 배열 다루기 등 복잡한 반복 작업도 foreach 한 줄로 간편하게 정리할 수 있습니다.
📌 1. foreach는 왜 쓰는가?
- 여러 필드(field1, field2, field3...)에 동일한 eval 처리를 해야 할 때
- 멀티밸류 필드나 JSON 배열의 각 요소를 합산하거나 변형할 때
Splunk 공식 문서에 따르면 기본 모드는 multifield, 멀티밸류나 JSON에선 mode=multivalue/json_array 를 사용합니다.
🛠️ 2. foreach 문법 핵심
... | foreach [mode=<모드>] <필드 또는 필드패턴> [mode-options] [<subsearch>]
- mode (선택): multifield (기본), multivalue, json_array, auto_collections
- <FIELD>: 필드명 또는 *가 포함된 패턴
- <<FIELD>>, <<ITEM>>, <<ITER>>, <<MATCHSTR>> 등의 템플릿 사용
모드 | 반복 대상 | 사용 탬플릿 |
multifield | 다중 필드 (field*) | <<FIELD>>, <<MATCHSTR>> |
multivalue | 멀티값 필드 | <<ITEM>>, <<ITER>> |
json_array | JSON 배열 | <<ITEM>>, <<ITER>> |
auto_collections | 자동판단(멀티/JSON) | <<ITEM>>, <<ITER>> |
🔍3. foreach 문법 핵심
3‑1. 다중 필드 합계 계산
| makeresults
| eval test1=1, test2=2, test3=3, total=0
| foreach test* [eval total = total + <<FIELD>>]
→ test1, test2, test3 값을 total에 합산
3‑2. 총합을 GB 단위로 변환
|
index=_internal source=*license_usage.log type!="*Summary"
| timechart span=1d sum(b) AS daily_bytes by st
| foreach * [eval <<FIELD>> = '<<FIELD>>'/1024/1024/1024]
→ 모든 필드(예: csv, universal_data_json)를 GB 단위로 변환
3‑3. 멀티밸류 필드 합산
| makeresults
| eval mv=mvappend("1","2","3"), total=0
| foreach mode=multivalue mv [eval total = total + <<ITEM>>]
→ 멀티값을 모두 더해 total=6 생성
3‑4. JSON 배열 합산
| makeresults
| eval arr=json_array(1,2,3), total=0
| foreach mode=json_array arr [eval total = total + <<ITEM>>]
→ JSON 배열 값을 모두 더해 total=6
3‑5. JSON 객체 평균 계산
| makeresults
| eval studentToGrade=json_object("Adam",80,"Samantha",95,"Tina",76)
| eval keys=json_keys(studentToGrade), grades=json_array(), total=0, count=0
| foreach mode=json_array keys [eval grades=json_append(grades,"",json_extract(studentToGrade, <<ITEM>>))]
| foreach mode=json_array grades [eval total=total+<<ITEM>>, count=count+1]
| eval avgGrade = total/count
→ JSON 키를 기반으로 수집, 평균(approx 83.7) 계산
🧠 4. 실전 활용 팁
- 대형 이벤트 로그에서 특정 접두 필드 합계 & 레이블 분류
- API JSON 응답을 정규화하여 파싱 및 시각화
- multivalue 필드 합산, 평균 등 통계 처리을 간편하게 처리
❗ 5. 유의사항/주의점
- mode=multivalue/json_array 사용 시 하나의 eval만 허용됨
- 멀티밸류/JSON 반복 시 템플릿과 일치해야 함 (<<ITEM>>, <<ITER>>)
- 외부 필드명에 특수문자 있으면 '' 감싸줘야 예기치 않은 오류 방지
✅ 6. 마무리
모드 | 사용 상황 | 장점 |
multifield | 필드 이름이 유사할 때 | 공통 연산 자동 처리 |
multivalue | 멀티밸류 필드 내부 | 각 요소 반복 합산/평균 |
json_array | JSON 로그 데이터 | 배열 단위 처리 자동화 |
출처
https://help.splunk.com/en/splunk-enterprise/search/spl-search-reference/9.4/search-commands/foreach
반응형
'Splunk > Search Command' 카테고리의 다른 글
Splunk eval 함수 실전 가이드: 로그 분석 & 데이터 처리 필수 함수 모음 (0) | 2025.02.15 |
---|---|
Splunk eval 완벽 가이드: 기본 문법, 데이터 계산, 실전 활용 팁 총정리 (0) | 2025.02.15 |
Splunk eval case() 함수 완벽 가이드 - 활용법 및 실전 예제 (0) | 2025.02.08 |
Splunk mvexpand 완벽 가이드: 다중값 필드 분석의 모든 것 (예시와 실무 활용법) (4) | 2025.01.25 |
Splunk SPL에서의 JOIN 연산: LEFT, INNER, OUTER JOIN (0) | 2025.01.21 |