Partilhar via


Tipos de dados

✅ Azure Stream Analytics ✅ Fabric Eventstream

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.

Por favor, note 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 permite a manipulação direta de cenários de desvio de esquema e outros padrões de digitação incomuns.

Tipos de dados suportados

Abaixo está a lista de tipos de dados suportados.

Tipo de dados Descrição
bigint Números inteiros no intervalo -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807).
float Números de ponto flutuante no intervalo - 1,79E+308 a -2,23E-308, 0 e 2,23E-308 a 1,79E+308. Os valores decimais de vírgula 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 (máx.) Valores de texto, compostos por caracteres Unicode. Nota: Não há suporte para um valor diferente de max.
datetime Define uma data que é combinada com uma hora do dia com segundos fracionários (7 dígitos, precisão de 100 nanossegundos) que é baseada em um relógio de 24 horas e relativa ao UTC (deslocamento de fuso horário 0).
pouco Um inteiro que pode ter um valor de 1, 0 ou NULL. Isso é suportado no nível de compatibilidade 1.2 e superior.
registo Conjunto de pares nome/valor. Os valores devem ser do tipo de dados suportado.
matriz Recolha ordenada de valores. Os valores devem ser do tipo de dados suportado.

Você pode participar (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 suporta, seu trabalho do Stream Analytics falharia ao desserializar os eventos com a mensagem de erro: InputDeserializationError. Você pode pré-processar os dados e convertê-los em string. Uma opção é usar as funções do Azure para pré-processar os dados e converter inteiros tão grandes em cadeia de caracteres.

Conversões de tipos

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 entrada, leitura e gravação de saída está 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 Soltar ou Repetir)
  • Os erros de conversão de tipo que ocorrem durante as operações de gravação de saída são tratados pela política de erros
  • Erros de conversão de tipo que acontecem durante as operações de leitura de entrada fazem com que o trabalho descarte o evento

Uma perda de precisão pode acontecer na conversão de valores em float. Não é específico do Azure Stream Analytics, mas do 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 string.

Dados de transmissã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 para um determinado tipo - falhará o trabalho em caso de erro de conversão
  • TRY_CAST : converta uma única coluna para um determinado tipo - os erros são deixados passar como NULL. Consulte a validação de entrada para saber qual a melhor forma de usar TRY_CAST
  • CREATE TABLE : defina um único esquema explícito para uma entrada. As linhas com erros de conversão são removidas do fluxo
  • GetType : retorna o tipo de uma coluna

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

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

Se possível, todas as operações de fundição devem ser feitas explicitamente através destas funções, em vez de implicitamente (silenciosamente) noutras funções. Isso evita incompatibilidades de tipo, comportamentos inesperados e erros de inserção para saídas fortemente tipadas, 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 para bit

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

De Para
(BIT) 1 (FLUTUAÇÃO) 1.0
(BIT) 0 (FLUTUAÇÃO) 0,0
(BIT) NULO (FLUTUAR) NULO
(FLUTUAÇÃO) 0,0 (BIT) 0
(FLUTUAR) qualquer outro valor (BIT)
(FLUTUAR) NULO (BIT) NULO

Mapeamentos de tipo e formatos de serialização

Tipo de dados CSV em Saída CSV JSON em Saída JSON Avro em Avro para fora
bigint string convertida em inteiro assinado de 64 bits Inteiro assinado de 64 bits convertido em string usando cultura de trabalho número: inteiro convertido para inteiro assinado de 64 bits;

Booleano: no nível de compatibilidade 1.1 e abaixo de "false" é convertido para 0, "true" é convertido para 1
número: inteiro long e int convertidos para inteiro assinado de 64 bits;

Booleano: no nível de compatibilidade 1.1 e abaixo false é convertido para 0, true é convertido para 1
longo
flutuar string convertida para número de ponto flutuante assinado de 64 bits Número de ponto flutuante assinado de 64 bits convertido em string usando cultura de trabalho número: fração convertida para número de ponto flutuante assinado de 64 bits número: fração duplo e float convertido para número de ponto float assinado de 64 bits duplo
nvarchar (máx.) cadeia (de caracteres) cadeia (de caracteres) cadeia (de caracteres) cadeia (de caracteres) cadeia (de caracteres) cadeia (de caracteres)
datetime string convertida para datetime seguindo a norma ISO 8601 string usando a norma ISO 8601 string convertida para datetime seguindo a norma ISO 8601 datetime convertido em string usando o padrão ISO 8601 string convertida para datetime seguindo a norma ISO 8601 datetime convertido em string usando o padrão ISO 8601
bit (nível de compatibilidade 1.2 e superior) string "true", "false" ou "null" é convertida em valor inteiro 1, 0 ou null correspondentemente convertido em string "true" ou "false" Booleano: "falso" é convertido em 0, "verdadeiro" é convertido em 1 Booleano: valor booleano Booleano: false é convertido em 0, true é convertido em 1 Booleano
recorde N/A Não suportado, a string "Record" é saída Objeto JSON Objeto JSON Tipo de registo Avro Tipo de registo Avro
matriz N/A Não suportado, a string "Array" é saída Objeto JSON Objeto JSON Tipo de registo Avro Tipo de registo Avro

Observação

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

Mapeamento de tipo 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 string (ntext, nvarchar, char, ...) Sim numérico: inteiro bigint

Se o tipo de coluna for smallint ou inteiro, ocorrerá o erro "formato de dados binários incorreto".
dinâmico, int, longo
flutuar float, real, decimal, numérico, todos os tipos de string ( 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ários incorreto".
dinâmico, real, duplo
nvarchar (máx.) Todos os tipos de string (ntext, nvarchar, char, uniqueidentifier...) Sim cadeia (de caracteres) variação de caracteres, texto dinâmico, string
datetime datetime, datetime2, datetimeoffset, todos os tipos de string ( ntext, nvarchar, char, ...) Sim datetime convertido em string usando o padrão ISO 8601 timestamptz para carimbo de data/hora UTC, carimbo de data/hora caso contrário dinâmico, string, datetime
bit (nível de compatibilidade 1.2 e superior) bigint, int, smallint, tinyint, bit, todos os tipos de string (ntext, nvarchar, char, ...) Sim Booleano: 1 é convertido em verdadeiro, 0 convertido em falso pouco dinâmico, bool
recorde Não suportado, a string "Record" é saída Não suportado, a string "Record" é saída Objeto JSON Não suportado dinâmico, bool, longo, datetime, byte array, real, duplo, string
matriz Não suportado, a string "Array" é saída Não suportado, a string "Array" é saída Objeto JSON Não suportado dinâmico, string