CREATE TABLE (Stream Analytics)
A instrução CREATE TABLE é utilizada para definir o esquema do payload dos eventos que entram no Azure Stream Analytics. Isto permite ao utilizador definir explicitamente os tipos de dados de cada coluna nomeada para o payload de eventos recebidos. Esta ação informará a tarefa do esquema de entrada e impedirá a inferência de tipos.
Nota
Para comparar as diferentes opções disponíveis para a conversão de tipo, veja dados de conversão
É importante compreender que CREATE TABLE não cria nenhuma tabela. CREATE TABLE define apenas o tipo de dados de cada coluna no payload de um alias de entrada. Este alias de entrada é o que foi criado na secção "Adicionar Entrada" do portal. Na ausência de tal declaração, o compilador irá inferir o tipo de dados das colunas.
Em caso de erros de conversão, CREATE TABLE removerá as linhas do fluxo. As linhas em erro serão movidas para os registos de diagnóstico com a seguinte classificação:
"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"
Isto significa que a função CREATE TABLE não pode ser utilizada para converter tipos entre o formato original (CSV, JSON..) e os novos. A função CREATE TABLE só pode ser utilizada para informar explicitamente o compilador dos tipos esperados, pelo que os desvios podem ser removidos do fluxo. Se for necessário efetuar uma conversão, esta deve ser efetuada num passo de consulta posterior com CAST ou TRY_CAST.
Sintaxe
CREATE TABLE
table_name
( column_name <data_type> [ ,...n ] );
Argumentos
table_name
O nome do fluxo de entrada de onde vêm os dados. Este nome tem de corresponder ao alias de entrada criado na secção "Adicionar Entrada" do portal do Azure Stream Analytics.
column_name
O nome da coluna no payload do evento de entrada. Se não existirem nomes de colunas no payload, os nomes predefinidos de column1, column2, ... são gerados pelo sistema e devem ser utilizados aqui na instrução CREATE TABLE.
data_type
Os tipos de dados suportados pelo Azure Stream Analytics. Veja Tipos de Dados (Azure Stream Analytics).
Exemplos
Com o seguinte esquema de entrada (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
}
Podemos utilizar a seguinte instrução 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)