IoT Core Rule SQL To TimeStream

1

I have a payload of:

{"telemetry": [{"feed": "Channel 1", "reading": 52.7,"unit": "PSI"},{"feed": "Channel 2", "reading": 36.29,"unit": "PSI"},{"feed": "Channel 3", "reading": 34.7,"unit": "PSI"}]}

I have tried a couple of rules:

1st rule >SELECT get(telemetry,0).feed as feed, get(telemetry,0).reading as reading, get(telemetry,0).unit as unit FROM 'my_topic/#' but with this rule it only gives me the 1st in the array, how would i iterate through the whole array? The length of the array can vary so i cannot hard code it.

2nd rule >SELECT (SELECT VALUE feed FROM telemetry) as feed, (SELECT VALUE reading FROM telemetry) as reading, (SELECT VALUE unit FROM telemetry) as unit FROM 'my_topic/#'

Rule has action to TimeStream with dimensions:

TenantId = TenantId (Hard coded tenant id)

Feed = ${feed} and have also tried ${telemetry.feed}

1st problem: I get Errors at dimensions.1: [Dimension value can not be empty.]

2nd problem: If i keep only 1 dimension which is TenantId, it will insert but i really want "Feed" as a dimension. Moreover, I do not like the value of ["Channel 1","Channel 2","Channel 3"] as a value stored in TimeStream as well as the reading is not inserted when I use the 2nd rule. I very much prefer the 1st rule where each reading has a record.

Any help is much appreciated.

gefragt vor 2 Jahren622 Aufrufe
1 Antwort
0

Hi,

the AWS IoT Action for Amazon Timestream does not yet support this use case. I would suggest to use a Lambda function to write the data into Timestream. You can invoke the lambda function directly from a rule using a Lambda function action or you can push the data to Amazon Kinesis or Amazon SQS in order to benefit from batching multiple messages and thus reduce write costs (see https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html)

By using a Lambda function you can also benefit from multi-measure records to store the values of your measurements. You can read more about the multi-record measure in this blog post https://aws.amazon.com/blogs/database/store-and-analyze-time-series-data-with-multi-measure-records-magnetic-storage-writes-and-scheduled-queries-in-amazon-timestream/ and in the documentation.

AWS
EXPERTE
beantwortet vor 2 Jahren
  • Any idea on when this will be supported? This is a trivial use case since most payloads will contain nested objects. To route messages firstly to a Lambda function then to Timestream adds complexity & cost to the architecture, especially if you need to add buffers to prevent message loss.

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen