注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

使用Pipeline Builder创建时间序列数据

您将使用本指南创建的管道将生成支持时间序列同步时间序列数据,用于与CarrierRouteAirport对象类型上的时间序列属性相关联,以创建新的时间序列对象。此管道涉及比标准从时间序列数据集到时间序列属性的映射更复杂的设置,因为我们将对非时间序列数据进行计算以生成时间序列数据。请查看我们的Pipeline Builder文档以获取有关常规管道指导的信息。

我们正在处理的航班数据集包括以下用于创建时间序列属性的列:

  • flight_id: 字符串 | 用于标识航班和数据集中每一行的唯一字符串。
  • date: date | 航班发生的日期。
  • destination_airport_id: 字符串 | 用于标识目的地机场的字符串。
  • airline_id: 字符串 | 航空承运人的ID。
  • origin_airport_id: 字符串 | 始发机场的ID。
  • dep_delay: integer | 起飞延误的分钟数。
  • arr_delay: integer | 到达延误的分钟数。
  • route_id: 字符串| 用于标识航线的唯一字符串。

本指南末尾的管道将如下所示:

最终时间序列管道概览

第一部分:生成时间序列数据

使用用于支持Flights对象类型的相同航班数据集,我们可以执行一些聚合变换并基于航班指标生成时间序列数据。请注意,如果您已经有时间序列数据从历史记录器或边缘传感器进入Foundry,则此步骤不是必需的。您可以继续生成时间序列同步

1. 对CarrierRoute对象类型应用变换

从航班数据集中,按照以下步骤应用变换。您将对CarrierRoute对象类型都执行此操作。

聚合数据

使用聚合变换按日期和对象的ID进行分组(在这种情况下,使用Route对象类型的route_id;您需要单独使用airline_idCarrier对象类型进行相同操作),并计算平均到达延误、平均起飞延误和每日航班计数。

Pipeline Builder中的聚合变换面板

聚合后,数据集应以以下模式预览:

route_iddatedaily_avg_dep_delaydaily_avg_arr_delaydaily_count_of_flights
ATL -> SFO2023-06-1233.454545454545000040.000000000000000011
ATL -> FLL2023-08-2429.727272727272000019.409090909090910022
ATL -> TVC2023-07-05-8.0000000000000000-8.00000000000000001

转换为新数据类型

要将此新数据用作时间序列,我们必须创建一个时间戳类型的列。为此,使用转换变换将date列转换为时间戳类型的列。我们还将很快应用一个反透视变换来合并daily_avg_dep_delaydaily_avg_arr_delaydaily_count_of_flights值为一个列。由于此函数要求所有值为相同的数据类型,因此我们还必须将我们的每日航班计数指标转换为双精度类型(与平均延误指标的数据类型相同)。

Pipeline Builder中的转换面板,显示了转换为时间戳和转换为双精度

反透视以合并时间序列值

由于此数据集中包含不同列中的时间序列数据,我们必须使用反透视变换将其合并为一个值列,以便数据可以匹配时间序列同步所需的模式,如下所示:

  • 系列ID: 字符串 | TSP所引用的时间戳和值对集合的系列ID,必须与TSP的系列ID匹配。
  • 时间戳: timestamplong | 测量数量的时间。
  • 值: integerfloatdouble字符串 | 在测量点的数量值。字符串类型表示分类时间序列;每个分类时间序列最多可以有127个唯一变体。

下面显示的反透视变换将daily_avg_dep_delaydaily_avg_arr_delaydaily_count_of_flights的值放入同一个series_value列中。那些原始列名输出到将在系列ID中使用的新series_name列中。

Pipeline Builder中的反透视变换面板

数据集的模式现在应如下所示:

series_nameseries_valueroute_iddate
daily_avg_dep_delay33.4545454545450000ATL -> SFO2023-06-12T00:00:00.000Z
daily_avg_arr_delay40.0000000000000000ATL -> SFO2023-06-12T00:00:00.000Z
daily_count_of_flights11.0000000000000000ATL -> SFO2023-06-12T00:00:00.000Z

拼接字符串值以创建系列ID

现在,我们可以使用拼接字符串变换来创建系列ID(关联时间序列值的标识符)。使用变换将series_name(每个传感器代表的内容)与每个对象的主键结合起来。

Pipeline Builder中的拼接字符串变换面板

