数据绑定
数据绑定是项目数据库与 IoT 看板上小部件之间的桥梁。小部件的几乎每个可配置属性——其标题、值、颜色、图表系列、仪表范围——都可以由项目 TimescaleDB 中的实时数据动态驱动。本页解释如何将表列连接到小部件属性以及如何使用过滤器精炼数据。
有关数据如何到达项目数据库的宏观概述,请参阅数据处理概述。
绑定数据的两种方式
IronFlock Board Studio 支持两种基本绑定模式:
- 值引用 — 将单个标量值(列中的最新记录)绑定到小部件属性。
- 表引用 — 将整个结果集(多行)绑定到期望数组的小部件属性。
两种模式都支持过滤并提供实时更新:一旦新行到达项目数据库,绑定的小部件属性就会自动更新,无需轮询。
值引用
大多数小部件配置字段期望单个值——标题、要显示的数字、颜色、状态标签等。在小部件编辑器中,这些字段下方有一个小的数据绑定开关。
启用开关并单击该字段时,会打开一个下拉菜单,列出项目数据库中所有可用的数据。您可以:
- 从项目数据库中选择一个表;
- 选择该表中的一列绑定到属性。
示例: 您可以将仪表小部件的标题字段绑定到 machine 表的 name 列,或将数值小部件的值字段绑定到 sensor_data 表中最新的 temperature 值。
最新值
值引用始终从所选列提供最新的单个值。“最新”由必需的 tsp 列决定——项目数据库中的每个表都有一个 tsp 时间戳列,tsp 最大的行胜出。
过滤器图标
将列绑定到小部件属性时,字段下方数据开关旁边会出现一个小的过滤器图标。点击它会打开一个对话框,您可以在其中配置过滤器以缩小提取值时考虑的行。请参阅下面的过滤器配置。
表引用
某些小部件期望值数组而非标量。例如,图表小部件需要许多 (x, y) 点来绘制线条,表小部件需要许多行。
在这些地方,小部件编辑器在字段标签旁显示一个添加按钮(用于手动添加数组元素)和一个数据绑定开关。
- 手动模式: 单击添加以逐个追加具有静态值的元素。
- 数据绑定模式: 切换开关以将数组绑定到表。选择表后,每行匹配您的条件就成为数组中的一个元素。
数据开关旁的过滤器图标让您缩小返回的行以匹配您的要求——请参阅过滤器配置。
将列映射到数组元素字段
当表引用数据绑定处于活动状态时,您使用连接表中的值配置单个数组元素模板。对于折线图,元素需要 x 值和 y 值——您可以通过选择绑定表中的哪列为每个轴供给来使两者都由数据驱动。过滤结果集中的每一行随后使用该映射呈现在图表上。
同样的模式适用于任何接受数组的小部件:条形图、表、列表、热图等。
过滤器配置
过滤器缩小用于值或表引用的行。对话框中各部分按其显示顺序生效——这也是项目数据库应用它们的顺序:
1. 滚动时间窗口
配置记录如何按时间过滤:
- 滚动窗口 — 仅显示相对于现在的最近 N 分钟、小时、天等的行。
- 自定义时间窗口 — 提供开始参数和结束参数的名称。这些参数名称在运行时由日历小部件供给,允许最终用户在看板上选择时间范围。
2. 任意列过滤器
使用以下值源之一添加任意数量的列级过滤器:
3. 聚合
默认情况下,绑定返回的是原始行。将其切换为按时间聚合,项目数据库就会把选中的记录分组到时间桶中——或分组到类别中——并为每组返回一个计算值:每小时平均值、每台机器的记录数、今天的合计。
由于过滤器在这一步之前运行,它们决定了哪些记录进入每个桶。聚合在独立页面中有完整介绍:请参阅聚合与降采样。
4. 行限制
设置为小部件返回的行数的上限。限制不能超过 3000——此上限保护浏览器和项目数据库免受过大结果集的影响。
对于聚合绑定,返回的桶数改由其他因素推导得出(小部件宽度或您所选的间隔),行限制仅作为兜底保护。
所有部分共同组合:时间窗口缩小时间范围,列过滤器进一步精炼行,聚合把它们归约为每个桶一个值,行限制限制最终输出。
从 JSON 列中选择字段
项目数据库支持用于非结构化或半结构化数据的 JSON 列——设备遥测有效载荷、配置 blob、嵌套记录。
将 JSON 列绑定到小部件属性时,会出现一个额外输入,允许您指定 JSON 结构内叶字段的路径。路径使用标准的 JavaScript 对象表示法:
sensor.temperature
payload.items.0.value
metadata.location.city小部件从每条记录中提取该路径下的值。这适用于值引用(最新 JSON 记录中的叶)和表引用(每行的叶)。
摘要
- 对标量属性(标题、值、颜色)使用值引用——您获得按
tsp的最新值。 - 对数组属性(图表系列、表、列表)使用表引用——将列映射到数组元素字段。
- 使用过滤器对话框按时间窗口、列过滤器和行限制(最多 3000)精炼行。
- 当您需要计算出的数值而非记录本身时,将绑定切换为聚合——请参阅聚合与降采样。
- 使用 JSON 路径表示法深入非结构化 JSON 列。