FLATTEN 명령어

FLATTEN 명령어

flatten 명령어는 struct 또는 object 필드를 문서 내의 개별 필드로 변환해요.

출처: 문서

본문

flatten 명령어는 struct 또는 object 필드를 문서 내의 개별 필드로 변환해요.

결과로 생성된 평탄화된 필드는 원본 키 이름 기준 사전순(lexicographical order)으로 정렬돼요. 예를 들어 struct에 키 b, c, Z가 있다면 평탄화된 필드는 Z, b, c 순서로 정렬돼요.

flatten은 배열에 적용하면 안 돼요. 배열 필드를 여러 행으로 확장하려면 expand 명령어를 사용해요. OpenSearch에서는 배열이 배열이 아닌 필드에 저장될 수 있는데, 중첩 배열을 포함한 필드를 평탄화하면 배열의 첫 번째 요소만 평탄화돼요.

구문 (Syntax)

flatten 명령어의 구문은 다음과 같아요:

flatten <field> [as (<alias-list>)]

매개변수 (Parameters)

flatten 명령어는 다음 매개변수를 지원해요.

매개변수 필수/선택 설명
<field> 필수 평탄화할 필드예요. object와 nested 필드만 지원해요.
<alias-list> 선택 원본 키 이름 대신 사용할 이름 목록으로, 쉼표로 구분돼요. 별칭(alias)을 두 개 이상 지정하면 목록을 괄호로 묶어요. 별칭 수는 struct의 키 수와 일치해야 하고, 별칭은 해당하는 원본 키의 사전순을 따라야 해요.

예제: instrumentation scope object 평탄화하기

다음 쿼리는 instrumentationScope 중첩 객체를 개별 필드로 평탄화해요. 어떤 OTel SDK 버전이 사용 중인지 분석하는 데 유용해요:

source=otellogs
| where NOT ISNULL(instrumentationScope.name)
| flatten instrumentationScope
| fields severityText, name, version

쿼리는 다음과 같은 결과를 반환해요:

severityText name version
INFO @opentelemetry/instrumentation-http 0.57.0
INFO Microsoft.Extensions.Hosting 9.0.0
WARN go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc 0.49.0
ERROR @opentelemetry/instrumentation-http 0.57.0

제한 사항 (Limitations)

flatten 명령어는 다음과 같은 제한 사항이 있어요:

  • 평탄화할 필드가 보이지 않으면 flatten 명령어가 예상대로 동작하지 않을 수 있어요. 예를 들어 쿼리 source=my-index | fields message | flatten message에서 message.info, message.author 같은 일부 평탄화된 필드가 fields message 명령어로 인해 숨겨져서 flatten message 명령어가 예상대로 실행되지 않아요. 대안으로 source=my-index | flatten message를 사용해요.

더 알아보기 (Learn more)