convert 명령

convert 명령

convert 명령은 변환 함수를 사용해 필드 값을 숫자 값으로 변환해요. AS 절을 사용해 변환된 값으로 새 필드를 만들지 않는 한 원본 필드 값은 덮어써져요. convert 명령은 다음과 같은 속성이 있어요. 모든 변환 함수는 값을 숫자로 변환할 수 없으면 null을 반환하고, 모든 숫자 변환 함수는 집계를 지원하기 위해 배정밀도(double-precision) 값을 반환하며, 변환된 값은 십진 표기법(예: 1234.0 또는 1234.56)으로 표시돼요.

출처: 문서

본문

AS 절을 사용하면 변환된 필드를 만들면서 원본 필드를 유지할 수 있어요. 단일 명령 내에서 여러 변환을 적용할 수 있어요(예시 4 참조).

구문(Syntax)

convert 명령은 다음과 같은 구문을 가져요.

convert <convert-function>(<field>) [AS <field>] [, <convert-function>(<field>) [AS <field>]]...

매개변수(Parameters)

convert 명령은 다음 매개변수를 지원해요.

Parameter Required/Optional Description
<convert-function> Required 변환 함수 중 하나: auto(), num(), rmcomma(), rmunit(), memk(), 또는 none().
<field> Required 변환할 단일 필드 이름.
AS <field> Optional 변환 값을 사용해 새 필드를 만들고 원본 필드를 유지해요.

변환 함수(Conversion functions)

Function Description
auto(field) 지능형 변환을 사용해 필드를 자동으로 숫자로 변환해요. k, m, g 같은 메모리 단위 접두어, 쉼표, 과학적 표기법을 포함한 단위를 지원해요. 변환할 수 없는 값은 null을 반환해요.
num(field) 문자열의 선행 숫자 부분을 추출해요. 문자가 없는 문자열에서는 쉼표를 천 단위 구분자로 해석하고 제거해요. 문자를 포함하는 문자열에서는 첫 번째 문자나 쉼표가 나타나는 지점에서 추출을 멈춰요. 변환할 수 없는 값은 null을 반환해요.
rmcomma(field) 숫자 문자열에서 쉼표(천 단위 구분자)를 제거하고 결과를 숫자로 변환해요. 값에 문자가 있으면 null을 반환해요.
rmunit(field) 문자열의 선행 숫자 부분을 추출해요. 첫 번째 문자나 쉼표에서 멈춰요. 변환할 수 없는 값은 null을 반환해요.
memk(field) 메모리 단위 접미어를 포함하는 값을 킬로바이트로 변환해요. k, m, g 같은 선택적 단위 접미어(대소문자 구분 없음)를 포함하는 숫자를 받아들여요. 입력이 단위 접미어가 없는 숫자 문자열이면 값이 킬로바이트라고 가정해요. 잘못된 형식은 null을 반환해요.
none(field) 원본 필드 값을 유지하는 no-op 함수예요. 와일드카드 변환에서 특정 필드를 제외하는 데 사용돼요.

예시 1: 필드 자동 변환하기

다음 쿼리는 auto() 함수를 사용해 balance 필드를 숫자로 변환해요.

source=accounts
| convert auto(balance)
| fields account_number, balance
| head 3

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

account_number balance
1 39225.0
6 5686.0
13 32838.0

예시 2: 쉼표가 있는 필드 변환하기

다음 쿼리는 쉼표로 구분된 숫자를 포함하는 필드를 변환해요.

source=accounts
| eval price='1,234'
| convert num(price)
| fields price

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

price
1234.0

예시 3: 메모리 단위가 있는 필드 변환하기

다음 쿼리는 메모리 크기 문자열을 킬로바이트로 변환해요.

source=system_metrics
| eval memory='100m'
| convert memk(memory)
| fields memory

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

memory
102400.0

예시 4: 여러 필드 변환하기

다음 쿼리는 서로 다른 변환 함수로 여러 필드를 변환해요.

source=accounts
| convert auto(balance), num(age)
| fields account_number, balance, age
| head 3

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

account_number balance age
1 39225.0 32.0
6 5686.0 36.0
13 32838.0 28.0

예시 5: AS 절로 원본 값 유지하기

다음 쿼리는 원본 필드를 유지하면서 변환된 값을 포함하는 새 필드를 만들어요.

source=accounts
| convert auto(balance) AS balance_num
| fields account_number, balance, balance_num
| head 3

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

account_number balance balance_num
1 39225 39225.0
6 5686 5686.0
13 32838 32838.0

예시 6: 단위가 포함된 문자열에서 숫자 추출하기

다음 쿼리는 단위를 포함하는 문자열에서 숫자 값을 추출해요.

source=accounts
| head 1
| eval duration='2.000 sec'
| convert rmunit(duration)
| fields duration

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

duration
2.0

예시 7: 집계 함수 사용하기

다음 쿼리는 값을 변환하고 집계에 사용해요.

source=accounts
| convert auto(age)
| stats sum(age) by gender

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

sum(age) gender
28.0 F
101.0 M

예시 8: none()으로 필드 값 유지하기

none() 함수는 변경되지 않은 필드 값을 반환해요. 다중 필드 변환에서 필드를 명시적으로 유지할 때 유용해요.

source=accounts
| convert auto(balance), num(age), none(account_number)
| fields account_number, balance, age
| head 3

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

account_number balance age
1 39225.0 32.0
6 5686.0 36.0
13 32838.0 28.0

필드 이름 변경을 위해 none()을 AS 절과 함께 사용하기

none() 함수는 AS 절과 결합해 값을 수정하지 않고 필드 이름을 바꿀 수 있어요.

source=accounts
| convert none(account_number) AS account_id
| fields account_id, firstname, lastname
| head 3

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

account_id firstname lastname
1 Amber Duke
6 Hattie Bond
13 Nanette Bates

none() 함수는 와일드카드 지원과 함께 유용하며, 대량 변환에서 특정 필드를 제외할 수 있게 해줘요.

제한 사항(Limitations)

convert 명령은 plugins.calcite.enabled를 true로 설정해야 해요.

Apache Calcite가 비활성화되면 어떤 convert 함수를 사용해도 지원되지 않는 함수 오류가 발생해요.

더 알아보기 (Learn more)