问题标签 [amazon-timestream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
354 浏览

sql - aws Timestream:获取空间隔

我想使用 aws timestream 来跟踪用户对我们 API 的请求。在第一步中,我只是将每个请求的用户 ID 存储到 API。对于图表,我想获取用户在特定时间间隔内的请求数。此 SQL 每隔 10 分钟从用户 2 获取最近两小时内的请求:

结果是:

没有请求的时间间隔不会返回,这里是 00:00 和 23:50。有没有办法在 SQL 中使用 Count = 0 来获得这个空间隔?还是我必须编写自己的代码才能从结果集中获取所有间隔(我使用 aws PHP API)?

0 投票
0 回答
149 浏览

sql - 在 Amazon Timestream 中查询多个时区

我有一个应用程序存储来自美国各地车辆的远程信息处理。美国有多个时区,车辆可以在活动时处于活动状态并跨时区移动。我希望能够查询“昨天”并计算所有车辆已激活的所有“激活时间”。

Amazon Timestream 中的所有“时间”都作为时间戳存储在 UTC 中,因此我无法将时区偏移量添加到时间中。

原始数据:

车辆 全部小时数 时间
美国广播公司 10 2021-03-20T20:00:00 EST
美国广播公司 20 2021-03-21T10:00:00 EST
美国广播公司 30 2021-03-21T18:00:00 EST
定义 40 2021-03-21T02:00:00 EST
定义 50 2021-03-21T15:00:00 EST
定义 60 2021-03-21T20:00:00 EST

存储数据:

车辆 测量名称 测量值::双 时间
美国广播公司 全部小时数 10 2021-03-21 01:00:00
美国广播公司 全部小时数 20 2021-03-21 15:00:00
美国广播公司 全部小时数 30 2021-03-21 23:00:00
定义 全部小时数 40 2021-03-21 10:00:00
定义 全部小时数 50 2021-03-21 23:00:00
定义 全部小时数 60 2021-03-22 04:00:00

询问:

预期的:

车辆 全部小时数
美国广播公司 50
定义 150

回报:

车辆 全部小时数
美国广播公司 60
定义 90
  • 如果我在 UTC 时间查询,它将过期 5-8 小时。
  • 如果我在东部时间 (UTC+5) 进行查询,那么在加利福尼亚 (UTC+8) 运行的任何车辆都将在 4 小时内获取数据。

我如何在所有时区查询昨天而不单独查询所有时区?

0 投票
1 回答
755 浏览

javascript - 使用 Node.JS 的 AWS 时间流

我目前正在开发一个使用亚马逊时间流数据库的项目。我正在尝试使用节点从数据库中提取信息以填充仪表板,但我不知道如何将数据库链接到节点脚本。我设置了 AWS 认证,但无法连接服务器进行查询。

0 投票
1 回答
39 浏览

time-series - 在 AWS Timestream 中重放事件并摄取它们

如果时间戳超出 Memory Store 的窗口,我无法将记录提取到 AWS Timestream。因此,如果出现问题,我无法实现重播消息、处理和摄取它们的功能。有什么解决方案吗?

0 投票
2 回答
548 浏览

amazon-web-services - AWS timestream-write 收到“调用 DescribeEndpoints 操作时发生错误 (AccessDeniedException):不允许此操作。”

我正在试验适用于 python 的 AWS 开发工具包来访问 Timestream。我从存储库中尝试了他们的内部示例代码,并编写了自己的代码来创建数据库:

示例代码和我自己的代码都出现以下错误:

AccessDeniedException:调用DescribeEndpoints操作时发生错误(AccessDeniedException):不允许此操作。

我用谷歌搜索了一下,但我找不到任何关于它的信息。谢谢!

0 投票
1 回答
517 浏览

aws-iot - 如何查询物联网设备的总活跃时间?

我是 SQL 和 AWS Timestream 的新手,我想编写一个查询,该查询将为我提供设备处于活动状态的总时间。然后,我想根据设备的 kWh 额定值将其转化为能源使用量。

数据点的时间间隔不是固定的。数据看起来像这样:

时间戳 活动(布尔)
1617697080 (10h18) 错误的
1617697920 (10h32) 真的
1617698280 (10h38) false(活动 6 分钟)
1617699000 (10h50) 真的
1617699120 (10h52) false(激活 2 分钟)
等等

在上面的总活跃时间是8分钟。

我想问的问题是这样的,

  • 上个月(或其他时间段)的总活跃时间(能源使用量)
  • 过去一个月每天的总活动时间(能源使用量)

什么查询会给我这个信息并容忍可变间隔?

有两条路我正在寻找但还没有完全弄清楚,

  1. 插入数据并填充值以获得具有一致间隔的新时间流(然后就像计算值一样简单),或者
  2. 使用一些日期/时间函数来查看数据点之间的时间戳并将其活动的总时间相加。

我一直在尝试获得插入数据的查询权,但尚未成功。我正在遵循 AWS Timestream SQL 文档中的模式,但还不太了解它。

我什至不知道从哪里开始或从哪里寻找对时间戳差异求和的示例。逻辑过程是这样的,

可能的解决方案#1:插值

插值在一定范围内工作得很好,尽管它感觉对于解决方案来说有点过分了。设备的开/关分辨率为 10 秒,因此如果插值采样时间过大,数据就会开始出现偏差。这会在插值时间序列超过 10k 点时出现问题 - AWS Timestream 抛出错误“序列函数的结果不能超过 10000 个条目”。因此,在短时间内,这是可行的,但我想弄清楚一个月内的能源使用情况,那么它永远不会奏效(至少不是 10 秒的分辨率)。使用 1m 分辨率可以让我在 6 天以上的时间内工作的准确度足够高。可以在不同的日期范围内多次使用此查询来获取数据。

可能的解决方案#2:计算时间差

在应用程序中,开和关时间可能有多个“开”和多个“关”样本。可以使用 LAG 函数确定从开到关和从关到开的转换样本。起初我无法让 LAG 和 LEAD 时间函数在时间戳上工作,但它突然似乎在我没有更改某些内容的情况下工作......不知道该怎么做。然后可以使用 LEAD 来确定时间间隔。把它们放在一起看起来像这样:

然后,这将为您提供一个看起来像这样的数据的间隔(但时间戳为原生“时间戳”类型)

时间戳 活动(布尔) 时间间隔
1617697080 (10h18) 错误的 840
1617697920 (10h32) 真的 360
1617698280 (10h38) false(活动 6 分钟) 720
1617699000 (10h50) 真的 120
1617699120 (10h52) false(激活 2 分钟) 等等
等等

这很棒!几乎是我正在寻找的......但现在我无法将时间间隔(“时间戳”类型)转换为可用的东西。我需要对其进行一些基本操作以将其转换为 kWh 使用量,例如,

经过一些搅动和测试,我发现了 SQL EXTRACT(),它允许我提取天、小时、分钟和秒。所以我可以这样做:

这给了我能源使用量!

0 投票
1 回答
602 浏览

sql - AWS Timestream / Grafana 查询

我正在开发 AWS 时间流/Grafana 仪表板,但我遇到了一些问题。我在时间流中创建了数据库和表,然后在 grafana 中连接到时间流数据源。

现在我想做一个带有查询或转换的仪表板来显示公式;在我的数据库中,我有 2 个度量“A”和“B”,我想显示以下结果:(Dif(A) / Dif(B));

我阅读了文件,但没有成功。

0 投票
1 回答
658 浏览

sql - 在 SQL 语言(AWS 时间流)中 - 如何获取非按列分组的最新值?(最新的 - 表示最近的行)

我的目标是按特定字段对我的数据进行分组,并从该组的另一个字段中选择最新值。

我有下表:

我的声明如下:

我最终会得到以下行:

问题是,我需要向每一行(分组的)添加最近行的操作-所以应该是

如何实现?谢谢!

0 投票
0 回答
124 浏览

java - 如何安全地将查询参数合并到 Python 或 Java 中的 AWS TimeStream 查询中?

AWS TimeStream 开发工具包的 SQL 查询接口只接受查询字符串。似乎构建查询字符串(包括 where 子句中的任何参数值等)完全由 SDK 的用户决定,这在 Python 和 Java 等语言中并不常见。

有哪些解决方案可以安全地引用不受信任的输入值,以在具有 AWS 开发工具包的语言(例如 Python 和 Java)中用作 SQL 查询的一部分?

0 投票
1 回答
611 浏览

aws-iot - 如何有效地配置 AWS IoT 规则以将数据写入设备特定的 Timestream 数据库?

我想将 IoT 设备数据存储在 Timestream 数据库中的设备特定表中。这将允许我们仅根据特定的 IAM 或 Cognito 策略授予用户访问其特定设备数据的权限。

来自设备的数据看起来像这样,id具有时间流维度和temperature度量。

并将发布到主题

有一个 Timestream 数据库device_data,其中每个设备都有一个表,在这种情况下device_12345

现在我们可以创建一个规则,将数据从该设备推送到特定表,如下所示:

设备到时间流规则

它从确切的端点中选择相关数据。动作如下所示:

时间流规则动作

该角色配置为仅允许写入 Timestream 数据库中的特定表。可以将策略附加到设备以仅允许特定设备写入该特定 MQTT 端点(防止其他设备意外写入)。

然后可以为用户配置一个策略,只允许对该表进行读取访问,以便仅从他们的设备查询数据。

在这种情况下,必须为每个设备准备好以下内容:

  1. 将 MQTT 发布端点限制为设备端点的策略(在这种情况下devices/data/device_12345
  2. 将数据推送到正确设置特定设备端点以及特定设备数据库表的时间流的规则
  3. 允许该规则将数据写入数据库中设备特定表的 IAM 策略

现在的问题:

  1. 是否可以配置一个通用规则来查看设备 ID 或有关 IoT 事物的一些信息并根据此信息将其推送到正确的数据库表?例如,规则是否可以查看id维度并​​在此基础上将其推送到正确的表格?
  2. 如果我们必须为数以百万计的设备中的每一个都设置这些项目,如何实现自动化?
  3. 拥有数百万个特定于设备的策略和规则是最有效/最有效的方法吗?