선박 위치 관측과 TSP 참조 만들기
Pipeline Builder에서 위치 관측을 시계열 형식으로 변환하고, 같은 시계열 ID를 참조하는 Ship 객체 기반 데이터셋을 만듭니다.
가상 입력
다음 데이터를 데이터셋으로 가져와 새 파이프라인에 추가합니다. ship_id는 String, timestamp는 Timestamp, longitude와 latitude는 Double로 구성합니다. 이 예제의 시각은 UTC를 기준으로 입력합니다.
| ship_id | timestamp | longitude | latitude |
|---|---|---|---|
| ship-001 | 2025-01-01T08:00:00Z | 139.7492 | 35.7607 |
| ship-001 | 2025-01-01T14:00:00Z | 140.0097 | 35.2652 |
| ship-001 | 2025-01-01T20:00:00Z | 139.5932 | 35.7231 |
| ship-002 | 2025-01-02T08:00:00Z | 135.7609 | 35.1223 |
| ship-002 | 2025-01-02T14:00:00Z | 135.9821 | 35.3055 |
| ship-002 | 2025-01-02T20:00:00Z | 136.2015 | 35.4878 |
관측값을 세로로 변환
Unpivot 변환에서 latitude와 longitude를 선택합니다. Name column은 series_name, Value column은 series_value로 지정하고 ship_id와 timestamp는 남깁니다.
Concatenate strings로 series_name과 ship_id를 이 순서대로 결합합니다. Separator는 밑줄이며 출력 열 이름은 series_id입니다.
예를 들어 첫 위치 관측은 다음 두 행이 됩니다.
| series_id | series_name | series_value | ship_id | timestamp |
|---|---|---|---|---|
| latitude_ship-001 | latitude | 35.7607 | ship-001 | 2025-01-01T08:00:00Z |
| longitude_ship-001 | longitude | 139.7492 | ship-001 | 2025-01-01T08:00:00Z |
여섯 위치 관측은 열두 시계열 관측 행으로 바뀝니다. 각 선박에 위도와 경도 시계열이 하나씩 있으므로 시계열 ID는 모두 네 개입니다.
Ship 객체의 기반 데이터셋
series_id를 만든 노드에서 객체 데이터용 분기를 추가합니다.
- Drop columns로 timestamp, series_value, series_name과 series_id를 제거하고 ship_id는 남깁니다.
- Concatenate strings에서 문자열 상수
latitude와 ship_id를 밑줄로 결합해 latitude_series_id를 만듭니다. - 별도 Concatenate strings 변환에서 문자열 상수
longitude와 ship_id를 밑줄로 결합해 longitude_series_id를 만듭니다. - Drop duplicates의 Column subset을 ship_id로 정하여 선박마다 한 행만 남깁니다. ship_id 열은 객체의 기본 키로 계속 사용합니다.
결과는 다음과 같습니다. 세 열은 모두 String입니다.
| longitude_series_id | latitude_series_id | ship_id |
|---|---|---|
| longitude_ship-001 | latitude_ship-001 | ship-001 |
| longitude_ship-002 | latitude_ship-002 | ship-002 |
이 노드에서 Add output > New dataset을 선택합니다.
이름을 cleansed-ship-information-dataset처럼 정하고 Save 후 Deploy로 데이터셋을 만듭니다.
시계열 동기화 분기
series_id를 만들었던 노드로 돌아갑니다. 시각과 관측값을 제거한 객체 데이터 분기가 아닌, 모든 관측을 가진 노드에서 새 분기를 만듭니다.
ship_id와 series_name을 제거하고 series_value를 Double로 캐스팅합니다. 이 출력에는 series_id, timestamp와 series_value가 남습니다.
마지막 노드에서 Add output > New time series sync를 선택하고 오른쪽 Pipeline Outputs를 설정합니다.
| 설정 | 열 |
|---|---|
| Series ID | series_id |
| Time | timestamp |
| Value | series_value |
Save 후 Deploy로 동기화를 만듭니다. 출력은 파이프라인과 같은 Compass 폴더에 저장됩니다.
시계열 형식의 데이터셋만 출력하고 나중에 동기화를 구성할 수도 있습니다. 여기서는 파이프라인에서 동기화를 함께 만들어 온톨로지 설정에서 바로 선택합니다.