Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Chaque enregistrement a un type de données associé. Un type de données décrit (et limite) l’ensemble de valeurs qu’un enregistrement de ce type peut contenir ou une expression de ce type peut produire.
Notez qu’il s’agit d’enregistrements qui ont un type et non des colonnes. Chaque enregistrement d’une colonne peut avoir un type différent. Si cela sera transparent pour la plupart des applications, il permet une gestion simple des scénarios de dérive de schéma et d’autres modèles de frappe inhabituels.
Types de données pris en charge
Vous trouverez ci-dessous la liste des types de données pris en charge.
| Type de données | Description |
|---|---|
| bigint | Entiers de la plage -2^63 (-9 223 372 036 854 775 808) à 2^63-1 (9 223 372 036 854 775 807). |
| flotter | Nombres à virgule flottante dans la plage - 1,79E+308 à -2.23E-308, 0 et 2.23E-308 à 1,79E+308. Les valeurs décimales à virgule flottante n’ont généralement pas de représentation binaire exacte. La perte de précision peut être vécue. Cela n’est pas spécifique à Azure Stream Analytics, mais se produit dans toutes les implémentations de nombre à virgule flottante. |
| nvarchar(max) | Valeurs de texte, composées de caractères Unicode. Remarque : Une valeur autre que max n’est pas prise en charge. |
| date/heure | Définit une date combinée avec une heure de jour avec des fractions de secondes (7 chiffres, 100 nanosecondes de précision) basée sur une horloge de 24 heures et par rapport à UTC (décalage de fuseau horaire 0). |
| mors | Entier pouvant prendre une valeur de 1, 0 ou NULL. Ceci est pris en charge dans le niveau de compatibilité 1.2 et versions ultérieures. |
| enregistrement | Ensemble de paires nom/valeur. Les valeurs doivent être de type de données pris en charge. |
| tableau | Collection ordonnée de valeurs. Les valeurs doivent être de type de données pris en charge. |
Vous pouvez joindre (ou comparer) un bigint et un type de données float. Elle fonctionnera correctement dans tous les cas, à l’exception du cas des valeurs bigintes très volumineuses qui ne peuvent pas être représentées.
Remarque
Lors de la lecture de types de données bigint en dehors de la plage, Azure Stream Analytics prend en charge votre travail Stream Analytics ne parvient pas à désérialiser les événements avec le message d’erreur : InputDeserializationError. Vous pouvez prétraiter les données et les convertir en chaîne. L’une des options consiste à utiliser des fonctions Azure pour prétraiter les données et convertir ces entiers volumineux en chaîne.
Conversions des types
Voici les règles régissant les conversions de types de données :
- La conversion sans perte de précision pendant les opérations de lecture et d’écriture de sortie d’entrée est implicite et réussit toujours
- La perte de précision et le dépassement de capacité à l’intérieur des opérations d’écriture de sortie sont gérées par la stratégie d’erreur configurée (définie sur Drop ou Retry)
- Les erreurs de conversion de type qui se produisent pendant les opérations d’écriture de sortie sont gérées par la stratégie d’erreur
- Les erreurs de conversion de type qui se produisent pendant les opérations de lecture d’entrée entraînent la suppression du travail de l’événement
Une perte de précision peut se produire lors de la conversion de valeurs en float. Il n’est pas spécifique à Azure Stream Analytics, mais au type de données float en général. Par conséquent, il n’est pas considéré comme une erreur. Dans le cas où chaque chiffre doit être conservé, les données doivent être lues sous forme de chaîne.
Conversion de données
Il existe quatre fonctions dans le langage SQL de streaming qui sont utiles pour observer et ajuster le type de données de vos données.
- CAST : caster une seule colonne en type donné - échouera le travail en cas d’erreur de conversion
-
TRY_CAST : caster une seule colonne en un type donné : les erreurs sont autorisées en tant que NULL. Consultez la validation d’entrée pour savoir comment utiliser le mieux
TRY_CAST - CREATE TABLE : définissez un schéma explicite unique à une entrée. Les lignes avec erreurs de conversion sont supprimées du flux
- GetType : retourne le type d’une colonne
Pour la plupart des cas d’usage, l’option recommandée consiste à utiliser TRY_CAST. Cette fonction protège le traitement en aval en garantissant le type de sortie, tout en empêchant la perte de données en remplaçant la valeur en erreur par NULL. La ligne n’est pas supprimée et cette valeur d’origine peut toujours être projetée dans une autre colonne.
Pour des garanties fortes, l’option recommandée consiste à utiliser CREATE TABLE. Cette approche permet d’informer le travail du schéma d’une entrée donnée, sans risque d’écart. L’inconvénient étant qu’un seul schéma peut être défini sur une entrée donnée et que les lignes non conformes seront supprimées.
Si possible, toutes les opérations de cast doivent être effectuées explicitement via ces fonctions, plutôt que implicitement (silencieusement) dans d’autres fonctions. Cela évite les incompatibilités de type, les comportements inattendus et les erreurs d’insertion pour les sorties fortement typées comme les bases de données SQL. Consultez la validation d’entrée pour savoir comment protéger la logique de requête principale contre ces erreurs.
Conversion en bits
Les valeurs sont converties entre float et bit avec les règles suivantes :
| De | À |
|---|---|
| (BIT) 1 | (FLOAT) 1.0 |
| (BIT) 0 | (FLOAT) 0.0 |
| (BIT) ZÉRO | (FLOAT) ZÉRO |
| (FLOAT) 0.0 | (BIT) 0 |
| (FLOAT) toute autre valeur | (BIT) 1 |
| (FLOAT) ZÉRO | (BIT) ZÉRO |
Mappages de types et formats de sérialisation
| Type de données | CSV dans | CSV sortant | JSON dans | JSON sortant | Avro dans | Avro out |
|---|---|---|---|---|---|---|
| bigint | chaîne convertie en entier signé 64 bits | Entier signé 64 bits converti en chaîne à l’aide de la culture de travail | nombre : entier converti en entier signé 64 bits ; Boolean : dans le niveau de compatibilité 1.1 et inférieur à « false » est converti en 0, « true » est converti en 1 |
nombre : entier | entier signé long et int converti en entier signé 64 bits ; Boolean : dans le niveau de compatibilité 1.1 et inférieur à false est converti en 0, true est converti en 1 |
long |
| flotter | chaîne convertie en nombre de virgule flottante signé 64 bits | Numéro de point flottant signé 64 bits converti en chaîne à l’aide de la culture de travail | nombre : fraction convertie en nombre de virgule flottante signé 64 bits | nombre : fraction | double et float convertis en nombre de virgule flottante signé 64 bits | double |
| nvarchar(max) | ficelle | ficelle | ficelle | ficelle | ficelle | ficelle |
| datetime | chaîne convertie en datetime après la norme ISO 8601 | chaîne utilisant la norme ISO 8601 | chaîne convertie en datetime après la norme ISO 8601 | datetime converti en chaîne à l’aide de la norme ISO 8601 | chaîne convertie en datetime après la norme ISO 8601 | datetime converti en chaîne à l’aide de la norme ISO 8601 |
| bit (niveau de compatibilité 1.2 et versions ultérieures) | la chaîne « true », « false » ou « null » est convertie en valeur entière 1, 0 ou null correspondant | converti en chaîne « true » ou « false » | Boolean : « false » est converti en 0, « true » est converti en 1 | Boolean : valeur booléenne | Boolean : false est converti en 0, true est converti en 1 | booléen |
| enregistrer | N/A | Non pris en charge, la chaîne « Record » est sortie | Objet JSON | Objet JSON | Type d’enregistrement Avro | Type d’enregistrement Avro |
| tableau | N/A | Non pris en charge, la chaîne « Array » est sortie | Objet JSON | Objet JSON | Type d’enregistrement Avro | Type d’enregistrement Avro |
Remarque
Aucune conversion de type de données n’est nécessaire pour Parquet.
Mappage de type lors de l’écriture dans des magasins de données structurés
| Type de données | SQL | Power BI | Base de données Azure Cosmos DB | PostgreSQL | Explorateur de données Azure |
|---|---|---|---|---|---|
| bigint | bigint, int, smallint, tinyint, all string types (ntext, nvarchar, char, ...) | oui | numérique : entier | bigint Si le type de colonne est smallint ou integer, l’erreur « format de données binaires incorrect » se produit. |
dynamique, int, long |
| flotter | float, real, decimal, numeric, all string types ( ntext, nvarchar, char, ...) | oui | nombre : fraction | double précision, numérique. Limité à 1,78E+308 Si le type de colonne est réel, l’erreur « format de données binaires incorrect » se produit. |
dynamique, réelle, double |
| nvarchar(max) | Tous les types de chaînes (ntext, nvarchar, char, uniqueidentifier...) | oui | ficelle | caractère variable, texte | dynamique, chaîne |
| datetime | datetime, datetime2, datetimeoffset, tous les types de chaînes ( ntext, nvarchar, char, ...) | oui | datetime converti en chaîne à l’aide de la norme ISO 8601 | timestamptz pour l’horodatage UTC, timestamp sinon | dynamic, string, datetime |
| bit (niveau de compatibilité 1.2 et versions ultérieures) | bigint, int, smallint, tinyint, bit, tous les types de chaînes (ntext, nvarchar, char, ...) | oui | booléen : 1 est converti en true, 0 converti en false | mors | dynamic, bool |
| enregistrer | Non pris en charge, la chaîne « Record » est sortie | Non pris en charge, la chaîne « Record » est sortie | Objet JSON | Non prise en charge | dynamic, bool, long, datetime, byte array, real, double, string |
| tableau | Non pris en charge, la chaîne « Array » est sortie | Non pris en charge, la chaîne « Array » est sortie | Objet JSON | Non prise en charge | dynamique, chaîne |