Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

항공편 센서의 메타데이터와 관측값 분리

Pipeline Builder에서 센서 측정 데이터로 두 출력을 만듭니다. 하나는 센서 객체를 뒷받침하는 데이터셋이며 센서당 한 행을 가집니다. 다른 하나는 각 센서의 모든 관측을 담는 시계열 동기화입니다.

입력 데이터

센서 데이터셋을 파이프라인에 추가한 상태에서 시작합니다. 한 행에는 특정 항공편의 한 시각에 측정한 여러 값이 들어 있습니다.

열자료형용도
timestampTimestamp측정 시각
flight_idStringFlight의 기본 키와 일치하는 항공편 ID
headingDouble방향
altitudeDouble고도
speedDouble속도
latitudeDouble위도
longitudeDouble경도
vertical_speedDouble수직 속도
flight_titleString사람이 읽을 항공편 제목

변환을 설명할 때 사용하는 가상 항공편은 flight_id가 flight-a, flight_title이 Example flight A입니다. 다음 두 시각의 측정값을 사용합니다.

timestampheadingaltitudespeedlatitudelongitudevertical_speed
2023-01-11T23:00:00Z211.0134.0114.040.78354-73.87231-320.0
2023-01-11T23:00:01Z211.0155.0135.040.78354-73.87231-320.0

관측값과 센서 메타데이터 준비

Unpivot

시계열 동기화는 다음 필드를 필요로 합니다.

필드자료형과 조건
Series IDString. TSP가 참조하는 ID와 일치해야 함
TimeTimestamp 또는 Long. Long이면 시간 단위를 설정
ValueInteger, Float, Double 또는 String. String은 범주형이며 시계열마다 고유 값이 최대 10,000개

Unpivot에서 heading, altitude, speed, latitude, longitude와 vertical_speed를 선택합니다. 열 이름의 출력은 series_name, 값의 출력은 series_value로 지정합니다. 여섯 입력 열은 모두 Double이므로 출력도 같은 숫자형으로 구성할 수 있습니다.

timestamp, flight_id와 flight_title은 각 관측에 남습니다. 예를 들어 첫 시각의 altitude와 speed는 다음 두 행으로 바뀝니다. 나머지 네 측정값도 각각 한 행이 됩니다.

series_nameseries_valuetimestampflight_idflight_title
altitude134.02023-01-11T23:00:00Zflight-aExample flight A
speed114.02023-01-11T23:00:00Zflight-aExample flight A

시계열 ID

Concatenate strings로 series_name, 밑줄 구분자와 flight_id를 결합합니다. 출력 열은 flight_sensor_series_id입니다.

고도 관측에는 altitude_flight-a, 속도 관측에는 speed_flight-a가 들어갑니다. 같은 항공편의 같은 측정 항목은 관측 시각이 달라도 같은 ID를 사용합니다.

Filter에서 series_value가 null이 아닌 행을 남깁니다. timestamp와 flight_id는 유효한 입력이어야 합니다.

단위 메타데이터

입력에 단위가 있으면 그 열을 사용합니다. 단위가 없는 경우 Add data에서 Enter data manually를 선택하여 다음 두 String 열을 가진 데이터셋을 만듭니다. units는 표시할 문자열입니다.

series_nameunits
altitudeft
speedmph
latitudelat
longitudelon
vertical_speedft/min
headingdeg

관측 데이터가 왼쪽 입력이 되도록 Left join을 만들고 series_name으로 연결합니다. 왼쪽 열은 모두 선택하고 오른쪽에서는 units만 추가합니다. 단위 표는 측정 이름마다 한 행을 가집니다.

예를 들어 altitude의 두 관측에는 ft, speed의 두 관측에는 mph가 붙습니다. 이 조인은 값을 다른 단위로 환산하지 않습니다.

센서마다 내부 보간 방식을 정해야 한다면 같은 방식으로 메타데이터 열을 추가할 수 있습니다. 내부 보간은 인접한 관측 사이의 값을 추정하는 방식이며 Quiver 같은 앱이 센서 속성에서 이 설정을 읽습니다. 이 예제에는 별도 보간 열이 필요하지 않습니다. 허용 값은 보간 설정에서 확인할 수 있습니다.

센서 객체의 기반 데이터셋

단위를 붙인 관측 데이터에서 새 분기를 만듭니다. 이 분기만 센서당 한 행으로 줄입니다.

센서마다 한 행 유지

Drop duplicates에서 flight_sensor_series_id를 기준으로 중복을 제거합니다. altitude_flight-a와 speed_flight-a는 서로 다른 센서입니다. 같은 센서의 flight_id, series_name, units와 flight_title은 일관되어 있어야 합니다. 선택된 행의 timestamp와 series_value는 뒤에서 제거하므로 센서 객체의 대표 측정값으로 사용하지 않습니다.

기본 키와 제목

Hash sha256 변환으로 flight_sensor_series_id를 해시하여 unique_sensor_flight_id 열을 만듭니다. 이 일반 String 속성을 기본 키로 사용하고 TSP 참조 속성과 분리합니다.

Concatenate strings에서 series_name에 Title case를 적용한 값, 공백을 포함한 sensor for 문자열과 flight_title을 결합하여 title을 만듭니다. 가상 예제의 제목은 Altitude sensor for Example flight A와 Speed sensor for Example flight A가 됩니다.

객체 행에 필요한 열만 유지

series_value, timestamp와 flight_title을 제거합니다. flight_id는 Flight와 연결하는 외래 키이므로 남깁니다. TSP는 flight_sensor_series_id를 통해 별도 동기화의 관측값을 찾습니다.

완성된 기반 데이터의 고도 센서 행은 다음과 같습니다.

{
  "title": "Altitude sensor for Example flight A",
  "unique_sensor_flight_id": "5de61466302fc36383291768c20740c4d55f1c621097ee48c73b3588afdcb65b",
  "flight_sensor_series_id": "altitude_flight-a",
  "series_name": "altitude",
  "flight_id": "flight-a",
  "units": "ft"
}

Add output에서 Add dataset을 선택해 이 결과를 저장합니다. 예제 데이터셋 이름은 [Example] Sensors입니다. 이후 변환 스키마를 바꾸면 출력 데이터셋 스키마에도 변경 내용을 반영합니다.

관측값의 시계열 동기화

이 분기는 중복 제거와 열 삭제 이전의 관측 데이터에서 시작합니다. 센서 객체용 분기에서 시작하면 여러 관측과 timestamp, series_value를 이미 잃었으므로 시계열을 만들 수 없습니다.

Select columns로 flight_sensor_series_id, timestamp와 series_value를 남깁니다. altitude와 speed를 포함하여 여섯 측정 항목의 관측이 같은 출력에 들어갑니다.

가상 예제 중 고도와 속도의 관측은 다음과 같습니다.

flight_sensor_series_idseries_valuetimestamp
altitude_flight-a134.02023-01-11T23:00:00Z
altitude_flight-a155.02023-01-11T23:00:01Z
speed_flight-a114.02023-01-11T23:00:00Z
speed_flight-a135.02023-01-11T23:00:01Z

오른쪽 출력 패널의 Add에서 Time series sync를 선택합니다.

동기화 설정입력 열
Series IDflight_sensor_series_id
Timetimestamp
Valueseries_value

동기화 이름을 정하고 파이프라인을 저장 및 빌드합니다. 두 출력은 파이프라인과 같은 폴더에 만들어집니다. 이어서 Flight Sensor 객체 유형에 기반 데이터셋과 동기화를 연결합니다.