注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
您将使用本指南创建的管道将生成支持时间序列同步的时间序列数据,用于与Carrier
、Route
和Airport
对象类型上的时间序列属性相关联,以创建新的时间序列对象。此管道涉及比标准从时间序列数据集到时间序列属性的映射更复杂的设置,因为我们将对非时间序列数据进行计算以生成时间序列数据。请查看我们的Pipeline Builder文档以获取有关常规管道指导的信息。
我们正在处理的航班数据集包括以下用于创建时间序列属性的列:
字符串
| 用于标识航班和数据集中每一行的唯一字符串。date
| 航班发生的日期。字符串
| 用于标识目的地机场的字符串。字符串
| 航空承运人的ID。字符串
| 始发机场的ID。integer
| 起飞延误的分钟数。integer
| 到达延误的分钟数。字符串
| 用于标识航线的唯一字符串。本指南末尾的管道将如下所示:
使用用于支持Flights
对象类型的相同航班数据集,我们可以执行一些聚合变换并基于航班指标生成时间序列数据。请注意,如果您已经有时间序列数据从历史记录器或边缘传感器进入Foundry,则此步骤不是必需的。您可以继续生成时间序列同步。
Carrier
和Route
对象类型应用变换从航班数据集中,按照以下步骤应用变换。您将对Carrier
和Route
对象类型都执行此操作。
使用聚合变换按日期和对象的ID进行分组(在这种情况下,使用Route
对象类型的route_id
;您需要单独使用airline_id
对Carrier
对象类型进行相同操作),并计算平均到达延误、平均起飞延误和每日航班计数。
聚合后,数据集应以以下模式预览:
route_id | date | daily_avg_dep_delay | daily_avg_arr_delay | daily_count_of_flights |
---|---|---|---|---|
ATL -> SFO | 2023-06-12 | 33.4545454545450000 | 40.0000000000000000 | 11 |
ATL -> FLL | 2023-08-24 | 29.7272727272720000 | 19.4090909090909100 | 22 |
ATL -> TVC | 2023-07-05 | -8.0000000000000000 | -8.0000000000000000 | 1 |
要将此新数据用作时间序列,我们必须创建一个时间戳类型的列。为此,使用转换变换将date
列转换为时间戳类型的列。我们还将很快应用一个反透视变换来合并daily_avg_dep_delay
、daily_avg_arr_delay
和daily_count_of_flights
值为一个列。由于此函数要求所有值为相同的数据类型,因此我们还必须将我们的每日航班计数指标转换为双精度类型(与平均延误指标的数据类型相同)。
由于此数据集中包含不同列中的时间序列数据,我们必须使用反透视变换将其合并为一个值列,以便数据可以匹配时间序列同步所需的模式,如下所示:
字符串
| TSP所引用的时间戳和值对集合的系列ID,必须与TSP的系列ID匹配。timestamp
或long
| 测量数量的时间。integer
、float
、double
、字符串
| 在测量点的数量值。字符串类型表示分类时间序列;每个分类时间序列最多可以有127个唯一变体。下面显示的反透视变换将daily_avg_dep_delay
、daily_avg_arr_delay
和daily_count_of_flights
的值放入同一个series_value
列中。那些原始列名输出到将在系列ID中使用的新series_name
列中。
数据集的模式现在应如下所示:
series_name | series_value | route_id | date |
---|---|---|---|
daily_avg_dep_delay | 33.4545454545450000 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
daily_avg_arr_delay | 40.0000000000000000 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
daily_count_of_flights | 11.0000000000000000 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
现在,我们可以使用拼接字符串变换来创建系列ID(关联时间序列值的标识符)。使用变换将series_name
(每个传感器代表的内容)与每个对象的主键结合起来。
series_id | series_name | series_value | route_id | date |
---|---|---|---|---|
CMH -> IAH_daily_avg_dep_delay | daily_avg_dep_delay | 33.4545454545450000 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
CMH -> IAH_daily_avg_arr_delay | daily_avg_arr_delay | 40.0000000000000000 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
CMH -> IAH_daily_count_of_flights | daily_count_of_flights | 11.0000000000000000 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
使用选择列变换,我们将只保留时间序列同步所需的列:series_id
、series_value
和date
。航班支持数据集将持有所有系列的时间序列值,无论它们测量的是什么。为airline_carrier_id
列(来自航班数据集)重复此操作。
series_id | series_value | date |
---|---|---|
CMH -> IAH_daily_avg_dep_delay | 33.4545454545450000 | 2023-06-12T00:00:00.000Z |
CMH -> IAH_daily_avg_arr_delay | 40.0000000000000000 | 2023-06-12T00:00:00.000Z |
CMH -> IAH_daily_count_of_flights | 11.0000000000000000 | 2023-06-12T00:00:00.000Z |
现在,您必须为始发机场和目的地机场重复聚合和转换变换步骤。
使用聚合变换按date
和origin_airport_id
进行分组,然后计算平均到达和起飞时间。每组中的总行数等于每日每条航线的航班数量。
date | origin_airport_id | daily_avg_dep_delay | daily_count_of_departing_flights |
---|---|---|---|
2023-07-02 | 10299 | 9.34375000000000000 | 33 |
2023-09-06 | 10431 | -2.3333333333333333 | 6 |
2023-01-12 | 10620 | -7.0000000000000000 | 2 |
要将此新数据用作时间序列,我们必须创建一个时间戳列。为此,使用转换变换将date
列转换为时间戳类型的列。
使用合并面板,创建一个左合并,将目的地机场和始发机场的数据合并,结果是完整的机场数据时间序列属性。确保为您的合并设置以下配置:
origin_airport_id
到dest_airport_id
。date | origin_airport_id | daily_avg_dep_delay | daily_count_of_departing_flights | daily_avg_arr_delay | daily_count_of_arriving_flights |
---|---|---|---|---|---|
2023-07-02 | 10299 | 9.34375000000000000 | 33 | 18.5294117647058840 | 34 |
2023-09-06 | 10431 | -2.3333333333333333 | 6 | -8.0000000000000000 | 6 |
2023-01-12 | 10620 | -7.0000000000000000 | 2 | 56.5000000000000000 | 2 |
现在我们已将始发机场数据与目的地机场数据合并,我们拥有了所有机场的到达和起飞指标。我们不再需要区分始发和目的地,因此我们可以使用重命名列变换将origin_airport_id
更改为简单的airport_id
。
数据应以重命名的列如下预览:
date | airport_id | daily_avg_dep_delay | daily_count_of_departing_flights | daily_avg_arr_delay | daily_count_of_arriving_flights |
---|---|---|---|---|---|
2023-07-02 | 10299 | 9.34375000000000000 | 33 | 18.5294117647058840 | 34 |
2023-09-06 | 10431 | -2.3333333333333333 | 6 | -8.0000000000000000 | 6 |
2023-01-12 | 10620 | -7.0000000000000000 | 2 | 56.5000000000000000 | 2 |
我们将很快应用一个反透视变换。此函数要求所有值为相同的数据类型,因此我们必须再次使用转换面板将我们的每日航班计数指标转换为双精度数据类型,以便它们与平均延误指标的数据类型相同。
要计算完整的每日航班计数,我们将使用加法变换将每日到达航班计数和每日起飞航班计数相加,如下所示。
daily_count_of_flights | date | airport_id | daily_avg_dep_delay | daily_count_of_departing_flights | daily_avg_arr_delay | daily_count_of_arriving_flights |
---|---|---|---|---|---|---|
77 | 2023-07-02 | 10299 | 9.34375000000000000 | 33 | 18.5294117647058840 | 34 |
12 | 2023-09-06 | 10431 | -2.3333333333333333 | 6 | -8.0000000000000000 | 6 |
4 | 2023-01-12 | 10620 | -7.0000000000000000 | 2 | 56.5000000000000000 | 2 |
由于此数据集中包含不同列中的时间序列数据,我们必须使用反透视变换将其合并为一个值列,以便数据可以匹配时间序列同步所需的模式,如下所示:
字符串
| TSP所引用的时间戳和值对集合的系列ID,必须与TSP的系列ID匹配。timestamp
或long
| 测量数量的时间。integer
、float
、double
、字符串
| 在测量点的数量值。字符串类型表示分类时间序列;每个分类时间序列最多可以有127个唯一变体。下面显示的反透视变换将daily_avg_dep_delay
、daily_avg_arr_delay
和daily_count_of_flights
的值放入同一个series_value
列中。那些原始列名输出到将在系列ID中使用的新series_name
列中。
数据应以以下模式进行预览:
series_name | series_value | date | airport_id |
---|---|---|---|
daily_count_of_flights | 77 | 2023-07-02T00:00:00.000Z | 10299 |
daily_avg_dep_delay | 9.34375000000000000 | 2023-07-02T00:00:00.000Z | 10299 |
daily_avg_arr_delay | 18.5294117647058840 | 2023-07-02T00:00:00.000Z | 10299 |
现在,我们可以使用拼接字符串变换来创建系列ID(关联时间序列值的标识符)。使用变换将series_name
(每个传感器代表的内容)与Airport
对象的主键(airport_id
)结合起来。
series_id | series_name | series_value | date | airport_id |
---|---|---|---|---|
12099_daily_count_of_flights | daily_count_of_flights | 77 | 2023-07-02T00:00:00.000Z | 10299 |
12099_daily_avg_dep_delay | daily_avg_dep_delay | 9.34375000000000000 | 2023-07-02T00:00:00.000Z | 10299 |
12099_daily_avg_arr_delay | daily_avg_arr_delay | 18.5294117647058840 | 2023-07-02T00:00:00.000Z | 10299 |
使用选择列变换,我们将只保留时间序列同步所需的列:series_id
、series_value
和date
。航班支持数据集将持有所有系列的时间序列值,无论它们测量的是什么。
结果数据集应如下所示:
series_id | series_value | date |
---|---|---|
12099_daily_count_of_flights | 77 | 2023-07-02T00:00:00.000Z |
12099_daily_avg_dep_delay | 9.34375000000000000 | 2023-07-02T00:00:00.000Z |
12099_daily_avg_arr_delay | 18.5294117647058840 | 2023-07-02T00:00:00.000Z |
创建一个类型为按名称合并
的合并,使用代表Carrier
、Route
和Airport
时间序列属性的变换。
series_id | series_value | date |
---|---|---|
12099_daily_count_of_flights | 77 | 2023-07-02T00:00:00.000Z |
12099_daily_avg_dep_delay | 9.34375000000000000 | 2023-07-02T00:00:00.000Z |
12099_daily_avg_arr_delay | 18.5294117647058840 | 2023-07-02T00:00:00.000Z |
CMH -> IAH_daily_avg_dep_delay | -8.0000000000000000 | 2023-03-21T00:00:00.000Z |
20304_daily_avg_arr_delay | 9.12500000000000000 | 2023-08-13T00:00:00.000Z |
在结果数据集上应用筛选变换以删除任何null
值。
现在,通过从屏幕右侧的管道输出部分选择添加来创建时间序列同步。然后,选择时间序列同步。填写新时间序列同步的必要数据,并考虑以下事项:
series_id
列。date
时间戳列。series_value
添加到值字段中。现在,保存并搭建管道。输出将创建在与管道相同的文件夹中。
现在您已创建具有时间序列同步的管道,您已准备好使用同步将时间序列属性添加到Route
、Carrier
和Airport
对象类型。继续查看我们的文档以获取有关将时间序列属性添加到对象类型的更多指导。