다음을 통해 공유


데이터 형식

✅ Azure Stream Analytics ✅ Fabric Eventstream

각 레코드에는 관련 데이터 형식이 있습니다. 데이터 형식은 해당 형식의 레코드가 보유할 수 있는 값 집합 또는 해당 형식의 식이 생성할 수 있는 값 집합을 설명하고 제한합니다.

열이 아닌 형식이 있는 레코드입니다. 열의 각 레코드에는 다른 형식이 있을 수 있습니다. 대부분의 애플리케이션에 대해 투명할 경우 스키마 드리프트 시나리오 및 기타 비정상적인 입력 패턴을 간단하게 처리할 수 있습니다.

지원되는 데이터 형식

다음은 지원되는 데이터 형식 목록입니다.

데이터 형식 설명
빅인트 (bigint) -2^63(-9,223,372,036,854,775,808) ~ 2^63-1(9,223,372,036,854,775,807)의 정수입니다.
떠다니다 범위의 부동 소수점 번호 - 1.79E+308에서 -2.23E-308, 0 및 2.23E-308에서 1.79E+308까지입니다. 일반적으로 부동 소수점 10진수 값에는 정확히 일치하는 이진 표현이 없습니다. 정밀도 손실이 발생할 수 있습니다. 이는 Azure Stream Analytics와 관련이 없지만 모든 부동 소수점 숫자 구현에서 발생합니다.
nvarchar(max) 유니코드 문자로 구성된 텍스트 값입니다. 참고: max 이외의 값은 지원되지 않습니다.
날짜 및 시간 24시간 시계 및 UTC(표준 시간대 오프셋 0)를 기준으로 하는 소수 자릿수 초(7자리, 100나노초 정밀도)와 하루 중 시간과 결합되는 날짜를 정의합니다.
조각 1, 0 또는 NULL 값을 사용할 수 있는 정수입니다. 호환 성 수준 1.2 이상에서 지원됩니다.
기록 이름/값 쌍의 집합입니다. 값은 지원되는 데이터 형식이어야 합니다.
배열 정렬된 값 컬렉션입니다. 값은 지원되는 데이터 형식이어야 합니다.

bigint 및 float 데이터 형식을 조인하거나 비교할 수 있습니다. 나타낼 수 없는 매우 큰 bigint 값의 경우를 제외하고 모든 경우에 올바르게 작동합니다.

비고

범위 외부의 bigint 데이터 형식을 읽을 때 Azure Stream Analytics에서 지원합니다. Stream Analytics 작업은 오류 메시지인 InputDeserializationError를 사용하여 이벤트를 역직렬화하지 못합니다. 데이터를 미리 처리하고 문자열로 변환할 수 있습니다. 한 가지 옵션은 Azure Functions를 사용하여 데이터를 미리 처리하고 이러한 큰 정수를 문자열로 변환하는 것입니다.

타입 변환

다음은 데이터 형식 변환을 제어하는 규칙입니다.

  • 입력 읽기 및 출력 쓰기 작업 중 정밀도 손실이 없는 변환은 암시적이며 항상 성공합니다.
  • 출력 쓰기 작업 내의 정밀도 손실 및 오버플로는 구성된 오류 정책(삭제 또는 다시 시도로 설정)에 의해 처리됩니다.
  • 출력 쓰기 작업 중에 발생하는 형식 변환 오류는 오류 정책에 의해 처리됩니다.
  • 입력 읽기 작업 중에 발생하는 형식 변환 오류로 인해 작업이 이벤트를 삭제합니다.

값을 부동 소수로 변환할 때 정밀도 손실이 발생할 수 있습니다. Azure Stream Analytics에만 국한된 것이 아니라 일반적으로 float 데이터 형식에만 해당합니다. 따라서 오류로 간주되지 않습니다. 모든 숫자를 보존해야 하는 경우 데이터를 문자열로 읽어야 합니다.

데이터 캐스팅

스트리밍 SQL 언어에는 데이터의 데이터 형식을 관찰하고 조정하는 데 유용한 네 가지 함수가 있습니다.

  • CAST : 단일 열을 지정된 형식으로 캐스팅하면 변환 오류가 발생할 경우 작업이 실패합니다.
  • TRY_CAST : 단일 열을 지정된 형식으로 캐스팅합니다. 오류는 NULL로 처리됩니다. 가장 잘 사용하는 방법은 입력 유효성 검사를 참조하세요. TRY_CAST
  • CREATE TABLE : 입력에 대한 단일 명시적 스키마를 정의합니다. 변환 오류가 있는 행이 스트림에서 제거됨
  • GetType : 열의 형식을 반환합니다.

대부분의 사용 사례에서 권장되는 옵션은 TRY_CAST 사용하는 것입니다. 이 함수는 오류 값을 NULL로 대체하여 데이터 손실을 방지하면서 출력 형식을 보장하여 다운스트림 처리를 보호합니다. 행은 삭제되지 않으며 원래 값은 다른 열에 계속 프로젝스될 수 있습니다.

강력한 보장을 위해 CREATE TABLE을 사용하는 것이 좋습니다. 이 방법을 사용하면 편차의 위험 없이 지정된 입력의 스키마를 작업에 알릴 수 있습니다. 주어진 입력에서 단일 스키마만 정의할 수 있고 비준수 행이 삭제된다는 단점이 있습니다.

