跳转至

Heartbeat detection(心跳检测(Heartbeat detection))

Supported in: Streaming

Detects when a record hasn't been seen for a configurable amount of time for a set of keys.

Transform categories: Other

Declared arguments

  • Dataset: Input dataset.
    Table
  • Heartbeat time unit: Unit for amount of time to wait for data for a particular key.
    Enum\
  • Heartbeat time value: Value for the amount of time to wait for data from a particular key.
    Literal\
  • Partition by columns: Set of columns to use as keys for detecting heartbeats.
    Set\>

Examples

Example 1: Base case

Description: The first record from sensor_1 at time 00:00:00 triggers an alive heartbeat detection. The second record at 00:00:05 extends the timeout but does not emit a new detection. The third record from sensor_2 at 00:00:20 advances the watermark past 00:00:15, causing sensor_1's timeout timer to fire and marking its heartbeat as missed. The sensor_2 record also triggers its own alive detection.

Argument values:

  • Dataset: ri.foundry.main.dataset.test
  • Heartbeat time unit: SECONDS
  • Heartbeat time value: 10
  • Partition by columns: {sensor_id}

Input:

row_order sensor_id temperature measurement_timestamp
3 sensor_2 19.8 2024-09-30T00:00:20
2 sensor_1 21.0 2024-09-30T00:00:05
1 sensor_1 20.5 2024-09-30T00:00:00

Output:

sensor_id alive detection_time
sensor_1 true 2024-09-30T00:00:00Z
sensor_1 false 2024-09-30T00:00:15Z
sensor_2 true 2024-09-30T00:00:20Z

Example 2: Base case

Description: Each partition key maintains independent state and timers, but all keys share the same global watermark. sensor_1 sends data at 00:00:00 and sensor_2 at 00:00:05. The record from sensor_3 at 00:00:20 advances the watermark past both timeout thresholds, causing sensor_1's timer at 00:00:10 and sensor_2's timer at 00:00:15 to fire in sequence, marking both as missed.

Argument values:

  • Dataset: ri.foundry.main.dataset.test
  • Heartbeat time unit: SECONDS
  • Heartbeat time value: 10
  • Partition by columns: {sensor_id}

Input:

row_order sensor_id temperature measurement_timestamp
3 sensor_3 22.1 2024-09-30T00:00:20
2 sensor_2 18.3 2024-09-30T00:00:05
1 sensor_1 20.5 2024-09-30T00:00:00

Output:

sensor_id alive detection_time
sensor_1 true 2024-09-30T00:00:00Z
sensor_2 true 2024-09-30T00:00:05Z
sensor_1 false 2024-09-30T00:00:10Z
sensor_2 false 2024-09-30T00:00:15Z
sensor_3 true 2024-09-30T00:00:20Z


中文翻译

心跳检测(Heartbeat detection)

支持:流式处理(Streaming)

检测在可配置的时间范围内,针对一组键(keys)是否未收到某条记录。

转换类别:其他

声明参数(Declared arguments)

  • 数据集(Dataset): 输入数据集。
    表(Table)
  • 心跳时间单位(Heartbeat time unit): 等待特定键(key)数据的时间单位。
    枚举\<天(Days), 小时(Hours), 毫秒(Milliseconds), 分钟(Minutes), 秒(Seconds), 周(Weeks)>
  • 心跳时间值(Heartbeat time value): 等待特定键(key)数据的时间数值。
    字面量\<长整型(Literal\)>
  • 分区列(Partition by columns): 用作检测心跳的键(key)的列集合。
    集合\<列\<任意类型(Set\)>>

示例(Examples)

示例1:基础情况

描述: 传感器1(sensor_1)在时间00:00:00的第一条记录触发生存心跳检测。第二条记录在00:00:05延长了超时时间,但未触发新的检测。传感器2(sensor_2)在00:00:20的第三条记录将水位线(watermark)推进到00:00:15之后,导致传感器1的超时计时器触发,并将其心跳标记为丢失。传感器2的记录也触发了自身的生存检测。

参数值:

  • 数据集(Dataset): ri.foundry.main.dataset.test
  • 心跳时间单位(Heartbeat time unit): SECONDS
  • 心跳时间值(Heartbeat time value): 10
  • 分区列(Partition by columns): {sensor_id}

输入:

row_order sensor_id temperature measurement_timestamp
3 sensor_2 19.8 2024-09-30T00:00:20
2 sensor_1 21.0 2024-09-30T00:00:05
1 sensor_1 20.5 2024-09-30T00:00:00

输出:

sensor_id alive detection_time
sensor_1 true 2024-09-30T00:00:00Z
sensor_1 false 2024-09-30T00:00:15Z
sensor_2 true 2024-09-30T00:00:20Z

示例2:基础情况

描述: 每个分区键(partition key)维护独立的状态和计时器,但所有键共享同一个全局水位线(global watermark)。传感器1在00:00:00发送数据,传感器2在00:00:05发送数据。传感器3在00:00:20的记录将水位线推进到两个超时阈值之后,导致传感器1在00:00:10的计时器和传感器2在00:00:15的计时器依次触发,将两者都标记为丢失。

参数值:

  • 数据集(Dataset): ri.foundry.main.dataset.test
  • 心跳时间单位(Heartbeat time unit): SECONDS
  • 心跳时间值(Heartbeat time value): 10
  • 分区列(Partition by columns): {sensor_id}

输入:

row_order sensor_id temperature measurement_timestamp
3 sensor_3 22.1 2024-09-30T00:00:20
2 sensor_2 18.3 2024-09-30T00:00:05
1 sensor_1 20.5 2024-09-30T00:00:00

输出:

sensor_id alive detection_time
sensor_1 true 2024-09-30T00:00:00Z
sensor_2 true 2024-09-30T00:00:05Z
sensor_1 false 2024-09-30T00:00:10Z
sensor_2 false 2024-09-30T00:00:15Z
sensor_3 true 2024-09-30T00:00:20Z