0

Ich versuche, eine lange Zeichenfolge mit kommagetrennten Werten wie "lat, long, distance ,, election" zu analysieren. String ist eigentlich ziemlich lang und ich muss jeden Wert abrufen und die abgerufenen Werte in verschiedenen Spalten in dynamodb speichern. Ich verwende dyamodbv2 Regel. Funktionen, die ich gefunden habe, die nützlich sein könnten, waren substring (String, Int [, Int]), Länge (String), indexof (String, String) und get().Wie analysiere ich eine Zeichenfolge mit durch Komma getrennten Werten in AWS IoT SQL?

Zum Beispiel bekomme ich Daten wie folgt aus:

{ 
    LOCATION_DATA: "lat,long,distance,,elevation" 
} 

Hier ist, was ich bisher getan haben,

//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, 
... 

Aber dies wird zu ausführlich und Bewegen zum nächsten Komma-separierte immer schwieriger . Gibt es eine Möglichkeit, kommagetrennte Werte in ein Array umzuwandeln und sie dann mit get (0), get (1) ..? Ich muss auf diese Weise ungefähr 20 Felder holen!

Die Werte können auch unterschiedlich lang sein, und einige Felder können leer sein, z. B. der Wert zwischen "Abstand ,, Höhe" in Beispielzeichenfolgen. Diese leeren Werte können ignoriert werden.

Soweit ich jetzt, gibt es keine Möglichkeit, ich kann benutzerdefinierte Funktionen speichern und erstellen, oder verwenden Sie eine andere Funktion als in http://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html zur Verfügung gestellt.

Antwort

0

In Schienen können Sie einen String in Array konvertieren basierend auf einem Separator Beispiel

LOCATION_DATA = "lat,long,distance,,elevation" 
myarray = LOCATION_DATA.split(',') 

Dann können Sie

myarray[0]="lat" 
myarray[1]="long" 
myarray[2]="distance" 
myarray[3]="" 
myarray[4]="elevation" 

Sie auch diese Strings konvertieren verwenden können, um als integer oder float:

myarray[0].to_i 
myarray[2].to_f 

Hoffnung Hilft

+0

Ich kann keine Rails verwenden, da ich versuche, Werte in der AWS IoT-Regel zu erhalten. Ich muss nur AWS IoT SQL-Funktionen verwenden. –

Verwandte Themen