함수 - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

함수

SQL 표현식의 SELECT 또는 WHERE 절에서 다음 내장 함수를 사용할 수 있습니다.

abs(Decimal)

숫자의 절대값을 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: abs(-5)= 5.

인수 유형 Result
Int Int, 인수의 절대값
Decimal Decimal, 인수의 절대값
Boolean Undefined.
String Decimal. 결과는 인수의 절대값입니다. 문자열을 변환할 수 없는 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

accountid()

이 규칙을 소유하는 계정의 ID를 String으로 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

accountid() = "123456789012"

acos(Decimal)

숫자의 역코사인을 라디안 단위로 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: acos(0) = 1.5707963267948966

인수 유형 Result
Int Decimal(배정밀도), 인수의 역코사인. 가상 결과는 Undefined로 반환됩니다.
Decimal Decimal(배정밀도), 인수의 역코사인. 가상 결과는 Undefined로 반환됩니다.
Boolean Undefined.
String Decimal, 인수의 역코사인. 문자열을 변환할 수 없는 경우 결과는 Undefined입니다. 가상 결과는 Undefined로 반환됩니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

asin(Decimal)

숫자의 역사인을 라디안 단위로 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: asin(0) = 0.0

인수 유형 Result
Int Decimal(배정밀도), 인수의 역사인. 가상 결과는 Undefined로 반환됩니다.
Decimal Decimal(배정밀도), 인수의 역사인. 가상 결과는 Undefined로 반환됩니다.
Boolean Undefined.
String Decimal(배정밀도), 인수의 역사인. 문자열을 변환할 수 없는 경우 결과는 Undefined입니다. 가상 결과는 Undefined로 반환됩니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

atan(Decimal)

숫자의 역탄젠트를 라디안 단위로 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: atan(0) = 0.0

인수 유형 Result
Int Decimal(배정밀도), 인수의 역탄젠트. 가상 결과는 Undefined로 반환됩니다.
Decimal Decimal(배정밀도), 인수의 역탄젠트. 가상 결과는 Undefined로 반환됩니다.
Boolean Undefined.
String Decimal, 인수의 역탄젠트. 문자열을 변환할 수 없는 경우 결과는 Undefined입니다. 가상 결과는 Undefined로 반환됩니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

atan2(Decimal, Decimal)

양의 x축과 두 인수로 정의된 점(x, y) 사이의 각도(라디안)를 반환합니다.  이 각도는 시계 반대 방향 각도(상반면, y > 0)의 경우 양수이고, 시계 방향 각도(하반면, y < 0). Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: atan2(1, 0) = 1.5707963267948966

인수 유형 인수 유형 Result
Int/Decimal Int/Decimal Decimal(배정밀도), x축과 지정된 점(x,y) 사이의 각도.
Int/Decimal/String Int/Decimal/String Decimal, 설명된 점의 역탄젠트. 문자열을 변환할 수 없는 경우 결과는 Undefined입니다.
기타 값 기타 값 Undefined.

aws_lambda(functionArn, inputJson)

inputJson을 Lambda 함수로 전달하도록 지정된 Lambda 함수를 호출한 다음 Lambda 함수에서 생성되는 JSON 데이터를 반환합니다.

인수
인수 설명
functionArn

호출할 Lambda 함수의 ARN입니다. Lambda 함수는 JSON 데이터를 반환해야 합니다.

inputJson

Lambda 함수로 전달되는 JSON 입력 값입니다. 중첩된 객체 쿼리와 리터럴을 전달하려면 SQL 버전 2016-03-23을 사용해야 합니다.

지정된 Lambda 함수를 호출할 AWS IoT lambda:InvokeFunction 권한을 부여해야 합니다. 다음은 AWS CLI를 사용하여 lambda:InvokeFunction 권한을 부여하는 방법을 보여주는 예제입니다.

aws lambda add-permission --function-name "function_name" --region "region" --principal iot.amazonaws.com --source-arn arn:aws:iot:us-east-1:account_id:rule/rule_name --source-account "account_id" --statement-id "unique_id" --action "lambda:InvokeFunction"

다음은 add-permission 명령의 인수입니다.

--function-name

Lambda 함수의 이름입니다. 함수의 리소스 정책을 업데이트하기 위한 새 권한을 추가합니다.

--region

AWS 리전 계정의.

--principal

권한을 부여받는 보안 주체입니다. 이는 Lambda 함수를 호출할 수 있는 AWS IoT 권한을 iot.amazonaws.com 허용하기 위한 것이어야 합니다.

--source-arn

규칙의 ARN입니다. get-topic-rule AWS CLI 명령을 사용하여 규칙의 ARN을 가져올 수 있습니다.

--source-account

규칙이 정의된 AWS 계정 위치.

--statement-id

고유한 문 식별자입니다.

--action

이 문에서 허용할 Lambda 작업입니다. AWS IoT 가 Lambda 함수를 호출하도록 허용하려면 lambda:InvokeFunction을 지정합니다.

중요

source-arn또는 를 제공하지 않고 AWS IoT 보안 주체에 대한 권한을 추가하는 경우source-account, Lambda 작업으로 규칙을 AWS 계정 생성하는 모든 주체가 Lambda 함수를 호출하는 규칙을 트리거할 수 있습니다. AWS IoT자세한 내용은 Lambda 권한 모델을 참조하세요.

다음과 같은 JSON 메시지 페이로드가 있을 경우:

{ "attribute1": 21, "attribute2": "value" }

다음과 같이 aws_lambda 함수를 사용하여 Lambda 함수를 호출할 수 있습니다.

SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", {"payload":attribute1}) as output FROM 'topic-filter'

전체 MQTT 메시지 페이로드를 전달하려면 다음 예와 같이 '*'를 사용하여 JSON 페이로드를 지정할 수 있습니다.

SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", *) as output FROM 'topic-filter'

payload.inner.element는 'topic/subtopic' 주제에 게시되는 메시지에서 데이터를 선택합니다.

some.value는 Lambda 함수에서 생성되는 출력에서 데이터를 선택합니다.

참고

규칙 엔진은 Lambda 함수의 실행 시간을 제한합니다. 규칙의 Lambda 함수 호출은 2,000ms 이내에 완료되어야 합니다.

bitand(Int, Int)

Int(변환) 인수의 비트 표현에 대해 비트 단위 AND를 수행합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: bitand(13, 5) = 5

인수 유형 인수 유형 Result
Int Int Int, 두 인수의 비트 단위 AND.
Int/Decimal Int/Decimal Int, 두 인수의 비트 단위 AND. 모든 비 Int 숫자는 가장 가까운 Int로 내림됩니다. 인수를 Int로 변환할 수 없는 경우 결과는 Undefined입니다.
Int/Decimal/String Int/Decimal/String Int, 두 인수의 비트 단위 AND. 모든 문자열은 10진수로 변환된 후 가장 가까운 Int로 내림됩니다. 변환이 실패할 경우 결과는 Undefined입니다.
기타 값 기타 값 Undefined.

bitor(Int, Int)

두 인수의 비트 표현에 대해 비트 단위 OR을 수행합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: bitor(8, 5) = 13

인수 유형 인수 유형 Result
Int Int Int, 두 인수의 비트 단위 OR.
Int/Decimal Int/Decimal Int, 두 인수의 비트 단위 OR. 모든 비 Int 숫자는 가장 가까운 Int로 내림됩니다. 변환이 실패할 경우 결과는 Undefined입니다.
Int/Decimal/String Int/Decimal/String Int, 두 인수의 비트 단위 OR. 모든 문자열은 10진수로 변환된 후 가장 가까운 Int로 내림됩니다. 변환이 실패할 경우 결과는 Undefined입니다.
기타 값 기타 값 Undefined.

bitxor(Int, Int)

Int(변환) 인수의 비트 표현에 대해 비트 단위 XOR을 수행합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: bitor(13, 5) = 8

인수 유형 인수 유형 Result
Int Int Int, 두 인수에 대한 비트 단위 XOR.
Int/Decimal Int/Decimal Int, 두 인수에 대한 비트 단위 XOR. 비 Int 숫자는 가장 가까운 Int로 내림됩니다.
Int/Decimal/String Int/Decimal/String Int, 두 인수에 대한 비트 단위 XOR. 문자열은 10진수로 변환되어 가장 가까운 Int로 내림됩니다. 변환이 실패할 경우 결과는 Undefined입니다.
기타 값 기타 값 Undefined.

bitnot(Int)

Int(변환) 인수의 비트 표현에 대해 비트 단위 NOT을 수행합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: bitnot(13) = 2

인수 유형 Result
Int Int, 인수의 비트 단위 NOT.
Decimal Int, 인수의 비트 단위 NOT. Decimal 값은 가장 가까운 Int로 내림됩니다.
String Int, 인수의 비트 단위 NOT. 문자열은 10진수로 변환된 후 가장 가까운 Int로 내림됩니다. 변환이 실패할 경우 결과는 Undefined입니다.
기타 값 기타 값

cast()

