Azure Stream Analytics 작업의 호환성 수준

이 문서에서는 Azure Stream Analytics의 호환성 수준 옵션을 설명합니다.

Stream Analytics는 정기적인 기능 업데이트와 지속적인 성능 향상을 통해 관리되는 서비스입니다. 서비스의 대부분의 런타임 업데이트는 호환성 수준과 독립적으로 최종 사용자가 자동으로 사용할 수 있게 됩니다. 하지만 새 기능에서 기존 작업의 동작을 변경하거나 실행 중인 작업에서 데이터를 사용하는 방식이 변경되는 경우 이 변경 내용은 새로운 호환성 수준에서 도입되었습니다. 호환성 수준 설정을 낮춰서 주요 변경 없이 기존 Stream Analytics 작업을 계속 실행할 수 있습니다. 최신 런타임 동작에 대한 준비가 되면 호환성 수준을 높여 옵트인할 수 있습니다.

호환성 수준 선택

호환성 수준은 스트림 분석 작업의 런타임 동작을 제어합니다.

Azure Stream Analytics는 현재 다음 세 가지 호환성 수준을 지원합니다.

  • 1.2 - 최신 개선 사항이 있는 최신 동작
  • 1.1 - 이전 동작
  • 1.0 - 몇 년 전 Azure Stream Analytics의 일반 공급 중에 도입된 원래 호환성 수준입니다.

새로운 Stream Analytics 작업을 만들 때 가장 최신 호환성 수준을 사용하여 만드는 것이 좋습니다. 나중에 변경 및 복잡성이 추가되는 것을 방지하기 위해 최신 동작을 사용하여 작업 디자인을 시작합니다.

호환성 수준 설정

Azure Portal에서 또는 작업 REST API 호출 만들기를 사용하여 Stream Analytics 작업의 호환성 수준을 설정할 수 있습니다.

Azure Portal에서 작업의 호환성 수준을 업데이트하려면 다음을 수행합니다.

  1. Azure Portal을 사용하여 Stream Analytics 작업으로 이동합니다.
  2. 호환성 수준을 업데이트하기 전에 작업을 중지합니다. 작업이 실행 중인 상태인 경우 호환성 수준을 업데이트할 수 없습니다.
  3. 구성 제목 아래에서 호환성 수준을 선택합니다.
  4. 원하는 호환성 수준 값을 선택합니다.
  5. 페이지 아래쪽에서 저장을 선택합니다.

Stream Analytics compatibility level in Azure portal

호환성 수준을 업데이트하면 T 컴파일러는 선택한 호환성 수준에 해당하는 구문을 사용하여 작업의 유효성을 검사합니다.

호환성 수준 1.2

호환성 수준 1.2에는 다음과 같은 주요 변경 내용이 도입되었습니다.

AMQP 메시징 프로토콜

1.2 수준: Azure Stream Analytics는 AMQP(고급 메시지 큐 프로토콜) 메시징 프로토콜을 사용하여 Service Bus 큐 및 토픽에 씁니다. AMQP를 사용하여 여러 플랫폼 간에 개방형 표준 프로토콜을 사용하는 하이브리드 애플리케이션을 빌드할 수 있습니다.

지리 공간적 함수

이전 수준: Azure Stream Analytics는 지리 계산을 사용했습니다.

1.2 수준: Azure Stream Analytics를 사용하면 기하학적으로 프로젝트된 지역 좌표를 계산할 수 있습니다. 지리 공간적 함수의 서명에는 변경 사항이 없습니다. 그러나 의미 체계는 약간 다르기 때문에 이전보다 더 정확한 계산이 가능합니다.

Azure Stream Analytics는 지리 공간적 참조 데이터 인덱싱을 지원합니다. 지리 공간적 요소를 포함하는 참조 데이터를 인덱싱하여 조인 계산을 더 빠르게 수행할 수 있습니다.

업데이트된 지리 공간적 함수는 WKT(잘 알려진 텍스트) 지리 공간 형식의 전체 표현을 제공합니다. GeoJson에서 이전에 지원되지 않았던 다른 지리 공간적 구성 요소를 지정할 수 있습니다.

자세한 내용은 Azure Stream Analytics – Cloud 및 IoT Edge의 지리 공간적 기능에 대한 업데이트 참조하세요.

여러 파티션이 있는 입력 원본에 대한 병렬 쿼리 실행

이전 수준: Azure Stream Analytics 쿼리를 사용하려면 PARTITION BY 절을 사용하여 입력 원본 파티션에서 쿼리 처리를 병렬화해야 했습니다.

1.2 수준: 입력 원본 파티션 간에 쿼리 논리를 병렬 처리할 수 있는 경우 Azure Stream Analytics는 별도의 쿼리 인스턴스를 만들고 계산을 병렬로 실행합니다.

Azure Cosmos DB 출력과 네이티브 대량 API 통합

이전 수준: upsert 동작이 삽입 또는 병합되었습니다.

1.2 수준: Azure Cosmos DB 출력과 네이티브 대량 API 통합은 처리량을 최대화하고 제한 요청을 효율적으로 처리합니다. 자세한 내용은 Azure Cosmos DB에 대한 Azure Stream Analytics 출력 페이지를 참조 하세요.

upsert 동작은 insert 또는 replace입니다.

SQL 출력에 작성 시 DateTimeOffset

이전 수준:DateTimeOffset 형식이 UTC로 조정되었습니다.

1.2 수준: DateTimeOffset이 더 이상 조정되지 않습니다.

SQL 출력에 작성 시 Long

