Compartilhar via


Tipos de dados

✅ Fluxo de eventos do Azure Stream Analytics ✅ Fabric

Cada registro tem um tipo de dados relacionado. Um tipo de dados descreve (e restringe) o conjunto de valores que um registro desse tipo pode conter ou uma expressão desse tipo pode produzir.

Observe que são registros que têm um tipo e não colunas. Cada registro de uma coluna pode ter um tipo diferente. Se isso for transparente para a maioria dos aplicativos, ele permitirá a manipulação direta de cenários de descompasso de esquema e outros padrões de digitação incomuns.

Tipos de dados com suporte

Veja abaixo a lista de tipos de dados com suporte.

Tipo de dados Descrição
bigint Inteiros no intervalo -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807).
derivar Números de ponto flutuante no intervalo - 1,79E+308 a -2.23E-308, 0 e 2.23E-308 a 1.79E+308. Valores decimais de ponto flutuante geralmente não têm uma representação binária exata. A perda de precisão pode ser experimentada. Isso não é específico do Azure Stream Analytics, mas ocorre em todas as implementações de número de ponto flutuante.
nvarchar(max) Valores de texto, compostos por caracteres Unicode. Observação: não há suporte para um valor diferente do máximo.
datetime Define uma data combinada com uma hora do dia com segundos fracionários (7 dígitos, precisão de 100 nanossegundos) que se baseia em um relógio de 24 horas e em relação a UTC (deslocamento de fuso horário 0).
bit Um inteiro que pode ter um valor de 1, 0 ou NULL. Isso tem suporte no nível de compatibilidade 1.2 e superior.
registro Conjunto de pares nome/valor. Os valores devem ser do tipo de dados com suporte.
matriz Coleção ordenada de valores. Os valores devem ser do tipo de dados com suporte.

Você pode unir (ou comparar) um tipo de dados bigint e float. Ele funcionará corretamente em todos os casos, exceto no caso dos valores bigint muito grandes que não podem ser representados.

Observação

Ao ler tipos de dados bigint fora do intervalo, o Azure Stream Analytics dá suporte, seu trabalho do Stream Analytics falharia em desserializar os eventos com a mensagem de erro: InputDeserializationError. Você pode pré-processar os dados e convertê-los em cadeia de caracteres. Uma opção é usar as funções do Azure para pré-processar os dados e converter esses inteiros grandes em cadeia de caracteres.

Conversões de tipo

Estas são as regras que regem as conversões de tipo de dados:

  • A conversão sem perda de precisão durante as operações de leitura e gravação de saída de entrada é implícita e sempre é bem-sucedida
  • A perda de precisão e o estouro dentro das operações de gravação de saída são tratados pela política de erro configurada (definida como Drop ou Retry)
  • Erros de conversão de tipo que ocorrem durante operações de gravação de saída são tratados pela política de erro
  • Erros de conversão de tipo que ocorrem durante operações de leitura de entrada fazem com que o trabalho solte o evento

Uma perda de precisão pode ocorrer na conversão de valores para flutuar. Não é específico para o Azure Stream Analytics, mas para o tipo de dados float em geral. Como tal, não é considerado um erro. No caso em que cada dígito precisa ser conservado, os dados devem ser lidos como cadeia de caracteres.

Dados de conversão

Há quatro funções na linguagem SQL de streaming que são úteis para observar e ajustar o tipo de dados de seus dados.

  • CAST : converter uma única coluna em um determinado tipo – falhará no trabalho em caso de erro de conversão
  • TRY_CAST : converter uma única coluna em um determinado tipo – os erros são transmitidos como NULL. Consulte a validação de entrada para saber como usar melhor TRY_CAST
  • CREATE TABLE : defina um único esquema explícito para uma entrada. Linhas com erros de conversão são removidas do fluxo
  • GetType : retornar o tipo de uma coluna

Para a maioria dos casos de uso, a opção recomendada é usar TRY_CAST. Essa função protege o processamento downstream garantindo o tipo de saída, evitando a perda de dados substituindo o valor em erro por NULL. A linha não foi descartada e esse valor original ainda pode ser projetado em outra coluna.

Para garantias fortes, a opção recomendada é usar CREATE TABLE. Essa abordagem permite informar o trabalho do esquema de uma determinada entrada, sem risco de desvio. A compensação é que apenas um único esquema pode ser definido em uma determinada entrada e linhas não compatíveis serão descartadas.

Se possível, todas as operações de conversão devem ser feitas explicitamente por meio dessas funções, em vez de implicitamente (silenciosamente) em outras funções. Isso evita incompatibilidades de tipo, comportamentos inesperados e erros de inserção para saídas fortemente tipdas, como bancos de dados SQL. Consulte a validação de entrada para saber como proteger a lógica de consulta principal contra esses erros.

