#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