값을 한 데이터 형식에서 다른 형식으로 변환합니다. cast는 일반 변환과 거의 비슷하게 동작하지만 숫자와 부울 간 캐스팅이 추가됩니다. 한 유형을 다른 유형으로 캐스팅하는 방법을 결정할 AWS IoT 수 없는 경우 결과는 다음과 같습니다. Undefined SQL 버전 2015-10-08 이상에서 지원됩니다. 형식: cast(value as type).

예제

cast(true as Int) = 1

cast 호출 시 다음 키워드가 "as" 뒤에 나올 수 있습니다.

SQL 버전 2015-10-08 및 2016-03-23의 경우
키워드 Result
String 값을 String로 캐스팅합니다.
Nvarchar 값을 String로 캐스팅합니다.
텍스트 값을 String로 캐스팅합니다.
Ntext 값을 String로 캐스팅합니다.
varchar 값을 String로 캐스팅합니다.
Int 값을 Int로 캐스팅합니다.
Integer 값을 Int로 캐스팅합니다.
Double 값을 Decimal(배정밀도)로 캐스팅합니다.
SQL 버전 2016-03-23의 경우
키워드 Result
Decimal 값을 Decimal로 캐스팅합니다.
부울 값을 Boolean로 캐스팅합니다.
Boolean 값을 Boolean로 캐스팅합니다.

캐스팅 규칙:

소수로 캐스팅
인수 유형 Result
Int 소수점이 없는 Decimal
Decimal

소스 값

참고

SQL V2(2016-03-23)에서 10.0와(과) 같은 정수인 숫자 값은 예상되는 Decimal 값(10.0) 대신 Int 값(10)을 반환합니다. 정수 숫자 값을 Decimal 값으로 안정적으로 캐스팅하려면 규칙 쿼리 문에 SQL V1(2015-10-08)을 사용하세요.

Boolean true = 1.0, false = 0.0.
String 문자열을 Decimal로 구문 분석하려고 시도합니다. AWS IoT 는 다음 정규식 ^-?\d+(\.\d+)?((?i)E-?\d+)?$와 일치하는 문자열을 구문 분석하려고 시도합니다. "0", "-1.2", "5E-12"는 모두 자동으로 10진수로 변환되는 문자열의 예입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.
정수로 캐스팅
인수 유형 Result
Int 소스 값
Decimal 가장 가까운 Int로 내림한 소스 값
Boolean true = 1.0, false = 0.0.
String 문자열을 Decimal로 구문 분석하려고 시도합니다. AWS IoT 는 다음 정규식 ^-?\d+(\.\d+)?((?i)E-?\d+)?$와 일치하는 문자열을 구문 분석하려고 시도합니다. "0", "-1.2", "5E-12"는 모두 자동으로 10진수로 변환되는 문자열의 예입니다. AWS IoT 는 문자열을 Decimal로 변환한 후 가장 가까운 Int로 내림하려고 시도합니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.
Boolean로 캐스팅
인수 유형 Result
Int 0 = False, 0이 아닌 값 = True.
Decimal 0 = False, 0이 아닌 값 = True.
Boolean 소스 값
String "true" = True, "false" = False(대/소문자를 구분하지 않음). 다른 문자열 값 = Undefined.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.
문자열로 캐스팅
인수 유형 Result
Int 표준 표기법을 따른 Int의 문자열 표현.
Decimal 유효숫자 표기법을 따를 수 있는 Decimal의 문자열 표현.
Boolean "true" 또는 "false", 모두 소문자.
String "true"=True, "false"=False(대/소문자를 구분하지 않음). 다른 문자열 값 = Undefined.
배열 JSON으로 직렬화된 배열입니다. 결과 문자열은 대괄호 안의 쉼표로 구분된 목록입니다. String은 따옴표로 묶입니다. Decimal, IntBoolean은 따옴표로 묶이지 않습니다.
객체 JSON으로 직렬화된 객체입니다. JSON 문자열은 키-값 페어의 쉼표로 구분된 목록이며 중괄호로 묶입니다. String은 따옴표로 묶입니다. Decimal, Int, BooleanNull은 따옴표로 묶이지 않습니다.
Null Undefined.
정의되지 않음 Undefined.

ceil(Decimal)

지정된 Decimal을 가장 가까운 Int로 올림합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

ceil(1.2) = 2

ceil(-1.2) = -1

인수 유형 Result
Int Int, 인수 값
Decimal Int, 가장 가까운 Int로 올림된 Decimal
String Int. 문자열은 Decimal로 변환된 후 가장 가까운 Int로 올림됩니다. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
기타 값 Undefined.

chr(String)

지정된 Int 인수에 대응하는 ASCII 문자를 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

chr(65) = "A".

chr(49) = "1".

인수 유형 Result
Int 지정된 ASCII 값에 대응하는 문자입니다. 인수가 유효한 ASCII 값이 아닐 경우 결과는 Undefined입니다.
Decimal 지정된 ASCII 값에 대응하는 문자입니다. Decimal 인수는 가장 가까운 Int로 내림됩니다. 인수가 유효한 ASCII 값이 아닐 경우 결과는 Undefined입니다.
Boolean Undefined.
String StringDecimal로 변환할 수 있는 경우 가장 가까운 Int로 내림됩니다. 인수가 유효한 ASCII 값이 아닐 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
기타 값 Undefined.

clientid()

메시지를 전송하는 MQTT 클라이언트의 ID, 또는 메시지가 MQTT를 통해 전송되지 않은 경우 n/a를 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

clientid() = "123456789012"

concat()

배열 또는 문자열을 연결합니다. 이 함수는 인수의 수를 제한하지 않으며 String 또는 Array를 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

concat() = Undefined.

concat(1) = "1".

concat([1, 2, 3], 4) = [1, 2, 3, 4].

concat([1, 2, 3], "hello") = [1, 2, 3, "hello"]

concat("con", "cat") = "concat"

concat(1, "hello") = "1hello"

concat("he","is","man") = "heisman"

concat([1, 2, 3], "hello", [4, 5, 6]) = [1, 2, 3, "hello", 4, 5, 6]

인수의 수 Result
0 Undefined.
1 인수가 수정 없이 반환됩니다.
2+

인수가 Array일 경우 결과는 모든 인수를 포함하는 단일 배열입니다. 모든 인수가 배열이 아니고 하나 이상의 인수가 String일 경우 결과는 모든 인수에 대한 String 표현의 연결입니다. 인수는 이전에 나열된 표준 변환을 사용하여 문자열로 변환됩니다.

cos(Decimal)

숫자의 코사인을 라디안 단위로 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

cos(0) = 1.

인수 유형 Result
Int Decimal(배정밀도), 인수의 코사인. 가상 결과는 Undefined로 반환됩니다.
Decimal Decimal(배정밀도), 인수의 코사인. 가상 결과는 Undefined로 반환됩니다.
Boolean Undefined.
String Decimal(배정밀도), 인수의 코사인. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다. 가상 결과는 Undefined로 반환됩니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

cosh(Decimal)

숫자의 쌍곡코사인을 라디안 단위로 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: cosh(2.3) = 5.037220649268761.

인수 유형 Result
Int Decimal(배정밀도), 인수의 쌍곡코사인. 가상 결과는 Undefined로 반환됩니다.
Decimal Decimal(배정밀도), 인수의 쌍곡코사인. 가상 결과는 Undefined로 반환됩니다.
Boolean Undefined.
String Decimal(배정밀도), 인수의 쌍곡코사인. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다. 가상 결과는 Undefined로 반환됩니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

decode(value, decodingScheme)

decode 함수를 사용하여 인코딩된 값을 디코딩합니다. 디코딩된 문자열이 JSON 문서인 경우, 주소 지정 가능한 객체가 반환됩니다. 그렇지 않으면 디코딩된 문자열이 문자열로 반환됩니다. 문자열을 디코딩할 수 없는 경우 함수는 NULL을 반환합니다. 이 함수는 base64로 인코딩된 문자열과 프로토콜 버퍼(protobuf) 메시지 형식의 디코딩을 지원합니다.

SQL 버전 2016-03-23 이상에서 지원됩니다.

문자열 값, 또는 문자열을 반환하는 (AWS IoT SQL 레퍼런스에 정의된) 유효한 표현식입니다.

decodingScheme

값을 디코딩하는 데 사용되는 체계를 나타내는 리터럴 문자열입니다. 현재 'base64''proto'만 지원됩니다.

base64로 인코딩된 문자열 디코딩

이 예에서 메시지 페이로드는 인코딩된 값을 포함합니다.

{ encoded_temp: "eyAidGVtcGVyYXR1cmUiOiAzMyB9Cg==" }

이 SQL 문의 decode 함수는 메시지 페이로드의 값을 디코딩합니다.

SELECT decode(encoded_temp,"base64").temperature AS temp from 'topic/subtopic'

encoded_temp 값을 디코딩하면 SELECT 문에서 온도 값을 읽을 수 있는 다음과 같은 유효한 JSON 문서가 생성됩니다.

{ "temperature": 33 }

이 예제에서 SELECT 문의 결과는 다음과 같습니다.

{ "temp": 33 }

