CREATE TABLE (Stream Analytics)
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を使用して、後のクエリ ステップで行う必要があります。
構文
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)