series_idseries_nameseries_valueroute_iddate
CMH -> IAH_daily_avg_dep_delaydaily_avg_dep_delay33.4545454545450000ATL -> SFO2023-06-12T00:00:00.000Z
CMH -> IAH_daily_avg_arr_delaydaily_avg_arr_delay40.0000000000000000ATL -> SFO2023-06-12T00:00:00.000Z
CMH -> IAH_daily_count_of_flightsdaily_count_of_flights11.0000000000000000ATL -> SFO2023-06-12T00:00:00.000Z

选择必要的列

使用选择列变换,我们将只保留时间序列同步所需的列:series_idseries_valuedate。航班支持数据集将持有所有系列的时间序列值,无论它们测量的是什么。为airline_carrier_id列(来自航班数据集)重复此操作。

Pipeline Builder中的选择列变换面板

series_idseries_valuedate
CMH -> IAH_daily_avg_dep_delay33.45454545454500002023-06-12T00:00:00.000Z
CMH -> IAH_daily_avg_arr_delay40.00000000000000002023-06-12T00:00:00.000Z
CMH -> IAH_daily_count_of_flights11.00000000000000002023-06-12T00:00:00.000Z

2. 添加变换以聚合和生成始发和目的地机场的数据

现在,您必须为始发机场和目的地机场重复聚合和转换变换步骤。

聚合每日每条航线的航班数量

使用聚合变换按dateorigin_airport_id进行分组,然后计算平均到达和起飞时间。每组中的总行数等于每日每条航线的航班数量。

Pipeline Builder中的聚合变换面板,用于聚合每日航班数量

dateorigin_airport_iddaily_avg_dep_delaydaily_count_of_departing_flights
2023-07-02102999.3437500000000000033
2023-09-0610431-2.33333333333333336
2023-01-1210620-7.00000000000000002

转换为时间戳

要将此新数据用作时间序列,我们必须创建一个时间戳列。为此,使用转换变换将date列转换为时间戳类型的列。

Pipeline Builder中的转换变换面板,用于将数据转换为时间戳类型

3. 创建合并始发和目的地机场的合并

使用合并面板,创建一个左合并,将目的地机场和始发机场的数据合并,结果是完整的机场数据时间序列属性。确保为您的合并设置以下配置:

  • 匹配日期和origin_airport_iddest_airport_id
  • 自动选择左侧数据集的列。
  • 作为右侧列,选择代表日均延误和每日航班计数的两列。

Pipeline Builder中的合并面板,配置为创建机场数据的左合并。

dateorigin_airport_iddaily_avg_dep_delaydaily_count_of_departing_flightsdaily_avg_arr_delaydaily_count_of_arriving_flights
2023-07-02102999.343750000000000003318.529411764705884034
2023-09-0610431-2.33333333333333336-8.00000000000000006
2023-01-1210620-7.0000000000000000256.50000000000000002

4. 应用变换以格式化数据以进行时间序列同步

重命名列

现在我们已将始发机场数据与目的地机场数据合并,我们拥有了所有机场的到达和起飞指标。我们不再需要区分始发和目的地,因此我们可以使用重命名列变换将origin_airport_id更改为简单的airport_id

Pipeline Builder中的重命名列变换面板

数据应以重命名的列如下预览:

dateairport_iddaily_avg_dep_delaydaily_count_of_departing_flightsdaily_avg_arr_delaydaily_count_of_arriving_flights
2023-07-02102999.343750000000000003318.529411764705884034
2023-09-0610431-2.33333333333333336-8.00000000000000006
2023-01-1210620-7.0000000000000000256.50000000000000002

转换为双精度

我们将很快应用一个反透视变换。此函数要求所有值为相同的数据类型,因此我们必须再次使用转换面板将我们的每日航班计数指标转换为双精度数据类型,以便它们与平均延误指标的数据类型相同。

添加航班数量

要计算完整的每日航班计数,我们将使用加法变换将每日到达航班计数和每日起飞航班计数相加,如下所示。

Pipeline Builder中的转换和加法变换面板

daily_count_of_flightsdateairport_iddaily_avg_dep_delaydaily_count_of_departing_flightsdaily_avg_arr_delaydaily_count_of_arriving_flights
772023-07-02102999.343750000000000003318.529411764705884034
122023-09-0610431-2.33333333333333336-8.00000000000000006
42023-01-1210620-7.0000000000000000256.50000000000000002

