CREATE TABLE (Stream Analytics)
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 只能用來明確通知編譯器預期的類型,因此可以從資料流程中移除偏差。 如果需要進行轉換,則應該使用 CAST 或 TRY_CAST在稍後的查詢步驟中完成。
語法
CREATE TABLE
table_name
( column_name <data_type> [ ,...n ] );
引數
table_name
資料來自的輸入資料流名稱。 此名稱必須符合在 Azure 串流分析入口網站之 [新增輸入] 區段中建立的輸入別名。
column_name
連入事件的裝載中的資料行名稱。 如果承載中沒有資料行名稱,則 column1、column2 的預設名稱... 是由系統產生,應該在 CREATE TABLE 語句中在此處使用。
data_type
Azure Stream Analytics 支援的資料類型。 請參閱 (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)