ExecuteSQL → record 변환 → PutDatabaseRecord 경로에서 timestamp와 decimal의 type metadata가 보존되지 않는다.
원본 종료 기록에 Use Avro Logical Type=true로 해결했다고 명시돼 있다. 문서화된 ExecuteSQL timestamp logical type은 밀리초이므로 마이크로초 6자리를 보존하는 해법으로 확대하지 않는다.
ExecuteSQL의 Use Avro Logical Types를 true로 바꾸고 downstream Avro reader가 timestamp·decimal logical type을 유지하도록 맞춘다.
확인 수준: 원본에서 해결 확인 · 실행 절차 보강
적용 조건: <...>와 예시 DB·테이블·경로·수치는 실제 확인값으로 바꾼다. 명령과 메뉴는 참고 문서를 바탕으로 보강한 예시이며 대상 시스템에서 실행하지 않았다. 버전·원인에 따른 분기와 남은 확인 사항은 아래에 명시한다.
SELECT id, CAST(event_time AS STRING), amount
FROM db.logical_type_test
WHERE id IN ('millis_test_1', 'millis_test_2');
.001, .123, .999의 밀리초, NULL, 음수·소수 decimal을 검증한다. 대상 decimal 컬럼의 precision/scale도 원본 데이터 범위를 수용해야 한다.원본과 목적지의 밀리초·NULL·decimal 값이 일치하고 precision loss 오류가 없는지 확인한다.