Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
✅ 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 |