✅ 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 只能用來明確通知編譯程式預期的型別,因此可以從數據流中移除偏差。 如果需要進行轉換,則應該使用 CAST 或 TRY_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)