Share via


CREATE TABLE(스트림 분석)

CREATE TABLE 문은 Azure Stream Analytics로 들어오는 이벤트의 페이로드 스키마를 정의하는 데 사용됩니다. 따라서 사용자는 들어오는 이벤트 페이로드에 대해 각 명명된 열의 데이터 형식을 명시적으로 정의할 수 있습니다. 이렇게 하면 입력 스키마의 작업에 알리고 형식 유추를 방지합니다.

참고

형식 변환에 사용할 수 있는 다양한 옵션을 비교하려면 데이터 캐스팅을 참조하세요.

CREATE TABLE은 실제로 테이블을 만들지 않는다는 것을 이해하는 것이 중요합니다. CREATE TABLE은 입력 별칭의 페이로드에 있는 각 열의 데이터 형식만 정의합니다. 이 입력 별칭은 포털의 "입력 추가" 섹션에서 만든 별칭입니다. 이러한 선언이 없으면 컴파일러가 열의 데이터 형식을 유추합니다.

변환 오류의 경우 CREATE TABLE은 스트림에서 행을 삭제합니다. 오류의 행은 다음 분류를 사용하여 진단 로그로 이동됩니다.

"Type": "DataError",
"DataErrorType": "InputDeserializerError.InvalidData",
"BriefMessage": "Could not deserialize the input event(s) from resource ... . Some possible reasons: 1) Malformed events 2) Input source configured with incorrect serialization format",
"ErrorCode": "InputDeserializationError",
"ErrorCategory": "DataError"

즉, CREATE TABLE을 사용하여 원래 형식(CSV, JSON.)과 새 형식 간에 형식을 변환할 수 없습니다. CREATE TABLE은 컴파일러에 예상되는 형식을 명시적으로 알리는 데만 사용할 수 있으므로 스트림에서 편차를 제거할 수 있습니다. 변환이 필요한 경우 CAST 또는 TRY_CAST 사용하여 이후 쿼리 단계에서 수행해야 합니다.

Syntax

CREATE TABLE   
    table_name   
    ( column_name <data_type> [ ,...n ] );  
  

인수

  • table_name

    데이터가 들어오는 입력 스트림의 이름입니다. 이 이름은 Azure Stream Analytics 포털의 "입력 추가" 섹션에서 만든 입력 별칭과 일치해야 합니다.

  • column_name

    들어오는 이벤트 페이로드의 열 이름입니다. 페이로드에 열 이름이 없으면 column1, column2, ... 는 시스템에서 생성되며 CREATE TABLE 문에서 사용해야 합니다.

  • data_type

    Azure Stream Analytics에서 지원하는 데이터 형식입니다. 데이터 형식(Azure Stream Analytics)을 참조하세요.

예제

다음 JSON(입력 스키마)을 사용합니다.

  {
    "TollId":1,
    "EntryTime":"2014-09-10T12:11:00.0000000Z",
    "LicensePlate":"NJB 1006",
    "State":"CT",
    "Make":"Ford",
    "Model":"Focus",
    "VehicleType":1,
    "VehicleWeight":0,
    "Toll":4.5,
    "Tag":678912345
  }

다음 CREATE TABLE 문을 사용할 수 있습니다.

CREATE TABLE Entry (
	TollId bigint,
	EntryTime datetime,
	LicensePlate nvarchar(max),
	State nvarchar(max),
	Make nvarchar(max),
	Model nvarchar(max),
	VehicleType bigint,
	VehicleWeight float,
	Toll float,
	Tag bigint
);

SELECT
	DATEADD(hour,-1,System.Timestamp()) AS WindowStart,
	System.Timestamp AS WindowEnd,
	TollId,
	SUM(Toll) AS TollTotal -- guaranteed to be a float
INTO MyOutput
FROM Entry TIMESTAMP BY EntryTime -- guaranteed to be a timestamp
GROUP BY TollId, Tumbling(hour,1)