항공편에서 일별 시계열 만들기
원래 시계열이 아닌 항공편 이벤트를 일별 지표로 집계하여 Carrier, Route와 Airport의 TSP에 공급합니다. 이미 센서나 historian에서 같은 시계열 데이터를 받고 있다면 집계 단계 대신 필요한 동기화 스키마부터 준비할 수 있습니다.
입력과 결과
| 입력 열 | 자료형 | 의미 |
|---|---|---|
| flight_id | String | 항공편 및 행의 고유 ID |
| date | Date | 항공편의 기준 일자 |
| destination_airport_id | String | 도착 공항 ID |
| airline_id | String | 항공사 ID |
| origin_airport_id | String | 출발 공항 ID |
| dep_delay | Integer | 출발 지연 분 |
| arr_delay | Integer | 도착 지연 분 |
| route_id | String | 노선 ID |
일별 기준은 입력 date를 따릅니다. 다음 표들의 수치는 가상 집계 예시입니다.
Carrier와 Route 지표
각각 date와 airline_id 또는 date와 route_id로 그룹화합니다. 평균 출발 지연, 평균 도착 지연과 행 수를 집계합니다.
| route_id | date | daily_avg_dep_delay | daily_avg_arr_delay | daily_count_of_flights |
|---|---|---|---|---|
| ATL -> SFO | 2023-06-12 | 33.454545454545 | 40.0 | 11 |
| ATL -> FLL | 2023-08-24 | 29.727272727272 | 19.409090909091 | 22 |
| ATL -> TVC | 2023-07-05 | -8.0 | -8.0 | 1 |
Cast로 date를 Timestamp로 바꿉니다. 세 지표를 같은 값 열로 묶기 위해 항공편 수도 평균 지연과 같은 Double로 변환합니다.
Unpivot에서 지표 이름을 series_name, 값을 series_value로 내보냅니다.
| series_name | series_value | route_id | date |
|---|---|---|---|
| daily_avg_dep_delay | 33.454545454545 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
| daily_avg_arr_delay | 40.0 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
| daily_count_of_flights | 11.0 | ATL -> SFO | 2023-06-12T00:00:00.000Z |
Concatenate strings로 객체 ID, 구분자 _와 series_name을 연결합니다. 예를 들어 ATL -> SFO의 출발 지연 ID는 ATL -> SFO_daily_avg_dep_delay입니다. 항공사도 airline_id에 같은 규칙을 적용합니다.
마지막에 series_id, series_value와 date만 남깁니다.
| series_id | series_value | date |
|---|---|---|
| ATL -> SFO_daily_avg_dep_delay | 33.454545454545 | 2023-06-12T00:00:00.000Z |
| ATL -> SFO_daily_avg_arr_delay | 40.0 | 2023-06-12T00:00:00.000Z |
| ATL -> SFO_daily_count_of_flights | 11.0 | 2023-06-12T00:00:00.000Z |
공항의 출발 및 도착 지표
출발 branch는 date와 origin_airport_id로 그룹화하여 dep_delay 평균과 출발 항공편 수를 구합니다. 도착 branch는 date와 destination_airport_id로 그룹화하여 arr_delay 평균과 도착 항공편 수를 구합니다. 조인 화면과 같은 이름을 쓰려면 도착 키를 dest_airport_id로 바꿉니다.
두 branch의 date를 Timestamp로 변환합니다.
두 방향 결합
출발 지표를 왼쪽, 도착 지표를 오른쪽으로 Left join합니다. date끼리, origin_airport_id와 dest_airport_id끼리 모두 일치시키고 왼쪽 열 전체 및 오른쪽의 평균 도착 지연과 도착 항공편 수를 선택합니다.
이 구성은 출발 지표에 있는 공항과 일자를 유지합니다. 도착 기록만 있는 공항과 일자도 결과에 포함해야 한다면 Full outer join을 사용하고 양쪽의 공항 ID 및 date를 합쳐 하나의 키로 정리합니다. 해당 방향의 기록이 없는 경우 건수는 0으로 계산할 수 있지만, 관측이 없는 평균 지연은 값 없음으로 구분합니다.
다음은 양쪽 지표가 있는 행의 예시입니다.
| date | origin_airport_id | daily_avg_dep_delay | departing flights | daily_avg_arr_delay | arriving flights |
|---|---|---|---|---|---|
| 2023-07-02 | 10299 | 9.34375 | 33 | 18.529411764706 | 34 |
| 2023-09-06 | 10431 | -2.333333333333 | 6 | -8.0 | 6 |
| 2023-01-12 | 10620 | -7.0 | 2 | 56.5 | 2 |
origin_airport_id를 airport_id로 바꿉니다.
숫자 형식과 합계
두 건수 열을 Double로 변환하고 Add numbers로 daily_count_of_flights를 만듭니다. 이 지표는 공항의 도착과 출발 건수를 합친 값입니다.
| airport_id | 출발 건수 | 도착 건수 | daily_count_of_flights |
|---|---|---|---|
| 10299 | 33 | 34 | 67 |
| 10431 | 6 | 6 | 12 |
| 10620 | 2 | 2 | 4 |
전체 항공편의 고유 개수를 세는 것과 공항에서 처리한 도착 및 출발 건수를 합하는 것은 다릅니다.
세 지표 daily_count_of_flights, daily_avg_dep_delay, daily_avg_arr_delay를 Unpivot하여 series_name과 series_value로 만듭니다.
airport_id, _와 series_name을 연결합니다. 10299의 합계 ID는 10299_daily_count_of_flights입니다.
series_id, series_value와 date만 남깁니다.
| series_id | series_value | date |
|---|---|---|
| 10299_daily_count_of_flights | 67.0 | 2023-07-02T00:00:00.000Z |
| 10299_daily_avg_dep_delay | 9.34375 | 2023-07-02T00:00:00.000Z |
| 10299_daily_avg_arr_delay | 18.529411764706 | 2023-07-02T00:00:00.000Z |
세 객체 유형의 값 결합
Carrier, Route와 Airport 결과를 Union by name으로 합칩니다.
세 입력의 series_id가 서로 다른 측정을 고유하게 구분해야 합니다. 서로 다른 객체 유형의 키 공간이 겹치면 유형 접두어 등을 ID 규칙에 포함하고 객체의 TSP 값에도 같은 규칙을 적용합니다.
합친 데이터에는 다음과 같이 서로 다른 객체 유형의 지표가 함께 들어갑니다.
| series_id | series_value | date |
|---|---|---|
| 10299_daily_count_of_flights | 67.0 | 2023-07-02T00:00:00.000Z |
| 10299_daily_avg_dep_delay | 9.34375 | 2023-07-02T00:00:00.000Z |
| 10299_daily_avg_arr_delay | 18.529411764706 | 2023-07-02T00:00:00.000Z |
| CMH -> IAH_daily_avg_dep_delay | -8.0 | 2023-03-21T00:00:00.000Z |
| 20304_daily_avg_arr_delay | 9.125 | 2023-08-13T00:00:00.000Z |
동기화 출력
date와 series_value가 null이 아닌 행을 남깁니다. series_id도 유효한 문자열로 생성되어 있어야 합니다.
출력 패널에서 Add의 Time series sync를 선택하고 다음과 같이 매핑합니다.
| 동기화 필드 | 입력 열 |
|---|---|
| Series ID | series_id |
| Time | date |
| Value | series_value |
리소스 이름을 정하고 파이프라인을 저장 및 빌드합니다. 생성된 출력은 파이프라인과 같은 폴더에서 찾습니다. 이어서 객체의 TSP에 같은 ID를 연결합니다.