pylambda
개요
해당 명령어는 Python의 lambda 함수를 실행 합니다.
타입
TEXT, INTEGER, BIGINT, REAL, DATE, TIMESTAMP
설명
검색 결과에 Python lambda 함수를 실행합니다. 입력은 전달 되어진 테이블의 각 열을 의미하며, 해당 열을 가공하여 출력으로 보낼 수 있습니다. WITH
절에는 출력의 스키마를 입력해야 합니다. 만약 해당 부분이 생략 된다면, 자동으로 출력의 스키마를 계산합니다. 해당 계산 과정이 정확하지 않을 수 있고, 데이터가 많은 경우에는 많은 시간을 소요 할 수 있기 때문에, 스키마를 명시적으로 입력 하는 것이 좋습니다.
Parameters
... | pylambda lambda_expr (WITH schema)? (IMPORT built-in-module(, built-in-module)*)?
... | pylambda lambda_expr (--use_input_schema)? (IMPORT built-in-module(, built-in-module)*)?
이름 |
설명 |
필수/옵션 |
---|---|---|
lambda_expr |
Python 의 lambda expression을 의미합니다. 단, |
필수 |
WITH schema |
|
옵션 |
–use_input_schema |
input 과 output 의 데이터프레임 컬럼수와 순서가 동일하면 input 의 컬럼명을 output 으로 출력하게 하는 옵션 |
옵션 |
IMPORT |
|
옵션 |
data_type
타입 |
---|
INT |
BIGINT |
BOOLEAN |
FLOAT |
DOUBLE |
STRING |
BINARY |
TIMESTAMP |
DECIMAL |
DECIMAL(precision, scale) |
DATE |
Examples
예제용 데이터 모양 입니다.
YEAR |
LEVEL |
HOST |
---|---|---|
2018id |
abc |
123 |
2019ac |
bcd |
456 |
2018ca |
gcs |
789 |
2019df |
infoo |
101 |
0번째 컬럼의 데이터중
2018
이라는 숫자 string 을****
으로 변환
..| pylambda row: row[0].replace('2018', '****')
_1 |
---|
****id |
2019ac |
****ca |
2019df |
..| pylambda row: row[0].replace('2018', '****') WITH output: STRING
output |
---|
****id |
2019ac |
****ca |
2019df |
입력 데이터에 1번째 컬럼의 데이터를 추가
..| pylambda row: row + [row[1]]
_1 |
_2 |
_3 |
_4 |
---|---|---|---|
2018id |
abc |
123 |
abc |
2019ac |
bcd |
456 |
bcd |
2018ca |
gcs |
789 |
gcs |
2019df |
infoo |
101 |
infoo |
..| pylambda row: row + [row[0]] WITH a: string, b: string, c: int, d: string
a |
b |
c |
d |
---|---|---|---|
2018id |
abc |
123 |
abc |
2019ac |
bcd |
456 |
bcd |
2018ca |
gcs |
789 |
gcs |
2019df |
infoo |
101 |
infoo |
입력 데이터의 1번째 컬럼이 “abc” 를 포함하는지 각 bool 값을 출력
..| pylambda row: "abc" in row[1]
_1 |
---|
true |
false |
false |
false |
..| pylambda row: "abc" in row[1] WITH output: boolean
output |
---|
true |
false |
false |
false |
입력 데이터의 LEVEL 필드를 선택하여 필드의 값에서 info
라는 값을 를 ****
으로 변환
* | fields YEAR, LEVEL | pylambda row: [r.replace('info', '****') for r in row]
_1 |
_2 |
---|---|
2018id |
abc |
2019ac |
bcd |
2018ca |
gcs |
2019df |
****o |
* | fields YEAR, LEVEL | pylambda row: [r.replace('info', '****') for r in row] WITH log_year: string log_level: string
log_year |
log_level |
---|---|
2018id |
abc |
2019ac |
bcd |
2018ca |
gcs |
2019df |
****o |
re
모듈을 임포트 하여 정규식 사용하는 예제
* | pylambda row: True if re.search('gcs', row[1]) else False import re
_1 |
---|
false |
false |
true |
false |
input 과 output 의 데이터프레임 컬럼수와 순서가 동일할 때 input 의 컬럼명을 output 으로 출력하게 하는 옵션
* | pylambda x: x --use_input_schema
YEAR |
LEVEL |
HOST |
---|---|---|
2018id |
abc |
123 |
2019ac |
bcd |
456 |
2018ca |
gcs |
789 |
2019df |
infoo |
101 |