Conversão em bit

Os valores serão convertidos entre float e bit com as seguintes regras:

De Para
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0.0
(BIT) ZERO (FLOAT) ZERO
(FLOAT) 0.0 (BIT) 0
(FLOAT) qualquer outro valor (BIT) 1
(FLOAT) ZERO (BIT) ZERO

Mapeamentos de tipo e formatos de serialização

Tipo de dados CSV in CSV para fora JSON em JSON fora Avro in Saída do Avro
bigint cadeia de caracteres convertida em inteiro com sinal de 64 bits Inteiro com sinal de 64 bits convertido em cadeia de caracteres usando a cultura do trabalho número: inteiro convertido em inteiro com sinal de 64 bits;

Booliano: no nível de compatibilidade 1.1 e abaixo "false" é convertido em 0, "true" é convertido em 1
número: inteiro long and int convert to 64 bit signed integer;

Booliano: no nível de compatibilidade 1.1 e abaixo de false é convertido em 0, true é convertido em 1
Longas
flutuar cadeia de caracteres convertida em número de ponto flutuante com sinal de 64 bits Número de ponto flutuante com sinal de 64 bits convertido em cadeia de caracteres usando a cultura do trabalho número: fração convertida em número de ponto flutuante com sinal de 64 bits número: fração double and float convert to 64 bits signed float point number duplo
nvarchar(max) cadeia cadeia cadeia cadeia cadeia cadeia
data e hora cadeia de caracteres convertida em datetime seguindo o padrão ISO 8601 cadeia de caracteres usando o padrão ISO 8601 cadeia de caracteres convertida em datetime seguindo o padrão ISO 8601 datetime convertido em cadeia de caracteres usando o padrão ISO 8601 cadeia de caracteres convertida em datetime seguindo o padrão ISO 8601 datetime convertido em cadeia de caracteres usando o padrão ISO 8601
bit (nível de compatibilidade 1.2 e superior) cadeia de caracteres "true", "false" ou "null" é convertida em valor inteiro 1, 0 ou nulo correspondentemente convertido em cadeia de caracteres "true" ou "false" Booliano: "false" é convertido em 0, "true" é convertido em 1 Booliano: valor booliano Booliano: false é convertido em 0, true é convertido em 1 booleano
de registro Não aplicável Sem suporte, a cadeia de caracteres "Record" é saída Objeto JSON Objeto JSON Tipo de registro Avro Tipo de registro Avro
matriz Não aplicável Sem suporte, a cadeia de caracteres "Array" é saída Objeto JSON Objeto JSON Tipo de registro Avro Tipo de registro Avro

Observação

Nenhuma conversão de tipo de dados é necessária para Parquet.

Mapeamento de tipos ao gravar em armazenamentos de dados estruturados

Tipo de dados SQL Power BI Azure Cosmos DB PostgreSQL Azure Data Explorer
bigint bigint, int, smallint, tinyint, todos os tipos de cadeia de caracteres (ntext, nvarchar, char, ...) Sim numérico: inteiro bigint

Se o tipo de coluna for smallint ou inteiro, ocorrerá o erro "formato de dados binário incorreto".
dinâmico, int, long
flutuar float, real, decimal, numeric, todos os tipos de cadeia de caracteres (ntext, nvarchar, char, ...) Sim número: fração precisão dupla, numérica. Limitado a 1,78E+308

Se o tipo de coluna for real, ocorrerá o erro "formato de dados binário incorreto".
dinâmico, real, duplo
nvarchar(max) Todos os tipos de cadeia de caracteres (ntext, nvarchar, char, uniqueidentifier...) Sim cadeia caractere variável, texto dinâmico, cadeia de caracteres
data e hora datetime, datetime2, datetimeoffset, todos os tipos de cadeia de caracteres (ntext, nvarchar, char, ...) Sim datetime convertido em cadeia de caracteres usando o padrão ISO 8601 timestamptz for UTC timestamp, timestamp otherwise dynamic, string, datetime
bit (nível de compatibilidade 1.2 e superior) bigint, int, smallint, tinyint, bit, todos os tipos de cadeia de caracteres (ntext, nvarchar, char, ...) Sim booliano: 1 é convertido em true, 0 convertido em false bit dinâmico, bool
de registro Sem suporte, a cadeia de caracteres "Record" é saída Sem suporte, a cadeia de caracteres "Record" é saída Objeto JSON Sem suporte dynamic, bool, long, datetime, byte array, real, double, string
matriz Sem suporte, a cadeia de caracteres "Array" é saída Sem suporte, a cadeia de caracteres "Array" é saída Objeto JSON Sem suporte dinâmico, cadeia de caracteres