기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SET 절
SET 절을 사용하여 표현식 결과를 저장하는 변수를 정의합니다. SELECT 및 WHERE 절과 대체 템플릿에서 이러한 변수를 재사용할 수 있습니다. 이렇게 하면 복잡한 표현식을 복제하지 않고 SQL 문에서 함수 호출 수를 줄일 수 있습니다.
SET 절은 데이터 타입, , 연산자, 함수리터럴, Case 문, JSON 확장, 변수 및를 지원합니다중첩된 객체 쿼리.
SET 절 구문
SET 절은 SQL 문의 SELECT 절 앞에 나타나야 합니다. 다음 구문을 사용합니다.
SET @variable_name = expression [, @variable_name2 = expression2]
구문 규칙:
를 사용하여 변수 이름 시작
@변수 이름에는 문자, 숫자 및 밑줄이 포함될 수 있습니다.
변수 이름은 최대 64자까지 가능합니다.
쉼표로 구분된 단일 SET 절에서 여러 변수를 설정할 수 있습니다.
각 변수는 한 번만 할당할 수 있습니다(변수는 변경할 수 없음).
SET 키워드는 SQL 문당 한 번만 사용할 수 있습니다.
변수 사용
변수를 정의한 후 다음에서 사용할 수 있습니다.
SELECT 절
WHERE 절
기타 SET 변수 할당
작업 대체 템플릿
오류 작업 대체 템플릿
중첩된 SELECT 쿼리
함수 파라미터( roleArn 파라미터와 같은 특정 파라미터 및와 유사한 함수 모드를 전환하는 파라미터는 변수를 지원하지
transform("enrichArray", attributes, values)않음)
변수는 @variable_name SET 절에 사용된 것과 동일한 구문을 사용하여 참조됩니다. JSON 확장 구문을 사용하여와 같이 객체가 포함된 변수의 속성에 액세스할 수도 있습니다@variable_name.property.
SET 절 예제
기본 변수 사용
다음 예제는 주제에 게시된 페이로드를 보여줍니다device/data. {"temp_fahrenheit": 75, "humidity": 60}
SQL 문
SET @temp_celsius = (temp_fahrenheit - 32) * 5 / 9 SELECT @temp_celsius AS celsius, humidity FROM 'device/data'
발신 페이로드: {"celsius": 23.89, "humidity": 60}
임베디드 JSON 객체의 멤버 액세스
다음 예제는 주제에 게시된 페이로드를 보여줍니다device/data. {"device1": {"deviceId":"weather_sensor", "deviceData": {"sensors": {"temp_fahrenheit": 75, "humidity": 60}, "location": [47.606,-122.332]}}}
SQL 문
SET @device_sensor_data = device1.deviceData.sensors SELECT @device_sensor_data.temp_fahrenheit AS temp_fahrenheit, @device_sensor_data.humidity as humidity, device1.deviceId as deviceId FROM 'device/data'
발신 페이로드: {"temp_fahrenheit":75,"humidity":60,"deviceId":"weather_sensor"}
JSON 확장을 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요. JSON 확장
중복 함수 호출 방지
SET 변수는 복잡한 디코딩 작업의 중복을 방지하는 데 도움이 됩니다.
SET @decoded_data = decode(encode(*, 'base64'), 'proto', 'schema', 'schema.desc', 'message.proto', 'Message') SELECT @decoded_data.sensor_id, @decoded_data.reading FROM 'device/protobuf' WHERE @decoded_data.reading > 100
SET 변수가 없으면 디코딩 함수를 세 번 반복해야 하며, 이는 함수 호출 제한을 초과합니다.
여러 변수
쉼표로 구분하여 단일 SET 절에서 여러 변수를 정의할 수 있습니다.
SET @user_data = get_user_properties(device_id), @threshold = 50 SELECT @user_data.name, temp_fahrenheit FROM 'sensors/+' WHERE temp_fahrenheit > @threshold AND @user_data.active = true
대체 템플릿에서 변수 사용
변수는 작업 대체 템플릿에서도 사용할 수 있으므로 SQL 문과 규칙 작업 모두에서 계산된 값을 재사용할 수 있습니다.
SQL 문
SET @temp_celsius = (temp_fahrenheit - 32) * 5 / 9 SELECT @temp_celsius AS celsius, humidity FROM 'device/data'
작업 구성:
{ "s3": { "roleArn": "arn:aws:iam::123456789012:role/testRuleRole", "bucketName": "bucket", "key": "temperature-data/${device_id}/temp-${@temp_celsius}C.json" } }
이 예제에서 SET 변수@temp_celsius는 대체 템플릿에서 S3 작업의 키 필드를 구성하는 데 사용됩니다.
비 JSON 페이로드 사용량
SET 변수는 비 JSON 페이로드를 직접 지원하지 않으므로 먼저 페이로드를 인코딩하거나 디코딩해야 합니다.
SET @encoded_payload = encode(*, 'base64') SELECT @encoded_payload AS raw_data FROM 'device/binary'
비 JSON 페이로드 작업 방법에 대한 자세한 내용은 섹션을 참조하세요. 이진 페이로드 작업
SET 절 제한
SET 변수에는 다음 제한이 적용됩니다.
SQL 문당 최대 10개의 고유 변수
최대 변수 값 크기 128KiB(최소 UTF-8 JSON 문자열)
모든 변수에 대해 128KiB의 최대 총 값 크기
변수 이름은 64자로 제한됩니다.
변수는 JSON 페이로드를 그대로 직접 수락할 수 있습니다(JSON이 아닌 페이로드를 먼저 인코딩/디코딩해야 함).