Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
✅ 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) 1º |
| (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 |