Amazon web services 如何在AWS IoT SQL中解析带有逗号分隔值的字符串?

Amazon web services 如何在AWS IoT SQL中解析带有逗号分隔值的字符串?,amazon-web-services,amazon-dynamodb,aws-iot,aws-sdk-ruby,Amazon Web Services,Amazon Dynamodb,Aws Iot,Aws Sdk Ruby,我试图解析一个长字符串,该字符串使用逗号分隔的值,例如“lat、long、distance、elevation”。字符串实际上相当长,我需要获取每个值并将获取的值保存在dynamodb的不同列中。我使用的是dyamodbv2规则。我发现可能有用的函数有substring(String,Int[,Int])、length(String)、indexof(String,String)和get() 例如,我得到如下数据: { LOCATION_DATA: "lat,long,distance,,e

我试图解析一个长字符串,该字符串使用逗号分隔的值,例如“lat、long、distance、elevation”。字符串实际上相当长,我需要获取每个值并将获取的值保存在dynamodb的不同列中。我使用的是dyamodbv2规则。我发现可能有用的函数有substring(String,Int[,Int])、length(String)、indexof(String,String)和get()

例如,我得到如下数据:

{
  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块地

此外,值的长度可以不同,某些字段可以为空,例如示例字符串中“距离、高程”之间的值。可以忽略这些空值


就我现在所知,我无法存储和创建自定义函数,也无法使用rails中提供的任何其他函数。

在rails中,您可以基于分隔符将字符串转换为数组 范例

然后你可以用

myarray[0]="lat"
myarray[1]="long"
myarray[2]="distance"
myarray[3]=""
myarray[4]="elevation"
您还可以将这些字符串转换为整数或浮点,如下所示:

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

希望这有帮助

我不能使用rails,因为我试图在AWS物联网规则中获取值。我只能使用AWS IoT SQL函数。
myarray[0].to_i
myarray[2].to_f