가능하면 모든 캐스팅 작업은 다른 함수에서 암시적으로(자동으로) 수행되지 않고 이러한 함수를 통해 명시적으로 수행해야 합니다. 이렇게 하면 SQL 데이터베이스와 같이 강력한 형식의 출력에 대한 형식 불일치, 예기치 않은 동작 및 삽입 오류를 방지할 수 있습니다. 이러한 오류로부터 기본 쿼리 논리를 보호하는 방법에 대한 입력 유효성 검사를 참조하세요.

비트로 변환

값은 다음 규칙을 사용하여 부동 소수와 비트 간에 변환됩니다.

부터 에게
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0.0
(BIT) 영 (FLOAT) 영
(FLOAT) 0.0 (BIT) 0
(FLOAT) 기타 모든 값 (BIT) 1
(FLOAT) 영 (BIT) 영

형식 매핑 및 serialization 형식

데이터 형식 의 CSV CSV out 의 JSON JSON out Avro in Avro out
bigint 64비트 부가 정수로 변환된 문자열 작업 문화권을 사용하여 문자열로 변환된 64비트 부가 정수 number: 부호 있는 64비트 정수로 변환된 정수;

부울: 호환성 수준 1.1 이하에서 "false"가 0으로 변환되고 "true"가 1로 변환됩니다.
number: integer long 및 int를 64비트 부가 정수로 변환합니다.

부울: 호환성 수준 1.1 이하에서 false는 0으로 변환되고 true는 1로 변환됩니다.
길다
플로트 64비트 부호 있는 부동 소수점 숫자로 변환된 문자열 작업 문화권을 사용하여 문자열로 변환된 64비트 부호 있는 부동 소수점 숫자 number: 64비트 부호 있는 부동 소수점 숫자로 변환된 분수 number: fraction 부호 있는 64비트 부호 있는 부동 소수점 숫자로 변환된 double 및 float 더블
nvarchar(max) 문자열 문자열 문자열 문자열 문자열 문자열
날짜/시간 ISO 8601 표준에 따라 datetime으로 변환된 문자열 ISO 8601 표준을 사용하는 문자열 ISO 8601 표준에 따라 datetime으로 변환된 문자열 ISO 8601 표준을 사용하여 문자열로 변환된 datetime ISO 8601 표준에 따라 datetime으로 변환된 문자열 ISO 8601 표준을 사용하여 문자열로 변환된 datetime
bit (호환성 수준 1.2 이상) 문자열 "true", "false" 또는 "null"이 정수 값 1, 0 또는 null로 변환됩니다. 문자열 "true" 또는 "false"로 변환 부울: "false"가 0으로 변환되고 "true"가 1로 변환됩니다. 부울: 부울 값 부울: false가 0으로 변환되고 true가 1로 변환됩니다. 불리언
녹화 해당 없음(N/A) 지원되지 않습니다. "Record" 문자열이 출력됩니다. JSON 개체 JSON 개체 Avro 레코드 형식 Avro 레코드 형식
배열 해당 없음(N/A) 지원되지 않습니다. "Array" 문자열이 출력됩니다. JSON 개체 JSON 개체 Avro 레코드 형식 Avro 레코드 형식

비고

Parquet에는 데이터 형식 변환이 필요하지 않습니다.

구조적 데이터 저장소에 쓸 때 형식 매핑

데이터 형식 SQL Power BI Azure Cosmos DB (애저 코스모스 DB) PostgreSQL Azure Data Explorer(아주르 데이터 탐색기)
bigint bigint, int, smallint, tinyint, 모든 문자열 형식(ntext, nvarchar, char, ...) numeric: integer 빅인트 (bigint) dynamic, int, long
플로트 float, real, decimal, numeric, all string types (ntext, nvarchar, char, ...) number: fraction 배정밀도, 숫자 1.78E+308로 제한됨 dynamic, real, double
nvarchar(max) 모든 문자열 형식(ntext, nvarchar, char, uniqueidentifier...) 문자열 문자 변경, 텍스트 동적, 문자열
날짜/시간 datetime, datetime2, datetimeoffset, 모든 문자열 형식(ntext, nvarchar, char, ...) ISO 8601 표준을 사용하여 문자열로 변환된 datetime timestamp, time. 표준 시간대 옵션이 지원되지만 표준 시간대는 제공되지 않습니다. dynamic, string, datetime
bit (호환성 수준 1.2 이상) bigint, int, smallint, tinyint, bit, 모든 문자열 형식(ntext, nvarchar, char, ...) boolean: 1이 true로 변환되고 0이 false로 변환됩니다. 조각 dynamic, bool
녹화 지원되지 않습니다. "Record" 문자열이 출력됩니다. 지원되지 않습니다. "Record" 문자열이 출력됩니다. JSON 개체 지원되지 않음 dynamic, bool, long, datetime, byte array, real, double, string
배열 지원되지 않습니다. "Array" 문자열이 출력됩니다. 지원되지 않습니다. "Array" 문자열이 출력됩니다. JSON 개체 지원되지 않음 동적, 문자열