次の方法で共有


CREATE TABLE

✅ Azure Stream Analytics ✅ Fabric Eventstream

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 ] );  
  

論争

  • テーブル名

    データの取得元となる入力ストリームの名前。 この名前は、Azure Stream Analytics ポータルの [入力の追加] セクションで作成された入力エイリアスと一致する必要があります。

  • column_name

    受信イベントのペイロード内の列の名前。 ペイロードに列名がない場合は、column1、column2、..の既定の名前になります。 はシステムによって生成され、CREATE TABLE ステートメントでここで使用する必要があります。

  • データ型

    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)