이전 수준: 대상 형식에 따라 값이 잘렸습니다.

1.2 수준: 대상 형식에 맞지 않는 값은 출력 오류 정책에 따라 처리됩니다.

SQL 출력에 쓸 때 레코드 및 배열 serialization

이전 수준: 레코드는 "Record"로 작성되었으며 배열은 "Array"로 작성되었습니다.

1.2 수준: 레코드 및 배열은 JSON 형식으로 serialize됩니다.

함수 접두사에 대한 엄격한 유효성 검사

이전 수준: 함수 접두사에 대한 엄격한 유효성 검사가 없었습니다.

1.2 수준: Azure Stream Analytics에는 함수 접두사에 대한 엄격한 유효성 검사가 있습니다. 기본 제공 함수에 접두사를 추가하면 오류가 발생합니다. 예를 들어, myprefix.ABS(…)은 지원되지 않습니다.

기본 제공 집계에 접두사를 추가하면 오류가 발생합니다. 예를 들어, myprefix.SUM(…)은 지원되지 않습니다.

사용자 정의 함수에 접두사 "시스템"을 사용하면 오류가 발생합니다.

배열 및 개체를 Azure Cosmos DB 출력 어댑터의 주요 속성으로 허용하지 않음

이전 수준: 배열 및 개체 형식이 키 속성으로 지원되었습니다.

1.2 수준: 배열 및 개체 형식은 더 이상 키 속성으로 지원되지 않습니다.

JSON, AVRO 및 PARQUET에서 부울 형식 역직렬화

이전 수준: Azure Stream Analytics는 부울 값을 BIGINT 형식으로 역직렬화합니다. false는 0으로 매핑되고 true는 1로 매핑됩니다. 출력은 이벤트를 BIT로 명시적으로 변환하는 경우에만 JSON, AVRO 및 PARQUET에서 부울 값을 만듭니다. 예를 들어 input1에서 JSON { "value": true } 을 읽는 것과 같은 SELECT value INTO output1 FROM input1 통과 쿼리는 output1에 JSON 값을 { "value": 1 }씁니다.

1.2 수준: Azure Stream Analytics는 부울 값을 BIT 형식으로 역직렬화합니다. False는 0에 매핑되고 true는 1에 매핑됩니다. input1에서 JSON { "value": true } 을 읽는 것과 같은 SELECT value INTO output1 FROM input1 통과 쿼리는 output1에 JSON 값을 { "value": true }씁니다. 값을 쿼리의 BIT 형식으로 캐스팅하여 부울 형식을 지원하는 형식의 출력에서 true 및 false로 표시되도록 할 수 있습니다.

호환성 수준 1.1

호환성 수준 1.1에는 다음과 같은 주요 변경 내용이 도입되었습니다.

Service Bus XML 형식

1.0 수준: Azure Stream Analytics에서 DataContractSerializer를 사용했기 때문에 메시지 콘텐츠에 XML 태그가 포함되었습니다. 예시:

@\u0006string\b3http://schemas.microsoft.com/2003/10/Serialization/\u0001{ "SensorId":"1", "Temperature":64\}\u0001

1.1 수준: 메시지 콘텐츠에는 추가 태그 없이 스트림이 직접 포함됩니다. 예: { "SensorId":"1", "Temperature":64}

필드 이름에 대/소문자 구분 유지

1.0 수준: Azure Stream Analytics 엔진에서 필드 이름을 처리할 때 소문자로 변경되었습니다.

1.1 수준: Azure Stream Analytics 엔진에서 필드 이름을 처리할 때 대소문자 구분이 유지됩니다.

참고 항목

Edge 환경을 사용하여 호스팅되는 Stream Analytic 작업에는 대/소문자 구분 유지를 아직 사용할 수 없습니다. 결과적으로 작업이 Edge에서 호스트되는 경우 모든 필드 이름이 소문자로 변환됩니다.

FloatNaNDeserializationDisabled

1.0 수준: CREATE TABLE 명령은 FLOAT 열 유형에서 NaN(Not-a-Number. 예를 들어 Infinity, -Infinity)이 있는 이벤트를 필터링하지 않았습니다. 이는 이러한 숫자에 대해 문서화된 범위를 벗어났기 때문입니다.

1.1 수준: CREATE TABLE을 사용하면 강력한 스키마를 지정할 수 있습니다. Stream Analytics 엔진은 데이터가 이 스키마를 준수하는지 확인합니다. 이 모델을 사용하면 명령이 NaN 값을 사용하여 이벤트를 필터링할 수 있습니다.

JSON에 대한 수신 시 datetime 문자열을 DateTime 형식으로 자동 변환하지 않도록 설정

1.0 수준: JSON 파서는 날짜/시간/영역 정보를 포함하는 문자열 값을 수신 시 DATETIME 형식으로 자동 변환하므로 값이 원래 형식 및 표준 시간대 정보를 즉시 잃게 됩니다. 이 작업은 수신 시 수행되므로 해당 필드가 쿼리에서 사용되지 않은 경우에도 UTC DateTime으로 변환됩니다.

1.1 수준: 날짜/표준 시간대 정보가 있는 문자열 값을 DATETIME 형식으로 자동 변환할 수 없습니다. 따라서 표준 시간대 정보 및 원래 서식이 유지됩니다. 그러나 쿼리에서 NVARCHAR(MAX) 필드를 DATETIME 식의 일부로 사용하는 경우(예: DATEADD 함수) 계산을 수행하기 위해 DATETIME 형식으로 변환되고 원래 형식이 손실됩니다.

다음 단계