0

我想解析一個長逗號分隔值的字符串,如「lat,long,distance ,, elevation」。字符串實際上很長,我需要獲取每個值並將獲取的值保存在dynamodb的不同列中。我正在使用dyamodbv2規則。函數我發現可能是有用的是substring(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個左右的領域!

此外,值可以是不同的長度,並且一些字段可以是空的,例如示例字符串中的「距離,高度」之間的值。這些空值可以被忽略。

就我而言,我無法存儲和創建自定義功能,也無法使用http://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html中提供的其他功能。

回答

0

在軌,您可以將基於分隔字符串數組 例

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

然後你可以使用

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

您也可以將這些字符串轉換爲整數或浮點數爲:

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

希望能幫到

+0

我無法使用rails,因爲我試圖在AWS IoT規則中獲取值。我只能使用AWS IoT SQL功能。 –