反透视以合并系列值

由于此数据集中包含不同列中的时间序列数据,我们必须使用反透视变换将其合并为一个值列,以便数据可以匹配时间序列同步所需的模式,如下所示:

  • 系列ID: 字符串 | TSP所引用的时间戳和值对集合的系列ID,必须与TSP的系列ID匹配。
  • 时间戳: timestamplong | 测量数量的时间。
  • 值: integerfloatdouble字符串 | 在测量点的数量值。字符串类型表示分类时间序列;每个分类时间序列最多可以有127个唯一变体。

下面显示的反透视变换将daily_avg_dep_delaydaily_avg_arr_delaydaily_count_of_flights的值放入同一个series_value列中。那些原始列名输出到将在系列ID中使用的新series_name列中。

Pipeline Builder中的反透视变换面板,配置为创建series_name列输出

数据应以以下模式进行预览:

series_nameseries_valuedateairport_id
daily_count_of_flights772023-07-02T00:00:00.000Z10299
daily_avg_dep_delay9.343750000000000002023-07-02T00:00:00.000Z10299
daily_avg_arr_delay18.52941176470588402023-07-02T00:00:00.000Z10299

拼接字符串值以创建系列ID

现在,我们可以使用拼接字符串变换来创建系列ID(关联时间序列值的标识符)。使用变换将series_name(每个传感器代表的内容)与Airport对象的主键(airport_id)结合起来。

Pipeline Builder中的拼接字符串面板,配置为将series_name与airport_id结合

series_idseries_nameseries_valuedateairport_id
12099_daily_count_of_flightsdaily_count_of_flights772023-07-02T00:00:00.000Z10299
12099_daily_avg_dep_delaydaily_avg_dep_delay9.343750000000000002023-07-02T00:00:00.000Z10299
12099_daily_avg_arr_delaydaily_avg_arr_delay18.52941176470588402023-07-02T00:00:00.000Z10299

选择必要的列

使用选择列变换,我们将只保留时间序列同步所需的列:series_idseries_valuedate。航班支持数据集将持有所有系列的时间序列值,无论它们测量的是什么。

Pipeline Builder中的选择列面板

结果数据集应如下所示:

series_idseries_valuedate
12099_daily_count_of_flights772023-07-02T00:00:00.000Z
12099_daily_avg_dep_delay9.343750000000000002023-07-02T00:00:00.000Z
12099_daily_avg_arr_delay18.52941176470588402023-07-02T00:00:00.000Z

5. 将时间序列属性合并到支持数据集中

创建一个类型为按名称合并的合并,使用代表CarrierRouteAirport时间序列属性的变换。

Pipeline Builder图中选择用于合并的三个时间序列属性节点

Pipeline Builder中的合并面板,配置为按名称合并三个TSP属性集

series_idseries_valuedate
12099_daily_count_of_flights772023-07-02T00:00:00.000Z
12099_daily_avg_dep_delay9.343750000000000002023-07-02T00:00:00.000Z
12099_daily_avg_arr_delay18.52941176470588402023-07-02T00:00:00.000Z
CMH -> IAH_daily_avg_dep_delay-8.00000000000000002023-03-21T00:00:00.000Z
20304_daily_avg_arr_delay9.125000000000000002023-08-13T00:00:00.000Z

第二部分:创建时间序列同步

1. 删除空值

在结果数据集上应用筛选变换以删除任何null值。

Pipeline Builder中的筛选变换面板,配置为删除空值。

2. 配置时间序列同步

现在,通过从屏幕右侧的管道输出部分选择添加来创建时间序列同步。然后,选择时间序列同步。填写新时间序列同步的必要数据,并考虑以下事项:

  • 标题“[示例] 时间序列同步 | 事件”将对应于您的Palantir文件系统文件夹中的结果资源。
  • 系列ID字段选择series_id列。
  • 时间字段中添加创建的date时间戳列。
  • series_value添加到字段中。

现在,保存并搭建管道。输出将创建在与管道相同的文件夹中。

3. 使用时间序列同步向对象类型添加属性

现在您已创建具有时间序列同步的管道,您已准备好使用同步将时间序列属性添加到RouteCarrierAirport对象类型。继续查看我们的文档以获取有关将时间序列属性添加到对象类型的更多指导。