共用方式為


CREATE TABLE

✅ Azure 串流分析 ✅ 網狀架構事件串流

CREATE TABLE 語句可用來定義傳入 Azure 串流分析的事件承載架構。 這可讓使用者針對傳入事件的承載,明確定義每個具名數據行的數據類型。 這會通知輸入架構的作業,並防止類型推斷。

備註

若要比較類型轉換可用的不同選項,請參閱 轉換數據

請務必瞭解 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 只能用來明確通知編譯程式預期的型別,因此可以從數據流中移除偏差。 如果需要進行轉換,則應該使用 CASTTRY_CAST,在稍後的查詢步驟中完成轉換。

語法

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

論點

  • 表格名稱

    數據的來源輸入數據流名稱。 此名稱必須符合在 Azure 串流分析入口網站的 [新增輸入] 區段中建立的輸入別名。

  • column_name(欄位名稱)

    傳入事件承載中的數據行名稱。 如果承載中沒有資料行名稱,則 column1、column2 的預設名稱... 是由系統產生,而且應該在 CREATE TABLE 語句中在這裡使用。

  • 資料類型

    Azure 串流分析所支持的數據類型。 請參閱 數據類型

範例

使用下列輸入架構 (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)