J'essaye d'analyser une longue chaîne avec des valeurs séparées par des virgules telles que "lat, long, distance, élévation". La chaîne est en fait assez longue et j'ai besoin de récupérer chaque valeur et d'enregistrer les valeurs récupérées dans différentes colonnes dans dynamodb. J'utilise la règle dyamodbv2. Les fonctions que j'ai trouvées utiles sont substring (String, Int [, Int]), length (String), indexof (String, String) et get().Comment analyser une chaîne avec des valeurs séparées par des virgules dans AWS IoT SQL?
Par exemple j'obtenir des données comme ceci:
{
LOCATION_DATA: "lat,long,distance,,elevation"
}
Voici ce que je l'ai fait jusqu'à présent,
//first value - 0 to next comma
substring(LOCATION_DATA, 0, indexof(LOCATION_DATA, ',')) as latitude,
//second value - substring starting from last substring to next comma
substring(substring(LOCATION_DATA, indexof(LOCATION_DATA, ',') +1) ,
0,
indexof(substring(LOCATION_DATA, indexof(LOCATION_DATA, ',') +1), ',')
) as longitude,
...
Mais cela devient trop bavard et passer à côté de valeurs séparées par des virgules de plus en plus difficile . Existe-t-il un moyen de convertir les valeurs séparées par des virgules en tableau puis de les récupérer avec get (0), get (1) ..? Je dois aller chercher 20 champs de cette façon!
De même, les valeurs peuvent être de longueur variable et certains champs peuvent être vides, tels que la valeur entre "distance, élévation" dans les exemples de chaînes. Ces valeurs vides peuvent être ignorées.
Pour autant que je sache, il est impossible de stocker et de créer des fonctions personnalisées ou d'utiliser toute autre fonction que celle fournie dans http://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html.
Je ne peux pas utiliser de rails car j'essaie d'obtenir des valeurs dans la règle AWS IoT. Je dois utiliser les fonctions AWS IoT SQL uniquement. –