Extract RegEx()를 사용하면 다른 정보(예: 무료 문자 또는 JSON 문자열)를 포함할 수 있는 데이터에서 격리하려는 정보를 추출할 수 있습니다. 예:
텍스트에서 이메일 주소, 전화번호, 계좌 번호 및 기타 정보를 추출합니다.
텍스트에서 숫자 값을 추출합니다(예: 통화).
텍스트나 숫자형 데이터의 서식을 표준화합니다.
예 1 – 트랜잭션 코드를 구문 분석하기 위한 스크립트 로드
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
트랜잭션에 대한 정보가 포함된 Transactions라는 테이블입니다. 특정 세부 정보는 다음 구문을 사용하여 트랜잭션 코드로 캡처됩니다.
트랜잭션 연도-트랜잭션 소스(즉, 온라인 또는 매장 구매)-연관된 배포 센터
각 세부 정보를 추출하기 위해 여러 개의 새 필드를 만들고 각각 동일한 복합 정규 표현식을 재사용합니다.
요구 사항:
연도는 4개 숫자의 조합으로 이루어질 수 있습니다.
ONLINE 및 INSTORE 값은 트랜잭션 소스에 허용되는 유일한 값입니다.
배포 센터에는 정확히 5개의 숫자가 있어야 합니다.
로드 스크립트
Transactions:
Load
recno() as RecordID,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',0) as TransactionCode_Unparsed,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',1) as TransactionYear,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',2) as TransactionSource,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',3) as TransactionDC,
* Inline `
TransactionCode, Category
2025-ONLINE-60019, Product A
2024-INSTORE-60020, Product B
2025-ONLINE-60018, Product C
2024-ONLINE-60020, Product A
2025-INSTORE-60019, Product B
2025-ONLINE-60017, Product D
`;
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
결과 테이블
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
1
2025-ONLINE-60019
2025-ONLINE-60019
2025
ONLINE
60019
2
2024-INSTORE-60020
2024-INSTORE-60020
2024
INSTORE
60020
3
2025-ONLINE-60018
2025-ONLINE-60018
2025
ONLINE
60018
4
2024-ONLINE-60020
2024-ONLINE-60020
2024
ONLINE
60020
5
2025-INSTORE-60019
2025-INSTORE-60019
2025
INSTORE
60019
6
2025-ONLINE-60017
2025-ONLINE-60017
2025
ONLINE
60017
이러한 결과는 group 인수를 사용하면 단일 정규 표현식을 여러 작업에 재사용할 수 있음을 보여 줍니다. group 값 0을 사용하는 TransactionCode_Unparsed 필드는 이 경우 추가 값을 제공하지 않지만 여기서는 함수를 보여 주기 위해 표시됩니다.
예 2 – 비즈니스 연락처 정보를 추출하기 위한 스크립트 로드
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
각 회사 웹사이트에서 찾은 회사에 대한 정보가 포함된 BusinessContactInfo라는 테이블입니다.
ContactInfo는 회사 이메일 주소와 전화번호를 포함한 무료 문자를 포함하는 필드입니다.
각 세부 정보를 추출하기 위해 여러 개의 새 필드를 만들고 각각 동일한 복합 정규 표현식을 재사용합니다.
요구 사항:
이메일 주소는 특정 요구 사항과 구문을 충족해야 합니다.
전화번호는 10자리의 NANP 전화번호여야 합니다. 지역 번호를 괄호로 묶을 수 있게 하고, 특정 지점에 공백과 하이픈을 허용하려고 합니다.
로드 스크립트
BusinessContactInfo:
Load
ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',1,1) as CompanyEmail,
ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',2,2) as CompanyPhoneNum,
* Inline `
ID CompanyName ContactInfo
1 Company A Email is: Company1@example.com, Phone number is: (123) 456-7890
2 Company B Email is: company2@test.com, Phone # is: 0123456790
3 Company C Email is: company3@placeholder.com, Phone no. is: 234-567-8901
` (delimiter is '\t');
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
CompanyName
CompanyEmail
CompanyPhoneNum
결과 테이블
CompanyName
CompanyEmail
CompanyPhoneNum
Company A
Company1@example.com
(123) 456-7890
Company B
company2@test.com
0123456790
Company C
company3@placeholder.com
234-567-8901
동일한 합성 정규 표현식이 다른 정보를 검색하는 데 재사용됩니다. group 인수는 정규 표현식의 두 그룹 중 어느 것을 검색할지 지정하고, field_no 인수는 전체 문자열에서 찾으려는 전체 일치 항목을 지정합니다.
함수의 ExtractRegEGroupxI() 변형은 대/소문자를 구분하지 않는 검색을 보장합니다.
예 3 – ISBN 코드에서 구성 요소를 추출하는 스크립트 로드
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
모든 추출에 사용하려는 정규 표현식을 저장하기 위해 변수, ISBN_RegEx를 만듭니다.
서점이 여러 공급업체로부터 주문하고자 하는 책의 ISBN 코드 집합.
각 ISBN 코드에서 다음을 추출해야 합니다.
EAN
그룹
등록자
출판
체크섬
로드 스크립트
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';
ISBN:
LOAD Supplier,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',1) AS EAN,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',2) AS Group,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',3) AS Registrant,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',4) AS Publication,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',5) AS Checksum;
// Split the ISBN with the Group function in a preceding load to avoid generating a cartesian product
LOAD *,
ExtractRegEx(SupplierBooks, '$(ISBN_RegEx)') AS Books
INLINE [
Supplier, SupplierBooks
Supplier 1, ISBN 123-3-1234-1234-0 ISBN 012-2-0123-0123-4 ISBN 000-1-0123-0123-2 ISBN 234-5-2345-2345-1 ISBN 555-2-5555-5555-3 ISBN 222-4-2222-2222-2
Supplier 2, ISBN 000-0-3333-3333-3 ISBN 333-3-3333-3333-3 ISBN 555-1-5151-5151-3 ISBN 232-1-2323-2323-1 ISBN 008-0-7777-7777-3 ISBN 888-0-9999-0000-0
];
결과
데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.
Supplier
EAN
Group
Registrant
Publication
Checksum
결과 테이블
Supplier
EAN
Group
Registrant
Publication
Checksum
Supplier 1
000
1
0123
0123
2
Supplier 1
012
2
0123
0123
4
Supplier 1
123
3
1234
1234
0
Supplier 1
222
4
2222
2222
2
Supplier 1
234
5
2345
2345
1
Supplier 1
555
2
5555
5555
3
Supplier 2
000
0
3333
3333
3
Supplier 2
008
0
7777
7777
3
Supplier 2
232
1
2323
2323
1
Supplier 2
333
3
3333
3333
3
Supplier 2
555
1
5151
5151
3
Supplier 2
888
0
9999
0000
0
예 4 – 비즈니스 연락처 정보 추출을 위한 차트 표현식(ExtractRegEx() 비교 포함)
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
각 회사 웹사이트에서 찾은 회사에 대한 정보가 포함된 BusinessContactInfo라는 테이블입니다.
ContactInfo는 회사 이메일 주소와 전화번호를 포함한 무료 문자를 포함하는 필드입니다. 차트 표현식을 사용하여 각 이메일 주소와 전화번호를 추출하려고 합니다.
요구 사항:
이메일 주소는 특정 요구 사항과 구문을 충족해야 합니다.
전화번호는 10자리의 NANP 전화번호여야 합니다. 지역 번호를 괄호로 묶을 수 있게 하고, 특정 지점에 공백과 하이픈을 허용하려고 합니다.
로드 스크립트
BusinessContactInfo:
Load * Inline `
ID CompanyName ContactInfo
1 Company A Email is: Company1@example.com, Phone number is: (123) 456-7890
2 Company B Email is: company2@test.com, Phone # is: 0123456790
3 Company C Email is: company3@placeholder.com, Phone no. is: 234-567-8901
` (delimiter is '\t');
동일한 합성 정규 표현식이 다른 정보를 검색하는 데 재사용됩니다. group 인수는 정규 표현식의 두 그룹 중 어느 것을 검색할지 지정하고, field_no 인수는 전체 문자열에서 찾으려는 전체 일치 항목을 지정합니다.
함수의 ExtractRegEGroupI() 변형은 대/소문자를 구분하지 않는 검색을 보장합니다.
예 5 – URL 구문 분석(ExtractRegEx() 비교 포함)
개요
데이터 로드 편집기를 열고 아래의 로드 스크립트를 새 탭에 추가합니다.
로드 스크립트에는 다음이 포함됩니다.
Correspondence라는 이름의 테이블에는 EmailBody라는 이름의 필드에 이메일 메시지 텍스트가 포함되어 있습니다.
웹 URL이 포함된 이메일 메시지 콘텐츠.
두 번째 URL이 있으면 이를 다음 구성 요소로 추출하려고 합니다.
전체 URL
프로토콜
도메인
경로
단일 정규 표현식을 사용하여 모든 추출을 제어하려고 합니다.
로드 스크립트
Correspondence:
Load * Inline `
ID EmailBody
1 Thanks again for this morning's meeting! You can find the meeting minutes posted here: https://example.com/resourceexample. If you still have any questions, always feel free to ask me or one of the other team members. Here are a few learning resources that might help you: http://www.example.ca/training1.pptx http://www.example.ca/training2.pptx http://www.example.ca/training3.pptx Thanks again!
2 Hi, you'll want to visit our company website for that, it's available at https://www.example.se.
3 Hello all, I just wanted to let you know that our online stores are now up and running! I couldn't be more excited. We are already seeing quite a bit of traffic and volume sold, which is very promising! For Product A, go to https://www.examplestore1.com/products. For Product B, you'll want go to https://www.examplestore2.com/products. Product C, go check out https://www.examplestore3.com/products. Cheers!
` (delimiter is '\t');