Как сохранить данные в соответствии с секундами при непрерывном поступлении данных

#amazon-web-services #aws-lambda #amazon-dynamodb #aws-iot

#Amazon-веб-сервисы #aws-lambda #Amazon-DynamoDB #aws-iot

Вопрос:

Я новичок в AWS IoT, Amazon DynamoDB и AWS. Я получаю много данных от моего клиента MQTT. Я могу хранить их в AWS DynamoDB, но на самом деле я не хочу хранить их все. (Представьте, что в реальной жизни я получаю 10 000 данных за 1 минуту. Вам нужно будет игнорировать некоторые из них.) Например; если я получаю данные в секунду, я просто хочу сохранить данные за нечетные секунды.То же, что и это;

 1st Second -> store the data in AWS DynamoDB 
2nd Second -> dont write to Database 
3rd Second -> store the data in AWS DynamoDB 
4th Second-> dont write to Database 
....
  

Обычно так выглядит мой SQL в AWS IoT правило для хранения всех данных в AWS DynamoDB:

 SELECT *, timestamp() AS timestamp FROM 'trucks/#' 
  

Чтобы достичь своей цели, я попробовал что-то вроде этого:

 SELECT *, timestamp() AS timestamp FROM 'trucks/#' WHERE timestamp%2=1
  

что означает сохранение данных, если временная метка нечетная. Но, конечно, это не сработало.

Есть ли у вас какие-либо идеи о том, как это сделать в AWS IoT rule? Есть ли способ сделать это? Заранее спасибо!

Ответ №1:

Попробуйте это вместо:

 SELECT *, timestamp() as timestamp FROM 'iot/topic' where timestamp()%2=1
  

Комментарии:

1. Это сработало, большое спасибо! Кроме того, моя временная метка указана в миллисекундах, и мне нужно было получить 4-ю цифру из последней. Например: 160390076 9 261. Я сделал это так в SQL: SELECT *, timestamp() as timestamp FROM 'trucks4/#' where floor(((timestamp()000)/1000))%2=1 надеюсь, это имеет смысл. @Kirk