CREATE TABLE (Stream Analytics)

De instructie CREATE TABLE wordt gebruikt om het schema te definiëren van de nettolading van de gebeurtenissen die binnenkomen in Azure Stream Analytics. Hierdoor kan de gebruiker expliciet de gegevenstypen van elke benoemde kolom definiëren voor de nettolading van binnenkomende gebeurtenissen. Dit informeert de taak over het invoerschema en voorkomt type deductie.

Notitie

Als u de verschillende beschikbare opties voor typeconversie wilt vergelijken, raadpleegt u Cast-gegevens

Het is belangrijk om te begrijpen dat CREATE TABLE niet daadwerkelijk een tabel maakt. CREATE TABLE definieert alleen het gegevenstype van elke kolom in de nettolading van een invoeralias. Deze invoeralias is de alias die is gemaakt in de sectie Invoer toevoegen van de portal. Als een dergelijke declaratie ontbreekt, leidt de compiler het gegevenstype van de kolommen af.

In het geval van conversiefouten worden de rijen uit de stream verwijderd door CREATE TABLE. De rijen met fouten worden verplaatst naar de diagnostische logboeken met de volgende classificatie:

"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"

Dit betekent dat CREATE TABLE niet kan worden gebruikt om typen te converteren tussen de oorspronkelijke indeling (CSV, JSON..) en nieuwe. CREATE TABLE kan alleen worden gebruikt om de compiler expliciet te informeren over de typen die moeten worden verwacht, zodat afwijkingen uit de stroom kunnen worden verwijderd. Als er een conversie moet worden uitgevoerd, moet dit in een latere querystap worden uitgevoerd met behulp van CAST of TRY_CAST.

Syntaxis

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

Argumenten

  • Table_name

    De naam van de invoerstroom waaruit de gegevens afkomstig zijn. Deze naam moet overeenkomen met de invoeralias die is gemaakt in de sectie 'Invoer toevoegen' van de Azure Stream Analytics-portal.

  • column_name

    De naam van de kolom in de nettolading van de binnenkomende gebeurtenis. Als de nettolading geen kolomnamen bevat, worden de standaardnamen kolom1, kolom2, ... worden gegenereerd door het systeem en moeten hier worden gebruikt in de INSTRUCTIE CREATE TABLE.

  • data_type

    De gegevenstypen die worden ondersteund door Azure Stream Analytics. Zie Gegevenstypen (Azure Stream Analytics).

Voorbeelden

Met het volgende invoerschema (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
  }

We kunnen de volgende CREATE TABLE-instructie gebruiken:

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)