디코딩된 값이 유효한 JSON 문서가 아닌 경우 디코딩된 값은 문자열로 반환됩니다.

protobuf 메시지 페이로드 디코딩

decode SQL 함수를 사용하여 protobuf 메시지 페이로드를 디코딩할 수 있는 규칙을 구성할 수 있습니다. 자세한 내용은 protobuf 메시지 페이로드 디코딩을 참조하세요.

함수 서명은 다음과 같습니다.

decode(<ENCODED DATA>, 'proto', '<S3 BUCKET NAME>', '<S3 OBJECT KEY>', '<PROTO NAME>', '<MESSAGE TYPE>')
ENCODED DATA

디코딩할 protobuf 인코딩 데이터를 지정합니다. 규칙으로 전송된 전체 메시지가 protobuf로 인코딩된 데이터인 경우 *를 사용하여 원시 바이너리 수신 페이로드를 참조할 수 있습니다. 그렇지 않은 경우 이 필드는 base-64로 인코딩된 JSON 문자열이어야 하며 문자열에 대한 참조를 직접 전달할 수 있습니다.

1) 원시 바이너리 protobuf 수신 페이로드를 디코딩하는 방법

decode(*, 'proto', ...)

2) base64로 인코딩된 문자열 'a.b'로 표시되는 protobuf로 인코딩된 메시지를 디코딩하는 방법

decode(a.b, 'proto', ...)
proto

디코딩할 데이터를 protobuf 메시지 형식으로 지정합니다. proto 대신 base64를 지정하면 이 함수는 base64로 인코딩된 문자열을 JSON으로 디코딩합니다.

S3 BUCKET NAME

FileDescriptorSet 파일을 업로드한 Amazon S3 버킷의 이름입니다.

S3 OBJECT KEY

Amazon S3 버킷 내의 FileDescriptorSet 파일을 지정하는 객체 키입니다.

PROTO NAME

FileDescriptorSet 파일을 생성하는 데 사용된 .proto 파일의 이름(확장명 제외)입니다.

MESSAGE TYPE

디코딩할 데이터가 준수해야 하는 FileDescriptorSet 파일 내 protobuf 메시지 구조의 이름입니다.

decode SQL 함수를 사용한 SQL 표현식의 예는 다음과 같습니다.

SELECT VALUE decode(*, 'proto', 's3-bucket', 'messageformat.desc', 'myproto', 'messagetype') FROM 'some/topic'
  • *

    mymessagetype이라는 protobuf 메시지 유형을 준수하는 이진 수신 페이로드를 나타냅니다.

  • messageformat.desc

    s3-bucket이라는 Amazon S3 버킷에 저장된 FileDescriptorSet 파일입니다.

  • myproto

    myproto.proto라는 FileDescriptorSet 파일을 생성하는 데 사용된 원본 .proto 파일입니다.

  • messagetype

    myproto.proto에 정의된 messagetype이라는 메시지 유형(가져온 종속 항목 포함)입니다.

encode(value, encodingScheme)

encode 함수를 사용하여 페이로드(비 JSON 데이터일 수 있음)를 인코딩 체계를 기반으로 한 문자열 표현으로 인코딩합니다. SQL 버전 2016-03-23 이상에서 지원됩니다.

AWS IoT SQL 레퍼런스에서 정의된 임의의 유효한 표현식. *를 지정하여 JSON 형식 여부와 상관없이 전체 페이로드를 인코딩할 수 있습니다. 사용자가 표현식을 제공할 경우 식 결과가 문자열로 변환된 후 인코딩됩니다.

encodingScheme

사용할 인코딩 체계를 나타내는 리터럴 문자열. 현재 'base64'만 지원됩니다.

endswith(String, String)

첫 번째 String 인수가 두 번째 String 인수로 끝나는지 여부를 나타내는 Boolean을 반환합니다. 인수가 Null 또는 Undefined일 경우 결과는 Undefined입니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: endswith("cat","at") = true.

인수 형식 1 인수 형식 2 Result
String String 첫 번째 인수가 두 번째 인수로 끝날 경우 true입니다. 그렇지 않으면 false입니다.
기타 값 기타 값 두 인수는 모두 표준 변환 규칙을 사용하여 문자열로 변환됩니다. 첫 번째 인수가 두 번째 인수로 끝날 경우 true입니다. 그렇지 않으면 false입니다. 인수가 Null 또는 Undefined일 경우 결과는 Undefined입니다.

exp(Decimal)

Decimal 인수로 거듭제곱된 e를 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: exp(1) = e.

인수 유형 Result
Int Decimal(배정밀도), e ^ 인수.
Decimal Decimal(배정밀도), e ^ 인수.
String Decimal(배정밀도), e ^ 인수. StringDecimal로 변환할 수 없는 경우 결과는 Undefined입니다.
기타 값 Undefined.

floor(십진수)

지정된 Decimal을 가장 가까운 Int로 내림합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

floor(1.2) = 1

floor(-1.2) = -2

인수 유형 Result
Int Int, 인수 값
Decimal 가장 가까운 Int로 내림된 Decimal 값은 Int입니다.
String Int. 문자열은 Decimal로 변환된 후 가장 가까운 Int로 내림됩니다. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
기타 값 Undefined.

get

모음과 같은 형식(배열, 문자열, 객체)에서 값을 추출합니다. 첫 번째 인수에는 변환이 적용되지 않습니다. 변환은 두 번째 인수에 표에 설명된 대로 적용됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

get(["a", "b", "c"], 1) = "b"

get({"a":"b"}, "a") = "b"

get("abc", 0) = "a"

인수 형식 1 인수 형식 2 Result
배열 임의의 형식(Int로 변환됨) 두 번째 인수(Int로 변환됨)가 제공하는 0부터 시작하는 Array 인덱스의 항목. 변환이 실패할 경우 결과는 Undefined입니다. 인덱스가 Array의 범위를 벗어날 경우(음수 또는 >= array.length) 결과는 Undefined입니다.
String 임의의 형식(Int로 변환됨) 두 번째 인수(Int로 변환됨)가 제공하는 0부터 시작하는 문자열 인덱스의 문자. 변환이 실패할 경우 결과는 Undefined입니다. 인덱스가 문자열의 범위를 벗어날 경우(음수 또는 >= string.length) 결과는 Undefined입니다.
객체 String(변환이 적용되지 않음) 두 번째 인수가 제공하는 문자열 키 에 대응되는 첫 번째 인수 객체에 저장된 값.
기타 값 임의의 값 Undefined.

get_dynamodb (테이블 이름 partitionKeyName,,,, roLearn) partitionKeyValue sortKeyName sortKeyValue

DynamoDB 테이블에서 데이터를 검색합니다. get_dynamodb()를 사용하면 규칙이 평가되는 동안 DynamoDB 테이블을 쿼리할 수 있습니다. DynamoDB에서 검색된 데이터를 사용하여 메시지 페이로드를 필터링하거나 증가시킬 수 있습니다. SQL 버전 2016-03-23 이상에서 지원됩니다.

get_dynamodb()는 다음 파라미터를 사용합니다.

tableName

쿼리할 DynamoDB 테이블의 이름입니다.

partitionKeyName

파티션 키의 이름입니다. 자세한 내용은 DynamoDB 키를 참조하세요.

partitionKeyValue

레코드를 식별하는 데 사용되는 파티션 키의 값입니다. 자세한 내용은 DynamoDB 키를 참조하세요.

sortKeyName

(선택 사항) 정렬 키의 이름입니다. 이 파라미터는 쿼리된 DynamoDB 테이블에서 복합 키를 사용하는 경우에만 필요합니다. 자세한 내용은 DynamoDB 키를 참조하세요.

sortKeyValue

(선택 사항) 정렬 키의 값입니다. 이 파라미터는 쿼리된 DynamoDB 테이블에서 복합 키를 사용하는 경우에만 필요합니다. 자세한 내용은 DynamoDB 키를 참조하세요.

roleArn

DynamoDB 테이블에 대한 액세스 권한을 부여하는 IAM 역할의 ARN입니다. 규칙 엔진은 사용자를 대신하여 DynamoDB 테이블에 액세스하기 위해 이 역할을 수임합니다. 지나치게 허용적인 역할을 사용하지 마세요. 규칙에 필요한 권한만 역할에 부여합니다. 다음은 하나의 DynamoDB 테이블에 대한 액세스 권한을 부여하는 정책 예제입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "arn:aws:dynamodb:aws-region:account-id:table/table-name" } ] }}

get_dynamodb()를 사용하는 방법의 예로, AWS IoT에 연결된 모든 장치에 대한 디바이스 ID와 위치 정보가 포함된 DynamoDB 테이블이 있다고 가정해 보겠습니다. 다음 SELECT 문은 get_dynamodb() 함수를 사용하여 지정된 디바이스 ID의 위치를 검색합니다.

SELECT *, get_dynamodb("InServiceDevices", "deviceId", id, "arn:aws:iam::12345678910:role/getdynamo").location AS location FROM 'some/topic'

