0

"lat、long、distance、elevation"のようなカンマ区切りの値で長い文字列を解析しようとしています。文字列は実際かなり長いので、私は各値をフェッチし、取得した値をdynamodbの異なる列に保存する必要があります。私はdyamodbv2ルールを使用しています。 (String、Int [、Int])、length(String)、indexof(String、String)、およびget()のような便利な機能が見つかりました。例えばAWS IoT SQLでコンマ区切りの値で文字列を解析する方法は?

私はこのようなデータを取得する:ここで

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

は、私がこれまでに行ったことある

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

しかし、これはますます難しく、あまりにも冗長と次のカンマ区切りに移動取得。コンマ区切りの値を配列に変換し、get(0)、get(1)でそれらをフェッチする方法はありますか?私はこのように約20のフィールドを取り出さなければならない!

また、値の長さはさまざまですが、例文の文字列の "distance、elevation"のようないくつかのフィールドは空でもかまいません。これらの空の値は無視できます。

これまでのところ、私はカスタム関数を格納したり作成したり、http://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.htmlで提供されている以外の関数を使用する方法はありません。レールで

答えて

0

、あなたは、セパレータ に基づいて文字列を配列に変換することができます例

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

その後、あなたはまた、として整数またはfloatにこれらの文字列を変換することができます

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

を使用することができます。

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

希望がこれを助ける

+0

AWS IoTルールで値を取得しようとしているため、レールは使用できません。 AWS IoT SQL機能を使用する必要があります。 –

関連する問題