Я пытаюсь проанализировать длинную строку со значениями, разделенными запятыми, такими как «широта, долгота, расстояние, высота». Строка на самом деле довольно длинная, и мне нужно получить каждое значение и сохранить полученные значения в разных столбцах в 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 полей!
Кроме того, значения могут иметь разную длину, а некоторые поля могут быть пустыми, например, значение между «расстоянием, высотой» в примерах строк. Эти пустые значения можно игнорировать.
Насколько я знаю, я не могу хранить и создавать пользовательские функции или использовать любые другие функции, кроме тех, что указаны в http://docs.aws.amazon.com/iot/latest/developerguide/iot.-sql-functions.html.