기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
구문 분석 명령
parse
명령은 정규식을 사용하여 텍스트 필드를 구문 분석하고 검색 결과에 결과를 추가합니다.
참고
이 PPL 명령을 지원하는 AWS 데이터 소스 통합을 확인하려면 섹션을 참조하세요명령.
구문
다음 구문을 사용합니다.
parse <field> <pattern>
field
-
필수.
-
필드는 텍스트 필드여야 합니다.
pattern
-
필수 문자열입니다.
-
지정된 텍스트 필드에서 새 필드를 추출하는 데 사용되는 정규식 패턴입니다.
-
새 필드 이름이 이미 있는 경우 원래 필드를 대체합니다.
정규식
정규식 패턴은 Java 정규식 엔진이 있는 각 문서의 전체 텍스트 필드를 일치시키는 데 사용됩니다. 표현식의 각 명명된 캡처 그룹은 새 STRING
필드가 됩니다.
예제 1: 새 필드 생성
이 예제에서는 각 문서에 host
대해 새 필드를 생성하는 방법을 보여줍니다. host
는 @
email
필드에서 뒤에 오는 호스트 이름이 됩니다. null 필드를 구문 분석하면 빈 문자열이 반환됩니다.
PPL 쿼리:
os> source=accounts | parse email '.+@(?<host>.+)' | fields email, host ; fetched rows / total rows = 4/4 +-----------------------+-------------+ | email | host | |-----------------------+-------------| | jane_doe@example.com | example.com | | john_doe@example.net | example.net | | null | | | juan_li@example.org | example.org | +-----------------------+-------------+
예제 2: 기존 필드 재정의
이 예제에서는 거리 번호가 제거된 기존 address
필드를 재정의하는 방법을 보여줍니다.
PPL 쿼리:
os> source=accounts | parse address '\d+ (?<address>.+)' | fields address ; fetched rows / total rows = 4/4 +------------------+ | address | |------------------| | Example Lane | | Example Street | | Example Avenue | | Example Court | +------------------+
예제 3: 캐스팅된 구문 분석 필드를 기준으로 필터링 및 정렬
이 예제는 address
필드에서 500보다 큰 거리 번호를 정렬하는 방법을 보여줍니다.
PPL 쿼리:
os> source=accounts | parse address '(?<streetNumber>\d+) (?<street>.+)' | where cast(streetNumber as int) > 500 | sort num(streetNumber) | fields streetNumber, street ; fetched rows / total rows = 3/3 +----------------+----------------+ | streetNumber | street | |----------------+----------------| | *** | Example Street | | *** | Example Avenue | | 880 | Example Lane | +----------------+----------------+
제한 사항
구문 분석 명령에는 몇 가지 제한이 있습니다.
-
구문 분석으로 정의된 필드는 다시 구문 분석할 수 없습니다.
다음 명령은 작동하지 않습니다.
source=accounts | parse address '\d+ (?<street>.+)' | parse street '\w+ (?<road>\w+)'
-
구문 분석으로 정의된 필드는 다른 명령으로 재정의할 수 없습니다.
where
는 다음과 같이 재정의할street
수 없으므로 문서와 일치하지 않습니다.source=accounts | parse address '\d+ (?<street>.+)' | eval street='1' | where street='1' ;
-
구문 분석에 사용되는 텍스트 필드는 재정의할 수 없습니다.
street
는 재정address
의되므로 성공적으로 구문 분석되지 않습니다.source=accounts | parse address '\d+ (?<street>.+)' | eval address='1' ;
-
구문 분석으로 정의된 필드는
stats
명령에서 사용한 후 필터링하거나 정렬할 수 없습니다.where
다음 명령에서는 작동하지 않습니다.source=accounts | parse email '.+@(?<host>.+)' | stats avg(age) by host | where host=pyrami.com ;