참고
  • SQL 문 1개당 최대 한 번 get_dynamodb()를 호출할 수 있습니다. 단일 SQL 문에서 여러 번 get_dynamodb()를 호출하면 작업을 호출하지 않고 규칙이 종료됩니다.

  • get_dynamodb()가 8KB보다 많은 데이터를 반환하면 규칙의 작업이 호출되지 않을 수 있습니다.

get_mqtt_property(name)

MQTT5 헤더 contentType, payLoadFormatIndicator, responseTopic, correlationData 중 하나를 참조합니다. 이 함수는 리터럴 문자열 content_type, format_indicator, response_topic, correlation_data 중 하나를 인수로 사용합니다. 자세한 내용은 다음 함수 인수 테이블을 참조하세요.

contentType

문자열: 게시 메시지의 내용을 설명하는 UTF-8으로 인코딩된 문자열입니다.

payLoadFormat인디케이터

문자열: 페이로드가 UTF-8 형식으로 지정되었는지 여부를 나타내는 Enum 문자열 값입니다. 유효 값은 UNSPECIFIED_BYTESUTF8_DATA입니다.

responseTopic

문자열: 응답 메시지의 주제 이름으로 사용되는 UTF-8 인코딩 문자열입니다. 응답 주제는 수신자가 요청-응답 흐름의 일부로 게시해야 하는 주제를 설명하는 데 사용됩니다. 주제에는 와일드카드 문자가 포함되어서는 안 됩니다.

correlationData

문자열: 요청 메시지 발신자가 응답 메시지를 수신할 때 어떤 요청에 대한 응답 메시지인지 식별하는 데 사용되는 base64 인코딩 이진 데이터입니다.

다음 표에는 get_mqtt_property 함수에 사용할 수 있는 함수 인수와 관련 반환 유형이 나와 있습니다.

함수 인수
SQL 반환되는 데이터 유형(있는 경우) 반환되는 데이터 유형(없는 경우)
get_mqtt_property("format_indicator") 문자열(UNSPECIFIED_BYTES 또는 UTF8_DATA) 문자열(UNSPECIFIED_BYTES)
get_mqtt_property("content_type") String 정의되지 않음
get_mqtt_property("response_topic") String 정의되지 않음
get_mqtt_property("correlation_data") base64로 인코딩된 문자열 정의되지 않음
get_mqtt_property("some_invalid_name") 정의되지 않음 정의되지 않음

다음 예제 규칙 SQL은 MQTT5 헤더 contentType, payLoadFormatIndicator, responseTopic, correlationData 중 하나를 참조합니다.

SELECT *, get_mqtt_property('content_type') as contentType, get_mqtt_property('format_indicator') as payloadFormatIndicator, get_mqtt_property('response_topic') as responseTopic, get_mqtt_property('correlation_data') as correlationData FROM 'some/topic'

get_secret(secretId, secretType, key, roleArn)

AWS Secrets Manager에서 현재 버전의 보안 암호에 대한 암호화된 SecretString 또는 SecretBinary 필드의 값을 검색합니다. 비밀 생성 및 유지 관리에 대한 자세한 내용은 CreateSecretUpdateSecret, 및 을 참조하십시오 PutSecretValue.

get_secret()는 다음 파라미터를 사용합니다.

SecretId

문자열: 검색할 보안 암호의 Amazon 리소스 이름(ARN) 또는 친숙한 이름입니다.

secretType

문자열: 보안 암호 유형입니다. 유효한 값: SecretString | SecretBinary.

SecretString
  • API AWS CLI, 또는 콘솔을 사용하여 JSON 객체로 생성한 시크릿의 경우: AWS Secrets Manager

    • key 파라미터에 값을 지정한 경우, 이 함수는 지정된 키의 값을 반환합니다.

    • key 파라미터에 값을 지정하지 않은 경우 이 함수는 전체 JSON 객체를 반환합니다.

  • API, 또는 AWS CLI를 사용하여 JSON 객체로 생성하는 보안 암호의 경우:

    • key 파라미터에 값을 지정한 경우 이 함수는 예외와 함께 실패합니다.

    • key 파라미터에 값을 지정하지 않은 경우 이 함수는 보안 암호의 내용을 반환합니다.

SecretBinary
  • key 파라미터에 값을 지정한 경우 이 함수는 예외와 함께 실패합니다.

  • key 파라미터에 값을 지정하지 않은 경우 이 함수는 보안 암호 값을 Base64로 인코딩된 UTF-8 문자열로 반환합니다.

(선택 사항) 문자열: SecretString 보안 암호 필드에 저장된 JSON 객체 내부의 키 이름입니다. 전체 JSON 객체 대신 보안 암호에 저장된 키의 값만 검색하려는 경우 이 값을 사용합니다.

이 파라미터에 값을 지정하고 보안 암호의 SecretString 필드에 JSON 객체가 포함되어 있지 않으면 이 함수는 예외와 함께 실패합니다.

roleArn

문자열: secretsmanager:GetSecretValuesecretsmanager:DescribeSecret 권한을 갖는 역할 ARN입니다.

참고

이 함수는 항상 현재 버전의 보안 암호(AWSCURRENT 태그가 있는 버전)를 반환합니다 AWS IoT 규칙 엔진은 각 암호를 최대 15분 동안 캐시합니다. 따라서 규칙 엔진이 보안 암호를 업데이트하는 데 최대 15분이 걸릴 수 있습니다. 즉 AWS Secrets Manager, 로 업데이트한 지 최대 15분 후에 암호를 검색하면 이 함수는 이전 버전을 반환할 수 있습니다.

이 함수는 측정되지 않지만 AWS Secrets Manager 요금이 부과됩니다. 보안 암호 캐싱 메커니즘으로 인해 규칙 엔진은 때때로 AWS Secrets Manager을(를) 호출합니다. 규칙 엔진은 완전히 분산된 서비스이므로 15분 캐싱 기간 동안 규칙 엔진에서 여러 Secrets Manager API 호출을 볼 수 있습니다.

예:

get_secret 함수를 다음 API 키 인증 예제와 같이 HTTPS 규칙 동작의 인증 헤더에서 사용할 수 있습니다.

"API_KEY": "${get_secret('API_KEY', 'SecretString', 'API_KEY_VALUE', 'arn:aws:iam::12345678910:role/getsecret')}"

HTTPS 규칙 작업에 대한 자세한 내용은 HTTP 단원을 참조하세요.

get_thing_shadow(thingName, shadowName, roleARN)

지정된 사물의 지정된 섀도우를 반환합니다. SQL 버전 2016-03-23 이상에서 지원됩니다.

thingName

문자열: 섀도우를 검색할 사물의 이름입니다.

shadowName

(선택 사항) 문자열: 섀도우의 이름입니다. 이 파라미터는 명명된 섀도우를 참조하는 경우에만 필요합니다.

roleArn

문자열: iot:GetThingShadow 권한을 갖는 역할 ARN입니다.

예:

명명된 섀도우와 함께 사용할 경우 shadowName 파라미터를 제공합니다.

SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","MyThingShadow","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'

명명되지 않은 섀도우와 함께 사용할 경우 shadowName 파라미터를 생략합니다.

SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'

get_user_properties () userPropertyKey

MQTT5에서 지원되는 속성 헤더 유형 중 하나인 사용자 속성을 참조합니다.

userProperty

문자열: 사용자 속성은 키-값 페어입니다. 이 함수는 키를 인수로 사용하여 관련 키와 일치하는 모든 값의 배열을 반환합니다.

함수 인수

메시지 헤더에 있는 다음 사용자 속성의 경우:

some key some value
a different key a different value
some key value with duplicate key

다음 표에는 예상 SQL 동작이 나와 있습니다.

SQL 반환되는 데이터 형식 반환되는 데이터 값
get_user_properties('some key') 문자열 배열 ['some value', 'value with duplicate key']
get_user_properties('other key') 문자열 배열 ['a different value']
get_user_properties( ) 키-값 페어 객체의 배열 [{'"some key": "some value"'}, {"other key": "a different value"}, {"some key": "value with duplicate key"}]
get_user_properties('non-existent key') 정의되지 않음

다음 예제 규칙 SQL은 사용자 속성(MQTT5 속성 헤더 유형)을 페이로드로 참조합니다.

SELECT *, get_user_properties('user defined property key') as userProperty FROM 'some/topic'

해시 함수

AWS IoT 다음과 같은 해싱 함수를 제공합니다.

  • md2

  • md5

  • sha1

  • sha224

  • sha256

  • sha384

  • sha512

모든 해시 함수에는 문자열 인수 1개가 필요합니다. 결과는 해당 문자열의 해시된 값입니다. 표준 문자열 변환이 비 문자열 인수에 적용됩니다. 모든 해시 함수는 SQL 버전 2015-10-08 이상에서 지원합니다.

예:

md2("hello") = "a9046c73e00331af68917d3804f70655"

md5("hello") = "5d41402abc4b2a76b9719d911017c592"

indexof(String, String)

