운송 관리 데이터 템플릿
운송 관리 데이터 템플릿
- 수집 권장 속성
- 추적할 주요 활동
- 데이터 추출 안내
운송 관리 속성
| 이름 | 설명 | ||
|---|---|---|---|
| 운송 건 ShipmentId | 개별 운송 건을 식별하는 고유 ID로, 관련된 모든 운송 활동을 추적하는 기본 케이스 ID로 사용됩니다. | ||
| 설명 Shipment ID는 송하인에서 수하인까지 이루어지는 개별 화물 이동을 고유하게 식별합니다. 프로세스 분석의 기준이 되는 이 속성을 사용하면 계획, 예약, 픽업, 운송, 배송, 청구 등 관련 이벤트를 하나의 케이스로 묶을 수 있습니다. process mining에서 Shipment ID별 이벤트를 분석하면 운송 전 과정을 확인할 수 있습니다. 전체 처리 시간, 정시 배송 성과, 운송 건당 비용과 같은 주요 지표를 계산해 프로세스 효율성과 고객 서비스 수준을 파악하는 데 활용합니다. 중요한 이유 모든 프로세스 단계를 연결하는 기본 Case ID로, 개별 운송 건의 전체 여정을 분석할 수 있습니다. 확보 방법 Oracle Transportation Management의 기본 키로, 일반적으로 운송 또는 주문 관리 테이블에서 확인할 수 있습니다. 구체적인 테이블 및 필드 이름은 OTM 문서를 참조하세요. 예시 SH-0012345SH-0012346SH-0012347 | |||
| 이벤트 시각 EventTime | 특정 운송 활동이나 이벤트가 발생한 정확한 날짜와 시간입니다. | ||
| 설명 '운송사 배정'이나 '배송 증빙 접수'와 같은 활동이 시스템에 기록된 정확한 시각입니다. 각 운송 건의 이벤트 순서를 정하는 기준이 되므로 process mining에 필수적입니다. 시간 기반 분석은 타임스탬프의 정확성에 크게 좌우됩니다. 활동 간 처리 시간과 프로세스 소요 시간을 계산하고, 지연을 파악하며, 서비스 수준 협약에 따른 성과를 평가하는 데 사용합니다. 이벤트 시각을 분석하면 프로세스에서 시간이 지체되는 구간을 찾을 수 있습니다. 중요한 이유 이벤트 순서를 시간순으로 정렬하고 처리 시간과 지연 등 모든 성과 지표를 계산하는 데 필요한 타임스탬프입니다. 확보 방법 OTM의 이벤트 추적 테이블이나 상태 이력 테이블에 있는 이벤트 타임스탬프 필드에서 가져옵니다. 예시 2023-10-26T08:00:00Z2023-10-27T14:30:00Z2023-10-28T09:15:00Z | |||
| 활동명 ActivityName | 운송 프로세스에서 특정 운송 건에 발생한 이벤트 또는 이정표의 이름입니다. | ||
| 설명 이 속성은 '운송 계획 수립', '화물 픽업', '화물 배송 완료'와 같이 운송 프로세스의 개별 단계를 나타냅니다. 각 활동은 운송 건의 완료를 향해 진행되는 별도의 비즈니스 이벤트입니다. 활동의 순서와 소요 시간을 분석하는 것은 process mining의 기본입니다. 실제 프로세스 흐름을 파악하고 단계 사이의 병목을 찾아 표준 운영 절차 준수 여부를 측정할 수 있습니다. 활동 흐름의 차이를 분석하면 예외, 재작업 또는 최적 경로에서 벗어난 사례를 확인할 수 있습니다. 중요한 이유 프로세스 맵에 단계를 정의해 운송 여정과 병목, 이탈 경로를 시각화하고 분석할 수 있습니다. 확보 방법 Oracle Transportation Management의 이벤트 추적 테이블이나 상태 변경 로그에서 가져옵니다. 이벤트 코드와 설명을 결합해 활동명을 구성할 수 있습니다. 예시 운송 계획 수립화물 픽업통관 완료화물 배송 완료 | |||
| 요청 배송일 RequestedDeliveryDate | 고객이 요청했거나 서비스 수준 협약(SLA) 목표로 합의한 배송 날짜와 시간입니다. | ||
| 설명 운송 건의 목표 배송 시각을 나타냅니다. 고객과 약속한 기준이며 정시 배송 성과를 측정하는 주요 기준으로 사용됩니다. process mining에서는 이 날짜를 실제 배송 시각('화물 배송 완료' 활동)과 비교해 정시 또는 지연 여부를 판단합니다. On-Time Delivery Rate KPI와 Delivery Performance Overview 대시보드의 기준이 됩니다. 차이를 분석하면 반복적으로 발생하는 지연 원인을 파악하고 고객 만족도를 높일 수 있습니다. 중요한 이유 고객 만족도와 운영 성과에 중요한 KPI인 정시 배송 성과를 측정하는 기준입니다. 확보 방법 일반적으로 OTM의 주문 또는 운송 건 수준에 저장되며, 배송 날짜나 예약 관련 필드에서 확인할 수 있습니다. 예시 2023-11-15T17:00:00Z2023-11-20T12:00:00Z2023-11-22T09:00:00Z | |||
| 운송 비용 ShipmentCost | 운송 건의 총 운송비 또는 화물 운송에 부과된 금액입니다. | ||
| 설명 운송사 요금, 유류 할증료, 기타 부대 비용을 포함한 운송 건의 총비용입니다. 운송 프로세스의 재무 성과를 측정하는 주요 지표입니다. 운송 비용을 분석하면 Average Carrier Cost per Shipment KPI를 계산할 수 있습니다. 운송사, 경로, 운송 수단, 운송 유형별로 구분해 비용 절감 기회를 찾을 수 있습니다. Freight Bill Discrepancy Analysis에서 계획 비용과 실제 비용을 비교할 때도 사용합니다. 중요한 이유 운송 지출을 분석하고 비용 절감 기회를 찾으며 프로세스 비효율이 재무에 미치는 영향을 측정하는 데 필요한 데이터를 제공합니다. 확보 방법 일반적으로 OTM의 운송 건 재무 또는 원가 정보에 있으며, 운임 산정 및 정산 후 입력되는 경우가 많습니다. 예시 250.751200.00545.50 | |||
| 운송 수단 TransportationMode | 운송 건에 사용된 운송 방식입니다. 트럭, 철도, 해상, 항공 등이 있습니다. | ||
| 설명 운송 수단별로 운송 건을 분류하는 속성입니다. 일반적인 운송 수단에는 FTL(Full Truckload), LTL(Less Than Truckload), 해상, 항공, 철도가 있습니다. 운송 건의 기본 특성으로 비용, 운송 시간, 복잡성에 영향을 줍니다. 분석에서는 운송 수단을 주요 구분 기준으로 활용합니다. 운송 수단별 프로세스 성과와 비용을 비교할 수 있습니다. 예를 들어 운송 중 지연이 잦거나 마일당 비용이 높은 운송 수단을 파악해 물류 네트워크에 관한 전략적 의사결정을 지원합니다. 중요한 이유 트럭, 항공, 해상, 철도 등 운송 수단별로 성과와 비용을 구분해 분석할 수 있습니다. 확보 방법 OTM의 운송 건 수준에서 사용하는 표준 속성으로, 전용 'mode' 또는 'transport type' 필드에서 확인할 수 있습니다. 예시 FTLLTL해상AIR | |||
| 운송사명 CarrierName | 운송 건을 담당하는 운송사 또는 서비스 제공업체의 이름입니다. | ||
| 설명 화물 운송을 수행하도록 배정된 물류 파트너를 나타냅니다. 주요 화물 운송사, 지역 배송업체, 해운사 등이 해당합니다. 운송사별 성과 분석은 운송 process mining의 주요 목적 중 하나입니다. 이 속성으로 운송 건을 구분해 정시 배송률, 운송 건당 비용, 운송 시간, 지연이나 청구 불일치 빈도 등을 비교할 수 있습니다. 이러한 인사이트는 운송사 선정, 계약 협상, 성과 관리에 활용됩니다. 중요한 이유 운송사별 성과를 비교해 운송사 선정과 협상, 비용 절감 방안을 검토할 수 있습니다. 확보 방법 OTM의 운송 세부 정보에서 확인할 수 있으며, 배정된 운송사 또는 서비스 제공업체 레코드와 연결됩니다. 운송 및 서비스 제공업체 관련 테이블에 저장될 수 있습니다. 예시 FedEx FreightUPS Supply Chain SolutionsMaersk LineKnight-Swift Transportation | |||
| 지연 사유 DelayReason | 운송 진행이 지연된 원인을 설명하는 코드 또는 설명입니다. | ||
| 설명 운송이 지연되면 '기상', '통관 보류', '항만 혼잡', '기계 고장' 등 지연 사유를 이 속성에 기록합니다. 운송사 업데이트나 OTM 수동 입력을 통해 정보를 수집합니다. 이 속성은 배송 지연의 근본 원인을 분석하는 데 필요합니다. 지연 사유를 분류하고 건수를 집계하면 공급망에서 반복되는 문제를 파악할 수 있습니다. 특정 경로에 더 신뢰할 수 있는 운송사를 선정하거나 통관 서류를 개선하는 등 원인에 맞는 개선 활동을 추진할 수 있습니다. 중요한 이유 배송 지연의 근본 원인을 파악해 반복되는 문제를 줄이고 정시 배송 성과를 개선할 수 있습니다. 확보 방법 일반적으로 OTM의 이벤트 추적 세부 정보에 기록되며, 특정 예외 또는 지연 이벤트 코드와 연결될 수 있습니다. 예시 기상 지연세관 검사항만 혼잡교통 정체 | |||
| 경로 변경 여부 IsRerouted | 최초 예약 후 운송 경로가 변경되었는지 나타내는 플래그입니다. | ||
| 설명 운송 계획을 세우고 예약한 후 경로가 크게 변경되면 이 불리언 플래그는 'true'로 설정됩니다. 고객 요청, 예상치 못한 차질 또는 최적화 기회로 인해 경로가 변경될 수 있습니다. 이 속성은 운송 경로 변경률 KPI와 경로 변경 및 긴급 운송 인사이트 대시보드에 활용됩니다. 경로 변경 빈도를 추적하면 계획 또는 실행 과정의 근본적인 문제를 파악할 수 있습니다. 운영의 불안정성과 관련 비용을 확인해 관리자가 비용과 업무 차질을 유발하는 변경을 줄일 방법을 찾도록 지원합니다. 중요한 이유 경로 변경과 같은 운영 예외의 빈도와 영향을 수치화해 계획 및 실행 프로세스의 비효율을 파악할 수 있습니다. 확보 방법 이 플래그는 이벤트 로그에서 특정 경로 변경 이벤트를 찾아내거나 최종 경로와 최초 계획 경로를 비교해 산출합니다. 예시 truefalse | |||
| 도착 국가 DestinationCountry | 운송 건의 배송 예정 국가입니다. | ||
| 설명 수하인의 위치를 기준으로 운송 건의 최종 도착 국가를 나타냅니다. 출발 국가와 함께 지리적 프로세스 분석에 사용합니다. 출발 국가와 마찬가지로 도착 국가별 분석은 무역 경로별 성과 차이를 파악하는 데 중요합니다. 통관 시간, 최종 구간 배송 성과, 지역별 운송사 효율성을 분석할 때 특히 유용합니다. 이를 바탕으로 도착 시장별 요구에 맞춰 물류 전략을 조정할 수 있습니다. 중요한 이유 특정 무역 경로의 성과를 분석하고 도착 시장의 통관, 운송사, 규정 관련 문제를 파악하는 데 중요합니다. 확보 방법 OTM 위치 마스터 데이터에 저장된 운송 목적지 또는 수하인의 주소 정보에서 가져옵니다. 예시 CANFRAJPNBRA | |||
| 사용자 이름 UserName | 특정 활동을 수행했거나 해당 활동을 담당하는 사용자의 이름 또는 ID입니다. | ||
| 설명 이 속성은 '운송 계획 완료' 또는 '운송업체 배정'과 같은 특정 이벤트를 실행한 사용자 또는 시스템 에이전트를 식별합니다. 이를 통해 책임 소재와 프로세스에 참여한 리소스를 파악할 수 있습니다. process mining에서 사용자별 활동을 분석하면 업무량 분포와 교육 필요성을 파악하고 사용자나 팀의 성과를 비교할 수 있습니다. 또한 수동으로 수행한 활동과 시스템이 자동으로 실행한 활동을 구분하는 데 활용할 수 있습니다. 중요한 이유 책임 소재를 명확히 하고 사용자 또는 팀별 업무량과 성과를 분석할 수 있습니다. 확보 방법 OTM의 이력 또는 로그 테이블에서 상태 변경이나 이벤트와 연결된 사용자 ID 필드(예: INSERT_USER)를 가져옵니다. 예시 JSMITHLOGISTICS_PLANNER_ASYSTEM_AUTO | |||
| 소스 시스템 SourceSystem | 이벤트 데이터의 출처를 나타냅니다. 예를 들어 Oracle Transportation Management가 있습니다. | ||
| 설명 데이터가 생성된 소스 애플리케이션을 나타냅니다. 복잡한 물류 환경에서는 OTM, 창고 관리 시스템(WMS), EDI를 통해 연결된 운송사 시스템 또는 다른 연동 플랫폼에서 데이터가 들어올 수 있습니다. 데이터 거버넌스, 품질 평가, 문제 해결을 위해 소스 시스템을 파악해야 합니다. 데이터의 맥락을 이해하고 세부 수준이나 최신성의 차이가 발생한 이유를 설명하는 데 도움이 됩니다. 분석할 때는 신뢰할 수 있는 특정 시스템에서 발생한 이벤트만 필터링할 수 있습니다. 중요한 이유 데이터 출처에 대한 맥락을 제공하므로 데이터 검증과 여러 시스템을 사용하는 환경의 분석에 유용합니다. 확보 방법 일반적으로 데이터 추출 과정에서 레코드의 출처를 표시하기 위해 추가하는 고정값입니다. 예시 Oracle OTMOTM CloudSAP TM | |||
| 운송 상태 ShipmentStatus | 'Planned', 'In Transit', 'Delivered'와 같이 운송 프로세스에서 현재 운송 건이 진행 중인 상태입니다. | ||
| 설명 운송 건이 전체 프로세스에서 어느 단계에 있는지 요약해 보여줍니다. 특정 시점의 이벤트인 활동과 달리 상태는 케이스의 현재 상황을 나타냅니다. process mining은 활동 흐름에 중점을 두지만, 전체 상태는 케이스를 필터링하거나 대시보드에서 맥락을 제공할 때 유용합니다. 예를 들어 'Completed' 상태인 운송 건만 분석하거나, 많은 운송 건이 비정상적으로 오랫동안 'In Transit' 상태에 머무는 이유를 조사할 수 있습니다. 중요한 이유 운송 진행 상황을 요약해 보여주므로 분석에서 케이스를 필터링하고 구분하는 데 유용합니다. 확보 방법 OTM의 기본 운송 레코드에서 확인할 수 있으며, 워크플로에서 운송 건의 현재 상태를 나타냅니다. 예시 계획 완료예약 완료운송 중배송 완료 | |||
| 운송 유형 ShipmentType | 서비스 수준, 상품 유형, 사업 부문 등을 기준으로 운송 건을 분류한 값입니다. | ||
| 설명 이 속성은 운송 건을 업무 기준에 따라 분류합니다. 예를 들어 '일반', '긴급', '위험물', '계열사 간' 등으로 구분할 수 있습니다. 이 분류를 활용하면 업무 규칙과 우선순위, 분석 관점을 유형별로 적용할 수 있습니다. process mining에서 운송 유형을 차원으로 사용하면 유형별 프로세스를 비교할 수 있습니다. 특정 유형에서 지연이 더 자주 발생하는지, 비용이 더 높은지, 표준과 다른 경로를 따르는지 확인할 수 있습니다. 이러한 인사이트를 바탕으로 운송 유형별 요구에 맞게 프로세스를 조정할 수 있습니다. 중요한 이유 업무 맥락에 따라 분석을 구분하여 운송 유형별 프로세스와 성과 수준의 차이를 파악할 수 있습니다. 확보 방법 일반적으로 OTM의 운송 건 또는 주문 레코드에서 설정할 수 있는 필드나 속성입니다. 예시 일반긴급국제 운송국내 운송 | |||
| 운임 청구서 불일치 FreightBillDiscrepancy | 운임 청구서를 감사하는 과정에서 불일치가 발견되었는지 나타내는 플래그입니다. | ||
| 설명 운송업체에서 받은 운임 청구 금액이 OTM에서 계산한 예상 비용과 다르면 이 불리언 속성은 'true'로 설정됩니다. 요율 오류, 부대 비용 또는 기타 청구 오류로 불일치가 발생할 수 있습니다. 이 속성은 운임 청구서 불일치율 KPI의 기준이 됩니다. 운송업체, 운송 경로 또는 운송 유형별로 플래그 발생 빈도를 분석하면 청구 오류의 근본 원인을 찾을 수 있습니다. 이를 통해 데이터 정확도를 높이고 감사 절차를 간소화하며 과다 지급을 방지할 수 있습니다. 중요한 이유 청구 오류가 있는 운송 건을 표시해 운임 청구서 불일치 분석을 지원하고, 과다 지급을 줄이며 재무 통제를 강화합니다. 확보 방법 일반적으로 OTM의 운임 정산 및 송장 대조 과정에서 설정되는 상태 또는 플래그입니다. 예시 truefalse | |||
| 정시 배송 여부 IsOnTimeDelivery | 요청된 배송일 또는 그 이전에 운송이 완료되었는지 나타내는 계산된 플래그입니다. | ||
| 설명 '상품 배송 완료' 활동의 타임스탬프와 '요청된 배송일'을 비교해 계산하는 불리언 속성입니다. 정시 또는 조기 배송이면 'true', 지연 배송이면 'false'입니다. 이 속성은 정시 배송률 KPI를 산출하고 배송 성과 개요 대시보드의 주요 구성 요소로 사용됩니다. 운송 건마다 정시 또는 지연 여부를 명확하게 표시하므로 배송 성과를 간편하게 필터링하고 집계해 시각화할 수 있습니다. 중요한 이유 이 계산된 플래그를 사용하면 정시 배송 KPI를 간편하게 측정하고 정시 배송과 지연 배송을 쉽게 필터링해 분석할 수 있습니다. 확보 방법 이 속성은 원천 시스템에 없습니다. 데이터 변환 과정에서 '상품 배송 완료' 활동의 타임스탬프와 'RequestedDeliveryDate' 속성을 비교해 계산합니다. 예시 truefalse | |||
| 최근 데이터 업데이트 LastDataUpdate | 이벤트 데이터가 소스 시스템에서 마지막으로 새로 고침되거나 추출된 시각입니다. | ||
| 설명 Oracle Transportation Management에서 데이터를 마지막으로 가져온 시각을 기록합니다. 비즈니스 이벤트가 발생한 시각이 아니라 분석 대상 데이터의 최신성을 나타냅니다. 이 타임스탬프는 process mining 분석 데이터가 얼마나 최신인지 파악하는 데 중요합니다. 사용자는 실시간 정보인지 특정 시점의 스냅샷인지 확인할 수 있습니다. 데이터 새로 고침 주기를 관리하고 최신 정보를 바탕으로 의사결정하는 데도 필요합니다. 중요한 이유 데이터의 최신성과 분석 기준 시점, 다음 데이터 새로 고침 예정 시점을 확인할 수 있습니다. 확보 방법 일반적으로 데이터 수집 또는 ETL 과정에서 시스템이 생성해 추가하는 타임스탬프입니다. 예시 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| 출발 국가 OriginCountry | 운송 여정이 시작되는 국가입니다. | ||
| 설명 송하인의 위치를 기준으로 운송 건의 출발 국가를 나타냅니다. 물류 분석에 사용하는 주요 지리 정보입니다. 출발 국가별로 프로세스를 분석하면 지역별 성과 차이를 파악할 수 있습니다. 예를 들어 통관 시간, 운송사 비용, 운송 기간은 출발 국가에 따라 크게 달라질 수 있습니다. 국제 물류를 관리하고 지역별 병목을 찾는 데 중요한 구분 기준입니다. 중요한 이유 운송 프로세스를 지역별로 분석해 지역별 병목, 비용, 성과 차이를 파악할 수 있습니다. 확보 방법 OTM 위치 마스터 데이터에 저장된 운송 출발지 또는 송하인의 주소 정보에서 가져옵니다. 예시 USADEUCHNMEX | |||
| 통관 대행사 CustomsAgent | 운송 건의 통관 절차를 담당하는 관세사 또는 통관 대행사입니다. | ||
| 설명 국제 운송의 경우 이 속성은 통관 서류와 절차를 담당하는 외부 대행사 또는 내부 팀을 식별합니다. 대행사의 업무 성과는 전체 운송 시간에 큰 영향을 줄 수 있습니다. 통관 대행사별 통관 소요 시간을 분석하면 대행사 간 성과를 비교할 수 있습니다. 특정 국가나 상품 유형에서 효율이 높은 대행사를 파악할 수 있습니다. 이 정보는 적합한 통관 파트너를 선정하고 성과가 낮은 대행사와 협력해 프로세스를 개선하는 데 유용합니다. 중요한 이유 통관 대행사의 성과를 측정해 효율적인 파트너를 찾고 통관 관련 지연을 줄일 수 있습니다. 확보 방법 OTM의 국제 운송 상세 정보에서 서비스 제공업체 또는 당사자 역할로 저장될 수 있습니다. 예시 Global Customs ServicesLivingston InternationalFlexport | |||
운송 관리 활동
| 활동 | 설명 | ||
|---|---|---|---|
| 결제 처리 | 운송 서비스 대금을 운송사에 지급하는 최종 활동입니다. 이 이벤트로 해당 운송 건의 재무 처리가 마무리됩니다. | ||
| 중요한 이유 이 활동은 운송 프로세스의 마지막 단계입니다. 운송사 대금 지급 처리 시간을 측정하고 운송사 관계를 효과적으로 관리하는 데 필요합니다. 확보 방법 연결된 바우처 또는 청구서의 상태가 'PAID'로 변경된 시점에서 추론합니다. 해당 데이터는 VOUCHER 또는 BILL 테이블에 있습니다. 기록 VOUCHER.VOUCHER_STATUS_ID가 'PAID'로 변경된 시각을 확인합니다. 이벤트 유형 inferred | |||
| 배송 증빙 접수 | 서명된 문서 등 배송 완료를 공식적으로 확인하는 자료를 접수하고 기록하는 단계입니다. 일반적으로 운송 건에 특정 문서 유형을 첨부해 기록합니다. | ||
| 중요한 이유 POD는 청구 및 분쟁 해결에 중요합니다. 접수 시점을 추적하면 프로세스 규정 준수를 확인하고 정산 주기를 단축할 수 있습니다. 확보 방법 명시적 이벤트로 기록하거나 운송 건에 연결된 POD 문서의 생성일을 기준으로 추론할 수 있습니다. DOCUMENT 테이블에서 POD 문서 유형을 확인합니다. 기록 운송 건과 연결된 'POD' 문서의 생성 시각을 사용합니다. 이벤트 유형 explicit | |||
| 운송 계획 수립 | 이 활동은 OTM 계획 엔진이 하나 이상의 주문 릴리스를 실행 가능한 운송 건으로 성공적으로 계획했음을 나타냅니다. 시스템에서 운송 상태를 계획 완료로 변경할 때 기록됩니다. 예를 들어 상태가 'PLANNING_PLANNED FINAL'로 바뀌는 경우입니다. | ||
| 중요한 이유 수요 단계와 실행 단계를 구분하는 주요 이정표입니다. 이 활동까지 걸리는 시간을 분석하면 계획 효율성과 엔진 성능의 병목을 파악할 수 있습니다. 확보 방법 SHIPMENT 테이블에 있는 Shipment 객체의 상태 이력에서 추론합니다. 계획 완료를 나타내는 상태로 변경된 시점을 확인합니다. 기록 SHIPMENT.SHIPMENT_STATUS_VALUE_GID가 'Planned' 상태로 변경된 시각을 확인합니다. 이벤트 유형 inferred | |||
| 운송 요청 접수 | 이 활동은 시스템에 운송 수요가 등록되는 시점을 나타내며, 일반적으로 Order Release로 생성됩니다. Oracle Transportation Management에서 새 Order Release 레코드가 생성될 때 이벤트가 기록되며, 이는 최초 운송 수요를 의미합니다. | ||
| 중요한 이유 프로세스의 시작점인 이 활동은 전체 처리 시간을 측정하고 수요 패턴을 파악하는 데 중요합니다. 요청부터 계획까지 걸리는 시간을 분석할 수 있습니다. 확보 방법 ORDER_RELEASE 테이블의 Order Release 레코드 생성 시각에서 확인할 수 있는 명시적 이벤트입니다. INSERT_DATE 또는 생성일을 나타내는 특정 필드를 사용할 수 있습니다. 기록 ORDER_RELEASE 테이블에 있는 Order Release의 생성 시각을 사용합니다. 이벤트 유형 explicit | |||
| 화물 배송 완료 | 운송 건이 최종 목적지의 수하인에게 성공적으로 배송된 시점입니다. 운송 건의 마지막 경유지에 실제 도착 시각이 기록될 때 확인합니다. | ||
| 중요한 이유 정시 배송 성과와 전체 처리 시간을 측정하는 주요 이정표입니다. 운송 실행 프로세스의 종료를 나타냅니다. 확보 방법 해당 운송 건과 연결된 SHIPMENT_STOP 테이블의 마지막 경유지 레코드에 ACTUAL_ARRIVAL 필드가 입력된 것을 확인해 추론합니다. 기록 해당 운송 건의 SHIPMENT_STOP 테이블에서 마지막 레코드의 ACTUAL_ARRIVAL 시각을 사용합니다. 이벤트 유형 inferred | |||
| 화물 픽업 | 운송사가 출발지에서 화물을 인수해 실제 운송이 시작되는 시점입니다. 운송 건의 첫 번째 경유지 상태가 'DEPARTED'로 표시될 때 이벤트가 기록됩니다. | ||
| 중요한 이유 운송 중 단계의 시작을 나타내는 주요 이정표입니다. 운송사의 픽업 성과와 실제 운송 시간을 추적하는 데 필요합니다. 확보 방법 SHIPMENT_STOP 테이블에서 첫 번째 경유지의 상태가 'DEPARTED'로 변경된 시점이나 픽업을 나타내는 운송 상태 이벤트를 추적해 추론합니다. 기록 해당 운송 건의 SHIPMENT_STOP 테이블에서 첫 번째 레코드의 ACTUAL_DEPARTURE 시각을 사용합니다. 이벤트 유형 inferred | |||
| 배송 예약 일정 등록 | 수하인과 배송 날짜 및 시간을 정한 시점입니다. 운송 건의 마지막 경유지에 등록된 예약 정보를 통해 이벤트를 기록합니다. | ||
| 중요한 이유 최종 배송을 조율하는 주요 단계입니다. 도착부터 예정된 배송까지 걸리는 시간을 분석하면 라스트마일 운영의 병목을 파악할 수 있습니다. 확보 방법 SHIPMENT_STOP 테이블에서 운송 건의 마지막 경유지(배송 장소)에 예약 날짜와 시간 필드가 입력된 것을 확인해 추론합니다. 기록 배송 경유지의 예약 필드가 처음 입력된 시각을 사용합니다. 이벤트 유형 inferred | |||
| 운송 예약 확정 | 운송 요청이 수락된 후 운송사와 예약을 공식적으로 확정하는 단계입니다. 일반적으로 운송 상태가 'SECURE RESOURCES_BOOKED' 또는 이에 해당하는 상태로 변경될 때 기록됩니다. | ||
| 중요한 이유 운송사의 이행 약속을 확인하고 운송 건을 실행 단계로 공식 전환하는 활동입니다. Shipment Planning Cycle Time KPI를 측정하는 데 중요한 단계입니다. 확보 방법 SHIPMENT 테이블의 Shipment 객체 상태 변경에서 추론합니다. 운송사 배정 후 상태가 확정 또는 예약 완료로 바뀌는 시점을 추적합니다. 기록 SHIPMENT.SHIPMENT_STATUS_VALUE_GID가 'Booked' 상태로 변경된 시각을 확인합니다. 이벤트 유형 inferred | |||
| 운송 중 | 화물을 픽업해 목적지로 운송하기 시작한 상태를 나타냅니다. 특정 시점의 단일 이벤트는 아니며, '화물 픽업' 활동 직후부터 이 상태가 시작된 것으로 기록합니다. | ||
| 중요한 이유 운송 단계의 시작을 나타내며, 배송 진행 상황을 모니터링하고 운송 중 지연을 파악하는 데 중요합니다. In-Transit Delay Hotspots 대시보드의 기본 데이터로 활용됩니다. 확보 방법 '화물 픽업'과 같은 이벤트입니다. 다만 프로세스 모델에서는 새 단계의 시작을 나타내기 위해 별도 활동으로 표시하는 경우가 많습니다. 첫 번째 경유지의 출발 시각을 기준으로 산출합니다. 기록 '화물 픽업'과 동일하게 첫 번째 SHIPMENT_STOP의 ACTUAL_DEPARTURE 시각을 사용합니다. 이벤트 유형 inferred | |||
| 운송 취소 | 계획 수립 후 운송이 취소되어 프로세스가 조기에 종료된 상태입니다. Shipment 객체의 상태가 'cancelled'로 변경될 때 기록합니다. | ||
| 중요한 이유 취소를 추적하면 프로세스 예외와 실패 원인을 파악할 수 있습니다. 수요 변경이나 계획 오류 등 취소 사유를 확인하는 데 도움이 됩니다. 확보 방법 SHIPMENT 테이블에 있는 Shipment 객체의 상태 이력에서 추론합니다. 'PLANNING_CANCELED'와 같은 상태로 변경된 시점을 확인합니다. 기록 SHIPMENT.SHIPMENT_STATUS_VALUE_GID가 'Cancelled' 상태로 변경된 시각을 확인합니다. 이벤트 유형 inferred | |||
| 운송비 청구서 감사 완료 | 운송사의 청구서를 운송 정보와 대조해 검증하는 운송비 청구 감사가 완료된 시점입니다. 운송 건의 청구 상태가 'VOUCHER_AUDITED' 또는 이에 해당하는 상태로 변경될 때 기록합니다. | ||
| 중요한 이유 감사는 재무 관리와 청구 불일치 파악에 중요합니다. 이 활동을 분석하면 감사부터 지급까지의 프로세스를 간소화하고 Freight Bill Discrepancy Rate KPI를 관리할 수 있습니다. 확보 방법 운송 건과 연결된 Bill 객체의 상태 변경에서 추론합니다. BILL 테이블에서 감사 완료와 관련된 상태 업데이트를 확인합니다. 기록 BILL.BILL_STATUS_VALUE_GID가 'Audited' 상태로 변경된 시각을 확인합니다. 이벤트 유형 inferred | |||
| 운송사 배정 | 운송 요청이 특정 운송사에 전달되고 수락된 시점입니다. 운송 요청 상태가 'TENDER_ACCEPTED' 또는 이에 해당하는 상태로 변경된 것을 확인해 기록합니다. | ||
| 중요한 이유 이 활동을 추적하면 운송사 선정 및 운송 요청 프로세스의 효율성을 분석할 수 있습니다. 여기서 지연되면 운송이 시작되기도 전에 전체 일정에 큰 영향을 줄 수 있습니다. 확보 방법 SHIPMENT_TENDER 테이블의 상태 이력에서 운송사가 요청을 수락한 시각을 확인해 추론합니다. 기록 운송 요청 이력에서 상태가 'TENDER_ACCEPTED'로 변경된 시각을 사용합니다. 이벤트 유형 inferred | |||
| 통관 완료 | 국제 운송에서 화물이 국경이나 항만의 통관 절차를 통과한 시점입니다. 일반적으로 특정 운송 이벤트나 상태 업데이트를 통해 기록합니다. | ||
| 중요한 이유 통관은 국제 물류에서 지연이 자주 발생하는 구간입니다. 이 활동을 추적하면 통관 처리 시간을 측정하고 최적화할 수 있습니다. 확보 방법 일반적으로 수동 입력 또는 연동을 통해 'Customs' 운송 이벤트로 기록합니다. SHIPMENT_STATUS 테이블에서 통관 관련 이벤트 코드를 확인합니다. 기록 SHIPMENT_STATUS 테이블에서 'Customs Cleared' 이벤트의 시각을 확인합니다. 이벤트 유형 explicit | |||
| 픽업 예약 일정 등록 | 픽업 날짜와 시간이 정해져 기록된 시점입니다. 일반적으로 운송 건의 경유지 수준에 저장된 예약 정보를 확인합니다. | ||
| 중요한 이유 예약 일정 등록은 주요 조정 단계입니다. 이를 분석하면 일정 조율의 효율성과 픽업 정시성에 미치는 영향을 파악할 수 있습니다. 확보 방법 SHIPMENT_STOP 테이블에서 운송 건의 첫 번째 경유지(픽업 장소)에 예약 날짜와 시간 필드가 입력된 것을 확인해 추론합니다. 기록 픽업 경유지의 예약 필드가 처음 입력된 시각을 사용합니다. 이벤트 유형 inferred | |||
데이터 추출 가이드
단계
- BI Publisher에 접속: Oracle Transportation Management(OTM) 애플리케이션에 로그인합니다. Business Process Automation으로 이동한 다음 Reporting을 선택하고 Report Manager를 엽니다. Oracle Business Intelligence Publisher 인터페이스가 표시됩니다.
- 데이터 모델 생성: BI Publisher에서 New를 클릭하고 Data Model을 선택합니다. 보고서의 데이터 소스를 정의할 데이터 모델 편집기가 열립니다.
- SQL 쿼리 정의: 데이터 모델 편집기의 Data Sets 다이어그램에서 더하기 아이콘을 클릭하고 SQL Query를 선택합니다. 데이터 세트 이름을 지정합니다. 예: 'OTM_Process_Mining_DS'. Data Source로 OTM 데이터베이스를 선택합니다. 이 문서의 'query' 섹션에 있는 전체 SQL 쿼리를 복사해 SQL Query 입력란에 붙여넣습니다.
- 매개변수 추가: 쿼리는 날짜 범위와 도메인 이름에 대한 매개변수(:P_START_DATE, :P_END_DATE, :P_DOMAIN_NAME)를 사용합니다. BI Publisher가 이를 자동으로 감지합니다. 날짜 매개변수의 데이터 유형을 Date로 설정하는 등 속성을 구성할 수 있습니다.
- 데이터 모델 저장: Save 아이콘을 클릭합니다. BI Publisher 카탈로그에서 저장 위치를 선택하고 'OTM Shipment Process Extraction'과 같이 알아보기 쉬운 이름을 지정한 뒤 저장합니다.
- 보고서 생성: 카탈로그로 돌아가 New를 클릭하고 Report를 선택합니다. 보고서 생성 마법사에서 'Use Data Model'을 선택한 다음 방금 저장한 데이터 모델을 찾습니다.
- 보고서 레이아웃 구성: 마법사의 안내에 따라 레이아웃을 만듭니다. 간단한 'Table' 레이아웃이면 충분합니다. 데이터 세트의 모든 열을 표로 끌어다 놓습니다. 그룹화나 집계는 하지 마세요.
- 보고서 저장: 레이아웃을 구성한 후 마지막 단계로 이동해 보고서를 저장합니다. 데이터 모델과 비슷한 이름을 지정합니다.
- 보고서 실행: 새로 만든 보고서를 엽니다. 매개변수(시작일, 종료일, 도메인 이름)를 입력하라는 메시지가 표시되면 원하는 범위를 입력합니다.
- 데이터 내보내기: 보고서가 실행되어 데이터가 표시되면 Actions 메뉴를 클릭하고 Export를 선택합니다. CSV 형식을 선택하면 이벤트 로그가 포함된 CSV 파일이 다운로드됩니다.
- 업로드 준비: 다운로드한 CSV 파일을 엽니다. 열 이름이 필수 속성인
ShipmentId,ActivityName,EventTime및 권장 속성과 일치하는지 확인합니다.EventTime열의 날짜 및 시간 형식이 일관적인지도 확인합니다. 이제 ProcessMind에 파일을 업로드할 수 있습니다.
구성
- 데이터 소스: 일반적으로 GLOGOWNER라는 이름을 사용하는 기본 OTM 운영 데이터베이스 스키마에서 쿼리를 실행해야 합니다.
- 보고서 매개변수:
P_START_DATE: 보고 기간의 시작일입니다. 형식은 'YYYY-MM-DD'입니다.P_END_DATE: 보고 기간의 종료일입니다. 형식은 'YYYY-MM-DD'입니다.P_DOMAIN_NAME: 데이터를 추출할 OTM 도메인입니다. '[Your Domain Name]'을 사용합니다.
- 날짜 범위: 초기 분석에서는 데이터 양과 성능의 균형을 위해 3~6개월의 데이터를 추출하는 것이 좋습니다. 운영 환경에서 실행할 때는 월별 또는 분기별로 나누어 추출하는 방안을 고려하세요.
- 권한: 보고서를 실행하는 OTM 사용자에게는 데이터 모델과 보고서를 생성하고 수정할 수 있는 BI PUBLISHER DATA MODEL DEVELOPER 및 BI PUBLISHER REPORT DEVELOPER 등의 역할이 필요합니다. 기반 데이터베이스 테이블에 대한 읽기 전용 권한도 필요합니다.
- 성능: 쿼리는 여러 대용량 테이블을 조인합니다. 데이터가 많은 환경에서는 시스템 성능에 미치는 영향을 줄이기 위해 사용량이 적은 시간대에 보고서를 실행하는 것이 좋습니다. 보고서를 제때 완료하려면 날짜 범위를 가능한 한 좁게 설정하세요.
샘플 쿼리 sql
WITH SHIPMENTS_BASE AS (
SELECT
S.SHIPMENT_GID AS ShipmentId,
SP.SERVPROV_NAME AS CarrierName,
S.TOTAL_ACTUAL_COST AS ShipmentCost,
TM.TRANSPORT_MODE_NAME AS TransportationMode,
(
SELECT MAX(ORL.LATE_DELIVERY_DATE)
FROM SHIPMENT_S_SHIP_UNIT SSU
JOIN S_SHIP_UNIT SU ON SSU.S_SHIP_UNIT_GID = SU.S_SHIP_UNIT_GID
JOIN ORDER_RELEASE ORL ON SU.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
WHERE SSU.SHIPMENT_GID = S.SHIPMENT_GID
) AS RequestedDeliveryDate,
S.DOMAIN_NAME
FROM SHIPMENT S
LEFT JOIN SERVPROV SP ON S.SERVPROV_GID = SP.SERVPROV_GID
LEFT JOIN TRANSPORT_MODE TM ON S.TRANSPORT_MODE_GID = TM.TRANSPORT_MODE_GID
WHERE S.INSERT_DATE BETWEEN TO_DATE(:P_START_DATE, 'YYYY-MM-DD') AND TO_DATE(:P_END_DATE, 'YYYY-MM-DD') + 1
AND S.DOMAIN_NAME = :P_DOMAIN_NAME
)
-- 1. Transportation Request Received
SELECT
SB.ShipmentId,
'Transportation Request Received' AS ActivityName,
MIN(ORL.INSERT_DATE) AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_S_SHIP_UNIT SSU ON SB.ShipmentId = SSU.SHIPMENT_GID
JOIN S_SHIP_UNIT SU ON SSU.S_SHIP_UNIT_GID = SU.S_SHIP_UNIT_GID
JOIN ORDER_RELEASE ORL ON SU.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
WHERE SB.DOMAIN_NAME = ORL.DOMAIN_NAME
GROUP BY SB.ShipmentId, SB.CarrierName, SB.RequestedDeliveryDate, SB.ShipmentCost, SB.TransportationMode
UNION ALL
-- 2. Shipment Planned
SELECT
SB.ShipmentId,
'Shipment Planned' AS ActivityName,
SS.STATUS_CHANGE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STATUS SS ON SB.ShipmentId = SS.SHIPMENT_GID
WHERE SS.STATUS_CODE_GID = 'PLANNING_PLANNED FINAL'
UNION ALL
-- 3. Carrier Assigned
SELECT
SB.ShipmentId,
'Carrier Assigned' AS ActivityName,
ST.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_TENDER ST ON SB.ShipmentId = ST.SHIPMENT_GID
WHERE ST.TENDER_STATUS_GID = 'TENDER_ACCEPTED'
UNION ALL
-- 4. Shipment Booked
SELECT
SB.ShipmentId,
'Shipment Booked' AS ActivityName,
SS.STATUS_CHANGE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STATUS SS ON SB.ShipmentId = SS.SHIPMENT_GID
WHERE SS.STATUS_CODE_GID = 'SECURE RESOURCES_BOOKED'
UNION ALL
-- 5. Pickup Appointment Scheduled
SELECT
SB.ShipmentId,
'Pickup Appointment Scheduled' AS ActivityName,
SST.APPOINTMENT_START_TIME AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.APPOINTMENT_START_TIME IS NOT NULL
UNION ALL
-- 6. Goods Picked Up
SELECT
SB.ShipmentId,
'Goods Picked Up' AS ActivityName,
SST.ACTUAL_DEPARTURE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.ACTUAL_DEPARTURE_DATE IS NOT NULL
UNION ALL
-- 7. Shipment In Transit
SELECT
SB.ShipmentId,
'Shipment In Transit' AS ActivityName,
SST.ACTUAL_DEPARTURE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.ACTUAL_DEPARTURE_DATE IS NOT NULL
UNION ALL
-- 8. Customs Cleared
SELECT
SB.ShipmentId,
'Customs Cleared' AS ActivityName,
SE.EVENT_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
SE.EVENT_REMARK_TEXT AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_EVENT SE ON SB.ShipmentId = SE.SHIPMENT_GID
WHERE SE.EVENT_CODE = '[Your Customs Cleared Event Code]'
UNION ALL
-- 9. Delivery Appointment Scheduled
SELECT
SB.ShipmentId,
'Delivery Appointment Scheduled' AS ActivityName,
SST.APPOINTMENT_START_TIME AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = (SELECT MAX(SST2.STOP_NUM) FROM SHIPMENT_STOP SST2 WHERE SST2.SHIPMENT_GID = SB.ShipmentId)
AND SST.APPOINTMENT_START_TIME IS NOT NULL
UNION ALL
-- 10. Goods Delivered
SELECT
SB.ShipmentId,
'Goods Delivered' AS ActivityName,
SST.ACTUAL_ARRIVAL_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = (SELECT MAX(SST2.STOP_NUM) FROM SHIPMENT_STOP SST2 WHERE SST2.SHIPMENT_GID = SB.ShipmentId)
AND SST.ACTUAL_ARRIVAL_DATE IS NOT NULL
UNION ALL
-- 11. Proof of Delivery Received
SELECT
SB.ShipmentId,
'Proof of Delivery Received' AS ActivityName,
SE.EVENT_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
SE.EVENT_REMARK_TEXT AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_EVENT SE ON SB.ShipmentId = SE.SHIPMENT_GID
WHERE SE.EVENT_CODE = '[Your POD Received Event Code]'
UNION ALL
-- 12. Freight Bill Audited
SELECT
SB.ShipmentId,
'Freight Bill Audited' AS ActivityName,
B.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN BILL B ON SB.ShipmentId = B.SHIPMENT_GID
WHERE B.BILL_STATUS_GID = 'VOUCHER_AUDITED'
UNION ALL
-- 13. Payment Processed
SELECT
SB.ShipmentId,
'Payment Processed' AS ActivityName,
B.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN BILL B ON SB.ShipmentId = B.SHIPMENT_GID
WHERE B.BILL_STATUS_GID = '[Your Payment Processed Bill Status]'
UNION ALL
-- 14. Shipment Cancelled
SELECT
SB.ShipmentId,
'Shipment Cancelled' AS ActivityName,
S.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT S ON SB.ShipmentId = S.SHIPMENT_GID
WHERE S.SHIPMENT_STATUS_GID = 'SHIPMENT_CANCELLED' 단계
- 데이터베이스 연결 설정: Oracle Transportation Management 데이터베이스의 읽기 전용 계정 정보와 연결 정보(호스트, 포트, 서비스 ID)를 확보합니다.
GLOGOWNER스키마에 접근할 수 있어야 합니다. - SQL 클라이언트 구성: Oracle SQL Developer, DBeaver 또는 Toad와 같은 SQL 클라이언트 도구에 앞 단계에서 확인한 데이터베이스 연결 정보를 설정합니다.
- 쿼리 준비: 이 문서에 제공된 전체 SQL 쿼리를 복사해 SQL 클라이언트의 쿼리 편집기에 붙여넣습니다.
- 쿼리 매개변수 설정: 쿼리의
WHERE절에서 자리표시자 값을 찾습니다. 추출할 데이터에 맞게[START_DATE],[END_DATE],[YOUR_DOMAIN_NAME]을 바꿔야 합니다. 예를 들어 날짜 범위를 3~6개월로 설정하고 분석할 운영 도메인을 지정합니다. - 쿼리 실행: 수정한 SQL 쿼리를 실행합니다. 날짜 범위와 시스템 규모에 따라 완료까지 몇 분 정도 걸릴 수 있습니다.
- 결과 확인: 쿼리가 완료되면 클라이언트에서 결과를 간단히 검토해 행이 반환되었는지,
ShipmentId,ActivityName,EventTime등의 주요 열에 값이 있는지 확인합니다. - CSV로 내보내기: 전체 결과를 CSV 파일로 내보냅니다. 쉼표 구분 기호, 텍스트의 큰따옴표, UTF-8 인코딩 등 표준 CSV 설정을 사용합니다.
- 열 이름 확인: 업로드하기 전에 CSV 파일의 열 이름이 필수 속성 이름인
ShipmentId,ActivityName,EventTime,CarrierName,RequestedDeliveryDate,ShipmentCost,TransportationMode,DelayReason과 정확히 일치하는지 확인합니다. - ProcessMind에 업로드: 준비한 CSV 파일을 ProcessMind에 업로드해 분석할 수 있습니다.
구성
- 데이터베이스 스키마: 이 쿼리는 일반적으로
GLOGOWNER라는 이름을 사용하는 표준 Oracle Transportation Management 데이터베이스 스키마에서 실행하도록 작성되었습니다. - 필요한 권한: 쿼리에서 참조하는 테이블에 읽기 전용으로 접근할 수 있는 데이터베이스 사용자가 필요합니다. 해당 테이블에는
SHIPMENT,SHIPMENT_STOP,ORDER_RELEASE,SHIPMENT_STATUS,SERVPROV,SHIPMENT_COST,DOCUMENT,BILL,VOUCHER가 포함됩니다. - 도메인 필터링: 멀티테넌트 OTM 환경에서는
DOMAIN_NAME으로 필터링해야 합니다. 올바른 사업체의 데이터를 추출하려면 쿼리의 자리표시자[YOUR_DOMAIN_NAME]을 설정해야 합니다. - 날짜 범위: 성능과 데이터 양을 관리하려면 시작일과 종료일을 지정해야 합니다.
SHIPMENT.INSERT_DATE와 같이 인덱스가 있는 열로 필터링하는 것이 좋습니다. 초기 분석에는 일반적으로 3~6개월의 데이터를 사용합니다. - 상태 코드 사용자 지정: 쿼리는 일반적인 기본 상태 코드(예:
PLANNING_PLANNED FINAL,TENDER_ACCEPTED)를 사용합니다. OTM 구현 환경에 따라 상태 코드가 사용자 지정되어 있을 수 있습니다. 시스템 설정에 맞게WHERE절의 값을 조정해야 할 수 있습니다.
샘플 쿼리 sql
WITH ShipmentBase AS (
SELECT s.SHIPMENT_GID, s.SERVPROV_GID, s.LATE_DELIVERY_DATE, s.TRANSPORT_MODE_GID, sc.TotalShipmentCost
FROM GLOGOWNER.SHIPMENT s
LEFT JOIN (
SELECT sc.SHIPMENT_GID, SUM(sc.COST) as TotalShipmentCost
FROM GLOGOWNER.SHIPMENT_COST sc
GROUP BY sc.SHIPMENT_GID
) sc ON s.SHIPMENT_GID = sc.SHIPMENT_GID
WHERE s.INSERT_DATE BETWEEN TO_DATE('[START_DATE]', 'YYYY-MM-DD') AND TO_DATE('[END_DATE]', 'YYYY-MM-DD')
AND s.DOMAIN_NAME = '[YOUR_DOMAIN_NAME]'
),
OrderReleaseInfo AS (
SELECT ssu.SHIPMENT_GID, MIN(orl.INSERT_DATE) as Earliest_OR_Date
FROM GLOGOWNER.S_SHIP_UNIT ssu
JOIN GLOGOWNER.S_SHIP_UNIT_LINE ssul ON ssu.S_SHIP_UNIT_GID = ssul.S_SHIP_UNIT_GID
JOIN GLOGOWNER.ORDER_RELEASE_LINE orl ON ssul.ORDER_RELEASE_LINE_GID = orl.ORDER_RELEASE_LINE_GID
GROUP BY ssu.SHIPMENT_GID
)
-- 1. Transportation Request Received
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Transportation Request Received' AS "ActivityName",
ori.Earliest_OR_Date AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN OrderReleaseInfo ori ON sb.SHIPMENT_GID = ori.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ori.Earliest_OR_Date IS NOT NULL
UNION ALL
-- 2. Shipment Planned
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Planned' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'PLANNING_PLANNED FINAL'
UNION ALL
-- 3. Carrier Assigned
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Carrier Assigned' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'TENDER_ACCEPTED'
UNION ALL
-- 4. Shipment Booked
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Booked' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'SECURE RESOURCES_BOOKED'
UNION ALL
-- 5. Pickup Appointment Scheduled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Pickup Appointment Scheduled' AS "ActivityName",
stp.APPT_START_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.APPT_START_TIME IS NOT NULL
UNION ALL
-- 6. Goods Picked Up
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Goods Picked Up' AS "ActivityName",
stp.ACTUAL_DEPARTURE_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.ACTUAL_DEPARTURE_TIME IS NOT NULL
UNION ALL
-- 7. Shipment In Transit
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment In Transit' AS "ActivityName",
stp.ACTUAL_DEPARTURE_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.ACTUAL_DEPARTURE_TIME IS NOT NULL
UNION ALL
-- 8. Customs Cleared
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Customs Cleared' AS "ActivityName",
se.EVENT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
se.REMARK_TEXT AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_EVENT se ON sb.SHIPMENT_GID = se.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE se.EVENT_CODE_GID = '[Your Customs Cleared Event Code]'
UNION ALL
-- 9. Delivery Appointment Scheduled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Delivery Appointment Scheduled' AS "ActivityName",
stp.APPT_START_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = (SELECT MAX(s2.STOP_NUM) FROM GLOGOWNER.SHIPMENT_STOP s2 WHERE s2.SHIPMENT_GID = stp.SHIPMENT_GID)
AND stp.APPT_START_TIME IS NOT NULL
UNION ALL
-- 10. Goods Delivered
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Goods Delivered' AS "ActivityName",
stp.ACTUAL_ARRIVAL_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = (SELECT MAX(s2.STOP_NUM) FROM GLOGOWNER.SHIPMENT_STOP s2 WHERE s2.SHIPMENT_GID = stp.SHIPMENT_GID)
AND stp.ACTUAL_ARRIVAL_TIME IS NOT NULL
UNION ALL
-- 11. Proof of Delivery Received
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Proof of Delivery Received' AS "ActivityName",
d.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.DOCUMENT d ON sb.SHIPMENT_GID = d.OBJECT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE d.OBJECT_TYPE_GID = 'SHIPMENT' AND d.DOCUMENT_TYPE_GID = 'POD'
UNION ALL
-- 12. Freight Bill Audited
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Freight Bill Audited' AS "ActivityName",
b.UPDATE_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.BILL b ON sb.SHIPMENT_GID = b.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE b.APPROVAL_STATUS_GID = 'VOUCHER_AUDITED'
UNION ALL
-- 13. Payment Processed
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Payment Processed' AS "ActivityName",
v.UPDATE_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.BILL b ON sb.SHIPMENT_GID = b.SHIPMENT_GID
JOIN GLOGOWNER.VOUCHER v ON b.BILL_GID = v.BILL_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE v.VOUCHER_STATUS_GID = 'VOUCHER_PAID' -- This status may vary based on configuration
UNION ALL
-- 14. Shipment Cancelled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Cancelled' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID LIKE '%CANCELLED%'; 시작할 준비가 되셨나요?
이 템플릿을 활용해 원시 데이터를 실행 가능한 인사이트로 바꾸고 운송 프로세스를 개선하세요. 지금 최적화를 시작해 보세요.
지금 운송 관리를 최적화하세요
주기 시간을 30% 단축하고 Oracle OTM의 병목을 해소하세요.
신용카드 불필요 • 14일 무료 체험