두 번째 인수의 첫 번째 인덱스(0부터 시작)을 첫 번째 인수의 하위 문자열로 반환합니다. 두 인수 모두 문자열이 필요합니다. 문자열이 아닌 인수에는 표준 문자열 변환 규칙이 적용됩니다. 이 함수는 배열에는 적용되지 않고 문자열에만 적용됩니다. SQL 버전 2016-03-23 이상에서 지원됩니다.

예:

indexof("abcd", "bc") = 1

isNull()

인수가 Null 값이면 true를 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

isNull(5) = false.

isNull(Null) = true.

인수 유형 Result
Int false
Decimal false
Boolean false
String false
Array false
Object false
Null true
Undefined false

isUndefined()

인수가 Undefined이면 true를 반환합니다. SQL 버전 2016-03-23 이상에서 지원됩니다.

예:

isUndefined(5) = false.

isUndefined(floor([1,2,3]))) = true.

인수 유형 Result
Int false
Decimal false
Boolean false
String false
Array false
Object false
Null false
Undefined true

length(String)

제공된 문자열의 문자 수를 반환합니다. 비 String 인수에는 표준 변환 규칙이 적용됩니다. SQL 버전 2016-03-23 이상에서 지원됩니다.

예:

length("hi") = 2

length(false) = 5

ln(Decimal)

인수의 자연 로그를 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: ln(e) = 1.

인수 유형 Result
Int Decimal(배정밀도), 인수의 자연 로그.
Decimal Decimal(배정밀도), 인수의 자연 로그.
Boolean Undefined.
String Decimal(배정밀도), 인수의 자연 로그. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

log(Decimal)

인수의 기수 10 로그를 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: log(100) = 2.0.

인수 유형 Result
Int Decimal(배정밀도), 인수의 기수 10 로그.
Decimal Decimal(배정밀도), 인수의 기수 10 로그.
Boolean Undefined.
String Decimal(배정밀도), 인수의 기수 10 로그. StringDecimal로 변환할 수 없는 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

lower(String)

지정된 String의 소문자 버전을 반환합니다. 비 문자열 인수는 표준 변환 규칙을 사용하여 문자열로 변환됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

lower("HELLO") = "hello".

lower(["HELLO"]) = "[\"hello\"]".

lpad(String, Int)

두 번째 인수로 지정된 수의 공백이 왼쪽에 추가된 String 인수를 반환합니다. Int 인수는 0부터 1000 사이여야 합니다. 제공된 값이 이 유효한 범위를 벗어날 경우 인수가 가장 가까운 유효한 값(0 또는 1000)으로 설정됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

lpad("hello", 2) = "  hello".

lpad(1, 3) = "   1"

인수 형식 1 인수 형식 2 Result
String Int String. 제공된 Int와 동일한 수의 공백이 지정된 String 왼쪽에 추가됩니다.
String Decimal Decimal 인수는 가장 가까운 Int로 내림되고 String은 지정된 수의 공백이 왼쪽에 추가됩니다.
String String 두 번째 인수는 Decimal로 변환된 후 가장 가까운 Int로 내림되고, String은 지정된 수의 공백이 왼쪽에 추가됩니다. 두 번째 인수를 Int로 변환할 수 없는 경우 결과는 Undefined입니다.
기타 값 Int/Decimal/String 첫 번째 값이 표준 변환을 통해 String로 변환된 후, 이 String에 LPAD 함수가 적용됩니다. 변환이 불가능한 경우 결과는 Undefined입니다.
임의의 값 기타 값 Undefined.

ltrim(String)

제공된 String에서 모든 선행 공백(탭 및 공백)을 제거합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

Ltrim(" h i ") = "hi ".

인수 유형 Result
Int 모든 선행 공백이 제거된 IntString 표현.
Decimal 모든 선행 공백이 제거된 DecimalString 표현.
Boolean 모든 선행 공백이 제거된 부울('true' 또는 'false')의 String 표현.
String 모든 선행 공백이 제거된 인수.
배열 모든 선행 공백이 제거된 ArrayString표현(표준 변환 규칙 사용).
객체 모든 선행 공백이 제거된 객체의 String 표현(표준 변환 규칙 사용).
Null Undefined.
정의되지 않음 Undefined.

machinelearning_predict(modelId, roleArn, record)

machinelearning_predict 함수를 사용하면 Amazon SageMaker 모델을 기반으로 하는 MQTT 메시지의 데이터를 사용하여 예측할 수 있습니다. SQL 버전 2015-10-08 이상에서 지원됩니다. machinelearning_predict 함수의 인수는 다음과 같습니다.

modelId

예측을 실행할 모델의 ID. 모델의 실시간 엔드포인트가 활성화되어야 합니다.

roleArn

machinelearning:Predictmachinelearning:GetMLModel 권한을 갖는 정책이 연결되고 예측을 실행할 모델에 대한 액세스를 허용하는 IAM 역할입니다.

레코드

SageMaker 예측 API로 전달될 데이터입니다. 이 인수는 단일 계층 JSON 객체로 표현되어야 합니다. 레코드가 다중 수준 JSON 객체일 경우 레코드가 값 직렬화를 통해 평면화됩니다. 예를 들어 다음 JSON이

{ "key1": {"innerKey1": "value1"}, "key2": 0}

다음과 같이 평면화됩니다.

{ "key1": "{\"innerKey1\": \"value1\"}", "key2": 0}

이 함수는 다음 필드를 포함하는 JSON 객체를 반환합니다.

predictedLabel

모델을 기반으로 한 입력의 분류입니다.

details

다음 속성을 포함합니다.

PredictiveModelType

모델 유형입니다. 유효한 값은 REGRESSION, BINARY, MULTICLASS입니다.

알고리즘

에서 SageMaker 예측에 사용하는 알고리즘입니다. 값은 SGD이어야 합니다.

predictedScores

각 레이블에 해당하는 원시 분류 점수를 포함합니다.

predictedValue

에 의해 SageMaker 예측된 값.

mod(Decimal, Decimal)

첫 번째 인수를 두 번째 인수로 나눈 나머지를 반환합니다. 나머지(십진수, 십진수)와 동일합니다. 또한 "%"를 동일한 모듈로 기능의 중위 연산자로 사용할 수도 있습니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: mod(8, 3) = 2.

왼쪽 피연산자 오른쪽 피연산자 출력
Int Int Int, 두 번째 인수를 법으로 하는 첫 번째 인수.
Int/Decimal Int/Decimal Decimal, 두 번째 피연산자를 법으로 하는 첫 번째 인수.
String/Int/Decimal String/Int/Decimal 모든 문자열이 10진수로 변환될 경우 결과는 두 번째 인수를 법으로 하는 첫 번째 인수입니다. 그렇지 않을 경우 Undefined입니다.
기타 값 기타 값 Undefined.

nanvl (,) AnyValue AnyValue

유효한 Decimal일 경우 첫 번째 인수를 반환합니다. 그렇지 않으면 두 번째 인수를 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: Nanvl(8, 3) = 8.

인수 형식 1 인수 형식 2 출력
정의되지 않음 임의의 값 두 번째 인수.
Null 임의의 값 두 번째 인수.
Decimal(NaN) 임의의 값 두 번째 인수.
Decimal(NaN 아님) 임의의 값 첫 번째 인수.
기타 값 임의의 값 첫 번째 인수.

newuuid()

임의의 16바이트 UUID를 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: newuuid() = 123a4567-b89c-12d3-e456-789012345000

numbytes(String)

지정된 문자열의 UTF-8 인코딩 내 바이트 수를 반환합니다. 비 String 인수에는 표준 변환 규칙이 적용됩니다. SQL 버전 2016-03-23 이상에서 지원됩니다.

예:

numbytes("hi") = 2

numbytes("€") = 3

parse_time(String, Long[, String])

parse_time 함수는 타임스탬프를 사람이 읽을 수 있는 날짜/시간 형식으로 만듭니다. SQL 버전 2016-03-23 이상에서 지원됩니다. 타임스탬프 문자열을 밀리초로 변환하려면 time_to_epoch(String, String) 단원을 참조하세요.

parse_time 함수는 다음 인수를 사용합니다.

패턴

(문자열) Joda-Time 형식을 따르는 날짜/시간 패턴입니다.

타임스탬프

(Long) Unix Epoch부터의 시간을 밀리초로 변환한 시간입니다. timestamp() 함수를 참조하세요.

timezone

(문자열) 형식 지정된 날짜/시간의 시간대입니다. 기본값은 "UTC"입니다. 이 함수는 Joda-Time 시간대를 지원합니다. 이 인수는 선택 사항입니다.

예:

이 메시지가 주제 'A/B'에 게시되면 페이로드 {"ts": "1970.01.01 AD at 21:46:40 CST"}가 S3 버킷으로 전송됩니다.

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT parse_time(\"yyyy.MM.dd G 'at' HH:mm:ss z\", 100000000, 'America/Belize' ) as ts FROM 'A/B'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "KEY_NAME" } } ], "ruleName": "RULE_NAME" } }

이 메시지가 주제 'A/B'에 게시되면 페이로드 {"ts": "2017.06.09 AD at 17:19:46 UTC"}가 S3 버킷으로 전송됩니다.

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT parse_time(\"yyyy.MM.dd G 'at' HH:mm:ss z\", timestamp() ) as ts FROM 'A/B'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [ { "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "KEY_NAME" } } ], "ruleName": "RULE_NAME" } }

parse_time()은 대체 템플릿으로 사용할 수도 있습니다. 예를 들어 이 메시지가 주제 'A/B'에 게시되면 페이로드가 키 값이 "2017"인 S3 버킷으로 전송됩니다.

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT * FROM 'A/B'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [{ "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "${parse_time('yyyy', timestamp(), 'UTC')}" } }], "ruleName": "RULE_NAME" } }

power(Decimal, Decimal)

두 번째 인수로 거듭제곱된 첫 번째 인수를 반환합니다. Decimal인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: power(2, 5) = 32.0.

인수 형식 1 인수 형식 2 출력
Int/Decimal Int/Decimal Decimal(배정밀도), 두 번째 인수의 승수로 거듭제곱된 첫 번째 인수.
Int/Decimal/String Int/Decimal/String Decimal(배정밀도), 두 번째 인수의 승수로 거듭제곱된 첫 번째 인수. 모든 문자열은 10진수로 변환됩니다. String을(를) Decimal(으)로 변환하지 못한 경우 결과는 Undefined입니다.
기타 값 기타 값 Undefined.

보안 주체()

트리거하는 메시지가 게시된 방식에 따라 디바이스가 인증에 사용하는 보안 주체를 반환합니다. 다음 표에서는 각 게시 방법과 프로토콜에 대해 반환된 보안 주체를 설명합니다.

메시지 게시 방법 프로토콜 자격 증명 유형 보안 주체
MQTT 클라이언트 MQTT X.509 디바이스 인증서 X.509 인증서 지문
AWS IoT 콘솔 MQTT 클라이언트 MQTT IAM 사용자 또는 역할 iam-role-id: 세션 이름
AWS CLI HTTP IAM 사용자 또는 역할 userid
AWS IoT 디바이스 SDK MQTT X.509 디바이스 인증서 X.509 인증서 지문
AWS IoT 디바이스 SDK MQTT 오버 WebSocket IAM 사용자 또는 역할 userid

다음은 principal()이 반환할 수 있는 다양한 유형의 값을 보여주는 예입니다.

  • X.509 인증서 지문: ba67293af50bf2506f5f93469686da660c7c844e7b3950bfb16813e0d31e9373

  • IAM 역할 ID 및 세션 이름: ABCD1EFG3HIJK2LMNOP5:my-session-name

  • 사용자 ID 반환: ABCD1EFG3HIJK2LMNOP5

rand()

0.0~1.0 범위의 균등 분포된 배정밀도 의사 난수를 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

rand() = 0.8231909191640703

regexp_matches(String, String)

문자열(첫 번째 인수)에 정규식(두 번째 인수)과 일치하는 항목이 포함되어 있으면 true를 반환합니다. 정규 표현식에서 | 코드를 사용하는 경우 ()와 함께 사용해야 합니다.

예:

regexp_matches("aaaa", "a{2,}") = true.

regexp_matches("aaaa", "b") = false.

regexp_matches("aaa", "(aaa|bbb)") = true.

regexp_matches("bbb", "(aaa|bbb)") = true.

regexp_matches("ccc", "(aaa|bbb)") = false.

첫 번째 인수:
인수 유형 Result
Int IntString 표현.
Decimal DecimalString 표현.
Boolean 부울('true' 또는 'false')의 String 표현
String String.
배열 ArrayString 표현(표준 변환 규칙 사용).
객체 객체의 String 표현(표준 변환 규칙 사용).
Null Undefined.
정의되지 않음 Undefined.

두 번째 인수:

유효한 정규식이어야 합니다. 비 문자열 형식은 표준 변환 규칙을 사용하여 String으로 변환됩니다. 형식에 따라 결과 문자열이 유효한 정규식이 아닐 수도 있습니다. (변환된) 인수가 유효한 정규식이 아닐 경우 결과는 Undefined입니다.

regexp_replace(String, String, String)

첫 번째 인수에서 모든 두 번째 인수(정규식)를 세 번째 인수로 대체합니다. "$"를 사용하여 캡처 그룹을 참조합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

regexp_replace("abcd", "bc", "x") = "axd".

regexp_replace("abcd", "b(.*)d", "$1") = "ac".

첫 번째 인수:
인수 유형 Result
Int IntString 표현.
Decimal DecimalString 표현.
Boolean 부울('true' 또는 'false')의 String 표현
String 소스 값
배열 ArrayString 표현(표준 변환 규칙 사용).
객체 객체의 String 표현(표준 변환 규칙 사용).
Null Undefined.
정의되지 않음 Undefined.

두 번째 인수:

유효한 정규식이어야 합니다. 비 문자열 형식은 표준 변환 규칙을 사용하여 String으로 변환됩니다. 형식에 따라 결과 문자열이 유효한 정규식이 아닐 수도 있습니다. (변환된) 인수가 유효한 정규식이 아닐 경우 결과는 Undefined입니다.

세 번째 인수:

유효한 정규식 대체 문자열이어야 합니다. (캡처 그룹을 참조할 수 있습니다.) 비 문자열 형식은 표준 변환 규칙을 사용하여 String으로 변환됩니다. (변환된) 인수가 유효한 정규식 대체 문자열이 아닐 경우 결과는 Undefined입니다.

regexp_substr(String, String)

첫 번째 파라미터에서 두 번째 파라미터(정규식)의 첫 번째 일치를 찾습니다. "$"를 사용하여 캡처 그룹을 참조합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

regexp_substr("hihihello", "hi") = "hi"

regexp_substr("hihihello", "(hi)*") = "hihi"

첫 번째 인수:
인수 유형 Result
Int IntString 표현.
Decimal DecimalString 표현.
Boolean 부울('true' 또는 'false')의 String 표현
String String 인수.
배열 ArrayString 표현(표준 변환 규칙 사용).
객체 객체의 String 표현(표준 변환 규칙 사용).
Null Undefined.
정의되지 않음 Undefined.

두 번째 인수:

유효한 정규식이어야 합니다. 비 문자열 형식은 표준 변환 규칙을 사용하여 String으로 변환됩니다. 형식에 따라 결과 문자열이 유효한 정규식이 아닐 수도 있습니다. (변환된) 인수가 유효한 정규식이 아닐 경우 결과는 Undefined입니다.

나머지(십진수, 십진수)

첫 번째 인수를 두 번째 인수로 나눈 나머지를 반환합니다. mod(Decimal, Decimal)와 동일합니다. 또한 "%"를 동일한 모듈로 기능의 중위 연산자로 사용할 수도 있습니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: remainder(8, 3) = 2.

왼쪽 피연산자 오른쪽 피연산자 출력
Int Int Int, 두 번째 인수를 법으로 하는 첫 번째 인수.
Int/Decimal Int/Decimal Decimal, 두 번째 피연산자를 법으로 하는 첫 번째 인수.
String/Int/Decimal String/Int/Decimal 모든 문자열이 10진수로 변환될 경우 결과는 두 번째 인수를 법으로 하는 첫 번째 인수입니다. 그렇지 않을 경우 Undefined입니다.
기타 값 기타 값 Undefined.

바꾸기(문자열, 문자열, 문자열)

첫 번째 인수에서 모든 두 번째 인수를 세 번째 인수로 대체합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

replace("abcd", "bc", "x") = "axd".

replace("abcdabcd", "b", "x") = "axcdaxcd".

모든 인수
인수 유형 Result
Int IntString 표현.
Decimal DecimalString 표현.
Boolean 부울('true' 또는 'false')의 String 표현
String 소스 값
배열 ArrayString 표현(표준 변환 규칙 사용).
객체 객체의 String 표현(표준 변환 규칙 사용).
Null Undefined.
정의되지 않음 Undefined.

rpad(String, Int)

두 번째 인수로 지정된 수의 공백이 오른쪽에 추가된 문자열 인수를 반환합니다. Int 인수는 0부터 1000 사이여야 합니다. 제공된 값이 이 유효한 범위를 벗어날 경우 인수가 가장 가까운 유효한 값(0 또는 1000)으로 설정됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

rpad("hello", 2) = "hello  ".

rpad(1, 3) = "1   ".

인수 형식 1 인수 형식 2 Result
String Int 제공된 Int와 동일한 수의 공백이 String의 오른쪽에 추가됩니다.
String Decimal Decimal 인수는 가장 가까운 Int로 내림되고, 문자열은 제공된 Int와 동일한 수의 공백이 오른쪽에 추가됩니다.
String String 두 번째 인수는 Decimal로 변환된 후 가장 가까운 Int로 내림됩니다. Int 값과 동일한 수의 공백이 String의 오른쪽에 추가됩니다.
기타 값 Int/Decimal/String 첫 번째 값이 표준 변환을 통해 String로 변환된 후, 이 String에 rpad 함수가 적용됩니다. 변환이 불가능한 경우 결과는 Undefined입니다.
임의의 값 기타 값 Undefined.

round(Decimal)

지정된 Decimal을 가장 가까운 Int로 반올림합니다. Decimal이 두 Int 값과 등거리일 경우(예: 0.5) Decimal은 올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: Round(1.2) = 1.

Round(1.5) = 2.

Round(1.7) = 2.

Round(-1.1) = -1.

Round(-1.5) = -2.

인수 유형 Result
Int 인수.
Decimal Decimal은 가장 가까운 Int로 내림됩니다.
String Decimal은 가장 가까운 Int로 내림됩니다. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
기타 값 Undefined.

rtrim(String)

제공된 String에서 모든 후행 공백(탭 및 공백)을 제거합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

rtrim(" h i ") = " h i"

인수 유형 Result
Int IntString 표현.
Decimal DecimalString 표현.
Boolean 부울('true' 또는 'false')의 String 표현
배열 ArrayString 표현(표준 변환 규칙 사용).
객체 객체의 String 표현(표준 변환 규칙 사용).
Null Undefined.
정의되지 않음 Undefined

sign(Decimal)

지정된 숫자의 부호를 반환합니다. 인수의 부호가 플러스일 경우 1이 반환됩니다. 인수의 부호가 마이너스일 경우 -1이 반환됩니다. 인수가 0일 경우 0이 반환됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

sign(-7) = -1.

sign(0) = 0.

sign(13) = 1.

인수 유형 Result
Int Int, Int 값의 부호.
Decimal Int, Decimal 값의 부호.
String Int, Decimal 값의 부호. 문자열은 Decimal 값으로 변환된 후 Decimal 값의 부호가 반환됩니다. StringDecimal로 변환할 수 없는 경우 결과는 Undefined입니다. SQL 버전 2015-10-08 이상에서 지원됩니다.
기타 값 Undefined.

sin(Decimal)

숫자의 사인을 라디안 단위로 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: sin(0) = 0.0

인수 유형 Result
Int Decimal(배정밀도), 인수의 사인.
Decimal Decimal(배정밀도), 인수의 사인.
Boolean Undefined.
String Decimal(배정밀도), 인수의 사인. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
Undefined Undefined.

sinh(Decimal)

숫자의 쌍곡사인을 반환합니다. Decimal 값은 함수 적용 전에 배정밀도로 반올림됩니다. 결과는 배정밀도의 Decimal 값입니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: sinh(2.3) = 4.936961805545957

인수 유형 Result
Int Decimal(배정밀도), 인수의 쌍곡사인.
Decimal Decimal(배정밀도), 인수의 쌍곡사인.
Boolean Undefined.
String Decimal(배정밀도), 인수의 쌍곡사인. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

sourceip()

연결되는 디바이스 또는 라우터의 IP 주소를 검색합니다. 디바이스가 인터넷에 직접 연결되어 있는 경우 함수는 디바이스의 소스 IP 주소를 반환합니다. 디바이스가 인터넷에 연결되는 라우터에 연결되어 있는 경우 함수는 라우터의 소스 IP 주소를 반환합니다. SQL 버전 2016-03-23에서 지원됩니다. sourceip()는 파라미터를 사용하지 않습니다.

중요

디바이스의 퍼블릭 소스 IP 주소는 대개 마지막 Network Address Translation(NAT) Gateway(예: 인터넷 서비스 공급자의 라우터 또는 케이블 모뎀)의 IP 주소입니다.

예:

sourceip()="192.158.1.38"

sourceip()="1.102.103.104"

sourceip()="2001:db8:ff00::12ab:34cd"

SQL 예시

SELECT *, sourceip() as deviceIp FROM 'some/topic'

규칙 액션에서 AWS IoT Core sourceip () 함수를 사용하는 방법의 예:

예 1

다음 예시는 DynamoDB 작업에서 () 함수를 대체 템플릿으로 호출하는 방법을 보여줍니다.

{ "topicRulePayload": { "sql": "SELECT * AS message FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "dynamoDB": { "tableName": "my_ddb_table", "hashKeyField": "key", "hashKeyValue": "${sourceip()}", "rangeKeyField": "timestamp", "rangeKeyValue": "${timestamp()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDB" } } ] } }

예제 2

다음 예시는 대체 템플릿을 사용하여 sourceip() 함수를 MQTT 사용자 속성으로 추가하는 방법을 보여줍니다.

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "${topic()}/republish", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_republish", "headers": { "payloadFormatIndicator": "UTF8_DATA", "contentType": "rule/contentType", "correlationData": "cnVsZSBjb3JyZWxhdGlvbiBkYXRh", "userProperties": [ { "key": "ruleKey1", "value": "ruleValue1" }, { "key": "sourceip", "value": "${sourceip()}" } ] } } } ] } }

메시지 브로커와 기본 수집 경로 모두에서 AWS IoT Core 규칙으로 전달되는 메시지에서 소스 IP 주소를 검색할 수 있습니다. IPv4와 IPv6 메시지에 대한 소스 IP도 검색할 수 있습니다. 소스 IP는 다음과 같이 표시됩니다.

IPv6: yyyy:yyyy:yyyy::yyyy:yyyy

IPv4: xxx.xxx.xxx.xxx

참고

원본 소스 IP는 재게시 작업을 거쳐 전달되지 않습니다.

substring(String, Int[, Int])

String 이후에 하나 또는 두 개의 Int 값이 필요합니다. String 및 단일 Int 인수일 경우 이 함수는 지정된 Int 인덱스(0부터 시작, 포함)부터 String의 끝까지의 지정된 String의 하위 문자열을 반환합니다. String 및 2개 Int 인수일 경우 이 함수는 첫 번째 Int 인덱스 인수(0부터 시작, 포함)부터 두 번째 Int 인덱스 인수(0부터 시작, 미포함)까지의 지정된 String의 하위 문자열을 반환합니다. 0보다 작은 인덱스는 0으로 설정됩니다. String 길이보다 큰 인덱스는 String 길이로 설정됩니다. 3개 인수 버전의 경우, 첫 번째 인덱스가 두 번째 인덱스보다 크거나 같을 경우 결과는 빈 String입니다.

 지정된 인수가 (String, Int) 또는 (String, Int, Int)가 아닐 경우 인수에 표준 변환을 적용하여 올바른 형식으로 변환합니다. 형식을 변환할 수 없을 경우 함수 결과는 Undefined입니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

substring("012345", 0) = "012345".

substring("012345", 2) = "2345".

substring("012345", 2.745) = "2345".

substring(123, 2) = "3".

substring("012345", -1) = "012345".

substring(true, 1.2) = "rue".

substring(false, -2.411E247) = "false".

substring("012345", 1, 3) = "12".

substring("012345", -50, 50) = "012345".

substring("012345", 3, 1) = "".

sql_version()

이 규칙에 지정된 SQL 버전을 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

sql_version() = "2016-03-23"

sqrt(Decimal)

숫자의 제곱근을 반환합니다. Decimal 인수는 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: sqrt(9) = 3.0.

인수 유형 Result
Int 인수의 제곱근.
Decimal 인수의 제곱근.
Boolean Undefined.
String 인수의 제곱근. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

startswith(String, String)

첫 번째 문자열 인수가 두 번째 문자열 인수로 시작하는지 여부를 나타내는 Boolean을 반환합니다. 인수가 Null 또는 Undefined일 경우 결과는 Undefined입니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

startswith("ranger","ran") = true

인수 형식 1 인수 형식 2 Result
String String 첫 번째 문자열이 두 번째 문자열로 시작하는지 여부.
기타 값 기타 값 두 인수는 모두 표준 변환 규칙을 사용하여 문자열로 변환됩니다. 첫 번째 문자열이 두 번째 문자열로 시작하면 true를 반환합니다. 인수가 Null 또는 Undefined일 경우 결과는 Undefined입니다.

tan(Decimal)

숫자의 탄젠트를 라디안 단위로 반환합니다. Decimal 값은 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: tan(3) = -0.1425465430742778

인수 유형 Result
Int Decimal(배정밀도), 인수의 탄젠트.
Decimal Decimal(배정밀도), 인수의 탄젠트.
Boolean Undefined.
String Decimal(배정밀도), 인수의 탄젠트. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

tanh(Decimal)

숫자의 쌍곡탄젠트를 라디안 단위로 반환합니다. Decimal 값은 함수 적용 전에 배정밀도로 반올림됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예: tanh(2.3) = 0.9800963962661914

인수 유형 Result
Int Decimal(배정밀도), 인수의 쌍곡탄젠트.
Decimal Decimal(배정밀도), 인수의 쌍곡탄젠트.
Boolean Undefined.
String Decimal(배정밀도), 인수의 쌍곡탄젠트. 문자열을 Decimal로 변환할 수 없는 경우 결과는 Undefined입니다.
배열 Undefined.
객체 Undefined.
Null Undefined.
정의되지 않음 Undefined.

time_to_epoch(String, String)

time_to_epoch 함수를 사용하여 타임스탬프 문자열을 Unix Epoch 시간의 밀리초 수로 변환합니다. SQL 버전 2016-03-23 이상에서 지원됩니다. 밀리초를 형식이 지정된 타임스탬프 문자열로 변환하려면 parse_time(String, Long[, String]) 단원을 참조하세요.

time_to_epoch 함수는 다음 인수를 사용합니다.

타임스탬프

(문자열) Unix Epoch 이후 밀리초로 변환할 타임스탬프 문자열입니다. 타임스탬프 문자열에서 시간대를 지정하지 않으면 함수는 UTC 시간대를 사용합니다.

패턴

(문자열) JDK11 Time 형식을 따르는 날짜/시간 패턴입니다.

예:

time_to_epoch("2020-04-03 09:45:18 UTC+01:00", "yyyy-MM-dd HH:mm:ss VV") = 1585903518000

time_to_epoch("18 December 2015", "dd MMMM yyyy") = 1450396800000

time_to_epoch("2007-12-03 10:15:30.592 America/Los_Angeles", "yyyy-MM-dd HH:mm:ss.SSS z") = 1196705730592

timestamp()

규칙 엔진이 준수하는 1970년 1월 1일 목요일 UTC (협정 세계시) 00:00:00 부터 현재 타임스탬프를 밀리초 단위로 반환합니다. AWS IoT SQL 버전 2015-10-08 이상에서 지원됩니다.

예: timestamp() = 1481825251155

topic(Decimal)

규칙을 트리거한 메시지가 전송된 주제를 반환합니다. 지정된 파라미터가 없을 경우 전체 주제가 반환됩니다. Decimal 파라미터는 특정 주제 세그먼트를 지정하는데 사용되며, 첫 번째 세그먼트는 1로 지정됩니다. 주제 foo/bar/baz의 경우, topic(1)이 foo를 반환하고, topic(2)가 bar를 반환하는 식입니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

topic() = "things/myThings/thingOne"

topic(1) = "things"

Basic Ingest를 사용하는 경우 주제($aws/rules/rule-name)의 최초 접두사는 topic() 함수에 사용할 수 없습니다. 예를 들어 주제는 다음과 같습니다.

$aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights

topic() = "Buildings/Building5/Floor2/Room201/Lights"

topic(3) = "Floor2"

traceid()

MQTT 메시지의 트레이스 ID(UUID), 또는 메시지가 MQTT를 통해 전송되지 않은 경우 Undefined를 반환합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

traceid() = "12345678-1234-1234-1234-123456789012"

transform(String, Object, Array)

Object 파라미터에서 Array 파라미터의 지정된 변환 결과를 포함하는 객체 배열을 반환합니다.

SQL 버전 2016-03-23 이상에서 지원됩니다.

String

사용할 변환 모드입니다. 지원되는 변환 모드와 ObjectArray 파라미터에서 Result를 생성하는 방법은 다음 표를 참조하세요.

객체

Array의 각 요소에 적용할 속성을 포함하는 객체입니다.

배열

Object의 속성이 적용되는 객체의 배열입니다.

이 배열의 각 객체는 함수의 응답에 있는 객체에 해당합니다. 함수 응답의 각 객체에는 원래 객체에 있는 속성과, String에 지정된 변환 모드에 의해 결정되어 Object에서 제공한 속성이 포함됩니다.

String 파라미터

Object 파라미터

Array 파라미터

Result

enrichArray

객체

객체 배열

각 객체에 Array 파라미터의 요소 특성과 Object 파라미터의 특성이 포함된 객체 배열입니다.

기타 값

임의의 값

임의의 값

정의되지 않음

참고

이 함수에 의해 반환된 배열은 128KiB로 제한됩니다.

변환 함수 예제 1

이 예제에서는 transform() 함수가 데이터 객체와 배열에서 단일 객체 배열을 생성하는 방법을 보여줍니다.

이 예에서 다음 메시지는 MQTT 주제 A/B에 게시됩니다.

{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }

주제 규칙 작업에 대한 이 SQL 문은 String 값이 enrichArraytransform() 함수를 사용합니다. 이 예에서 Object는 메시지 페이로드의 attributes 속성이고 Array는 세 개의 객체를 포함하는 values 배열입니다.

select value transform("enrichArray", attributes, values) from 'A/B'

메시지 페이로드를 수신하면 SQL 문은 다음과 같은 응답으로 평가됩니다.

[ { "a": 3, "data1": 1, "data2": 2 }, { "b": 4, "data1": 1, "data2": 2 }, { "c": 5, "data1": 1, "data2": 2 } ]

변환 함수 예제 2

이 예에서는 transform() 함수가 리터럴 값을 사용하여 메시지 페이로드의 개별 속성을 포함시키고 이름을 바꾸는 방법을 보여줍니다.

이 예에서 다음 메시지는 MQTT 주제 A/B에 게시됩니다. 이는 변환 함수 예제 1에 사용된 것과 동일한 메시지입니다.

{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }

주제 규칙 작업에 대한 이 SQL 문은 String 값이 enrichArraytransform() 함수를 사용합니다. Object 함수의 transform()에는 메시지 페이로드의 값이 keyattributes.data1라는 단일 속성이 있고 Array는 이전 예에서 사용된 것과 동일한 세 개의 객체를 포함하는 values 배열입니다.

select value transform("enrichArray", {"key": attributes.data1}, values) from 'A/B'

메시지 페이로드를 수신하면 이 SQL 문은 다음 응답으로 평가됩니다. 응답에서 data1 속성의 이름이 key로 지정되는 방법에 주목하세요.

[ { "a": 3, "key": 1 }, { "b": 4, "key": 1 }, { "c": 5, "key": 1 } ]

변환 함수 예제 3

이 예에서는 중첩된 SELECT 절에서 transform() 함수를 사용하여 여러 속성을 선택하고 후속 처리를 위해 새 객체를 만드는 방법을 보여줍니다.

이 예에서 다음 메시지는 MQTT 주제 A/B에 게시됩니다.

{ "data1": "example", "data2": { "a": "first attribute", "b": "second attribute", "c": [ { "x": { "someInt": 5, "someString": "hello" }, "y": true }, { "x": { "someInt": 10, "someString": "world" }, "y": false } ] } }

이 변환 함수의 Object는 메시지의 data2 객체의 ab 요소를 포함하는, SELECT 문에서 반환된 객체입니다. Array 파라미터는 원본 메시지에서 data2.c 배열의 두 객체로 구성됩니다.

select value transform('enrichArray', (select a, b from data2), (select value c from data2)) from 'A/B'

앞의 메시지를 사용하여 SQL 문은 다음 응답으로 평가됩니다.

[ { "x": { "someInt": 5, "someString": "hello" }, "y": true, "a": "first attribute", "b": "second attribute" }, { "x": { "someInt": 10, "someString": "world" }, "y": false, "a": "first attribute", "b": "second attribute" } ]

이 응답에서 반환된 배열은 batchMode를 지원하는 주제 규칙 작업과 함께 사용할 수 있습니다.

trim(String)

제공된 String에서 모든 선행 및 후행 공백을 제거합니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예제

Trim(" hi ") = "hi"

인수 유형 Result
Int 모든 선행 및 후행 공백이 제거된 IntString 표현.
Decimal 모든 선행 및 후행 공백이 제거된 DecimalString 표현.
Boolean 모든 선행 및 후행 공백이 제거된 Boolean("true" 또는 "false")의 String 표현.
String 모든 선행 및 후행 공백이 제거된 String.
배열 ArrayString 표현(표준 변환 규칙 사용).
객체 객체의 String 표현(표준 변환 규칙 사용).
Null Undefined.
정의되지 않음 Undefined.

trunc(Decimal, Int)

첫 번째 인수를 두 번째 인수로 지정된 Decimal 자리수로 절사합니다. 두 번째 인수가 0보다 작을 경우 0으로 설정됩니다. 두 번째 인수가 34보다 클 경우 34로 설정됩니다. 끝의 0은 결과에서 제거됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

trunc(2.3, 0) = 2.

trunc(2.3123, 2) = 2.31.

trunc(2.888, 2) = 2.88.

trunc(2.00, 5) = 2.

인수 형식 1 인수 형식 2 Result
Int Int 소스 값
Int/Decimal Int/Decimal 첫 번째 인수가 두 번째 인수로 지정된 길이로 절사됩니다. 두 번째 인수는 Int가 아닐 경우 가까운 Int로 내림됩니다.
Int/Decimal/String Int/Decimal 첫 번째 인수가 두 번째 인수로 지정된 길이로 절사됩니다. 두 번째 인수는 Int가 아닐 경우 가까운 Int로 내림됩니다. StringDecimal 값으로 변환됩니다. 문자열 변환이 실패할 경우 결과는 Undefined입니다.
기타 값 Undefined.

upper(String)

지정된 String의 대문자 버전을 반환합니다. 비 String 인수는 표준 변환 규칙을 사용하여 String으로 변환됩니다. SQL 버전 2015-10-08 이상에서 지원됩니다.

예:

upper("hello") = "HELLO"

upper(["hello"]) = "[\"HELLO\"]"