您的仓库管理数据模板
您的仓库管理数据模板
- 建议收集的属性
- 仓库运营需追踪的关键活动
- 专为 Körber WMS 量身定制的提取指南
仓库管理属性
| 名称 | 描述 | ||
|---|---|---|---|
| Event 时间 EventTime | 在源系统中记录活动或事件的精确日期和时间。 | ||
| 描述 事件时间 (Event Time) 是与每项活动关联的 timestamp,标记其发生的准确时刻。此时间数据是计算流程中不同步骤之间持续时间、周期时间和等待时间的基础。 在流程分析中,此属性用于按时间顺序排列 event、构建流程流并执行任何基于时间的分析。它对于衡量绩效的 dashboard(如周期时间分析)以及计算“平均订单端到端周期时间”等 KPI 至关重要。 为何重要 此时间戳对于事件排序、计算周期和等待时间等指标以及了解流程绩效至关重要。 获取方式 位于 Körber WMS 内的所有事务和 event log 表中,通常命名为 'CreationDate'、'Timestamp' 或 'EventDateTime' 等。 示例 2023-10-26T10:00:00Z2023-10-26T11:35:10Z2023-10-27T08:15:00Z | |||
| 仓库订单 WarehouseOrder | 仓库订单的唯一标识符,作为跟踪所有相关物流活动的主要 Case Identifier。 | ||
| 描述 仓库订单是连接特定物流请求(如收货或发货)相关所有任务的核心标识符。它允许端到端跟踪订单在仓库内的生命周期。 在流程挖掘中,按仓库订单分析可以实现流程流的可视化,帮助识别常见路径、偏差、瓶颈以及不同订单类型(如标准与加急)的整体周期。 为何重要 这是核心 Case ID,它连接了所有相关事件,从而可以针对每个特定订单进行完整的端到端仓库管理流程分析。 获取方式 此标识符通常位于 Körber WMS 的核心订单管理表中。请参阅 Körber WMS 文档了解特定的表和字段名称(如订单头)。 示例 WO-0012845WO-0012991WO-0013402 | |||
| 活动名称 ActivityName | 在仓库订单生命周期内某个时间点发生的特定事件或任务的名称。 | ||
| 描述 该属性描述了仓库管理流程中的单个步骤。每个活动代表记录在系统中的不同业务事件,并带有特定时间戳。 活动分析是流程挖掘的核心。它允许构建流程图,显示工作在仓库中的实际流动方式,从而帮助识别瓶颈、返工循环以及偏离标准操作程序的情况。 为何重要 它定义了流程的各个步骤,构成了流程图的基础,并支持对流程流、变异和瓶颈的分析。 获取方式 Körber WMS 中记录业务 event 的 event 或事务日志表。这通常源自事务代码或状态变更描述。 示例 已创建拣货任务包装完成货物已发出仓库订单已取消 | |||
| 最后数据更新 LastDataUpdate | 表示该流程数据上次刷新时间的时间戳。 | ||
| 描述 此属性指定了最近一次数据更新的日期和时间,确保用户了解流程视图的时效性。 在仪表板中,此信息对于提高透明度至关重要,帮助用户了解数据是实时的、每日的还是每周的。 为何重要 告知用户数据的及时性,这对于基于分析做出准确且相关的业务决策至关重要。 获取方式 该值在每个数据刷新周期结束时由数据管道或 ETL 工具生成并记录。 示例 2024-05-21T02:00:00Z2024-05-22T02:00:00Z | |||
| 源系统 SourceSystem | 数据提取来源系统。 | ||
| 描述 该属性标识了事件数据的来源系统(本例中为“Körber WMS”)。在多系统环境中,此字段有助于区分数据源并跟踪数据谱系。 在分析中,它提供了必要的上下文,确保数据质量,并可用于过滤特定系统的活动。 为何重要 提供关于数据来源的关键上下文,确保清晰度和可追溯性,尤其是在具有多个互连系统的环境中。 获取方式 这通常是在数据提取过程中添加的静态值,用于标识源系统。 示例 Körber WMSKörberOne | |||
| 优先级级别 PriorityLevel | 指示仓库订单的紧急程度或优先级,例如标准或加急。 | ||
| 描述 优先级是分配给仓库订单的分类,用于规定处理的紧急程度。例如,订单可能被标记为“加急”或“高优先级”。 此属性对于“加急订单分析”仪表板和“加急发货率” KPI 至关重要。它有助于了解紧急订单对整体仓库运营的影响及其相关成本,并验证其处理速度是否确实优于标准订单。 为何重要 有助于分析紧急订单的处理情况、发生频率及其对整体流程绩效和成本的影响。 获取方式 位于订单抬头数据中。查找 'Priority'、'Urgency' 或特定的运输服务水平指标等字段。 示例 标准已加急隔夜严重 | |||
| 商品 SKU ProductSKU | 正在处理的物品的库存单位 (SKU) 或物料编号。 | ||
| 描述 产品 SKU 是仓库订单中涉及的特定产品或物料的唯一标识符。 按产品 SKU 分析有助于了解某些产品是否具有更复杂或更易出错的处理流程。例如,您可能会发现易碎品的包装时间更长,或者某些 SKU 经常出现拣货差异,从而为调整存储策略或操作流程提供参考。 为何重要 支持基于特定产品分析流程绩效,揭示某些特定物品是否会导致延迟或错误。 获取方式 存在于订单行项目表中,并关联到主仓库订单抬头。常见的字段名称包括 'SKU'、'MaterialNumber' 或 'ItemCode'。 示例 SKU-847361SKU-991204SKU-103557 | |||
| 实际数量 ActualQuantity | 在任务期间实际处理或记录的物品数量。 | ||
| 描述 实际数量 (Actual Quantity) 是仓库操作员实际计数、拣选、包装或接收的单位数量。该值在任务完成后记录,有时可能因库存短缺、损坏或人为错误而与“计划数量”不同。 将此属性与“计划数量”进行对比,是“库存流程健康与准确性”dashboard 的基础。两者之间的差异是流程故障或需要调查的 data 不准确的直接指标。 为何重要 提供实物处理的真实情况,使其对于计算差异率和确保库存准确性至关重要。 获取方式 存在于事务确认或任务完成记录中。字段名称可能包括 'ActualQty'、'ConfirmedQuantity' 或 'PickedQuantity'。 示例 10491 | |||
| 用户/操作员 ID UserOperatorId | 执行活动的员工或操作员的标识符。 | ||
| 描述 该属性标识了负责执行特定任务的人员或系统用户。 此维度对于资源绩效分析至关重要,有助于了解工作量分配、识别优秀员工并发现可能需要额外培训的人员。它是“资源利用率和工作量”仪表板的基础。 为何重要 支持分析员工绩效、工作负载分布和资源效率,有助于识别培训需求和高绩效人员。 获取方式 存在于记录用户操作的事务或日志表中。查找诸如 'UserID'、'UserName'、'ExecutedBy' 或 'OperatorID' 等字段。 示例 JSMITHABOT01CDAVIS系统 | |||
| SLA 状态 SLAStatus | 根据要求的完成日期,指示订单是按时完成、逾期还是存在风险。 | ||
| 描述 SLA 状态是一个计算属性,它根据订单相对于“要求完成日期”的及时性对订单进行分类。它可以具有“准时”、“逾期”或“进行中”等值。 此属性提供了服务水平绩效的即时视图,允许快速过滤和分析所有逾期订单,以了解根本原因(如特定的瓶颈或资源问题)。这是任何关注客户满意度和运营可靠性的分析的关键要素。 为何重要 直接衡量对服务水平协议的遵守情况,便于识别逾期订单并进行根本原因分析。 获取方式 这是在数据转换层通过比较“仓库订单已完成”的时间戳与“要求完成日期”计算得出的。 示例 准时逾期进行中 | |||
| 仓库 ID WarehouseId | 活动发生地仓库或配送中心的唯一标识符。 | ||
| 描述 仓库 ID 指定了处理订单的实际位置。对于拥有多个配送中心的组织,这是分析的关键维度。 此属性允许在不同站点之间进行绩效对标。例如,您可以比较仓库 A 和仓库 B 的“平均订单端到端周期”,以发现最佳实践或特定位置的运营问题。 为何重要 支持不同物理仓库地点之间的绩效比较和基准测试,突出区域或设施特有的问题。 获取方式 这些信息通常可在订单头或站点配置表中找到,可能表示为“Plant”、“Site”或“LocationCode”。 示例 WH-NYCDC-LAXFC-DAL | |||
| 周期时间 CycleTime | 仓库订单从创建到完成的总时长。 | ||
| 描述 周期时间 (Cycle Time) 是一个计算指标,用于衡量一个 case 从第一个 event(“仓库订单已创建”)到最后一个 event(“仓库订单已完成”)的总耗时。它代表了订单的端到端处理时间。 这是流程分析中的主要关键绩效指标,直接回答了“耗时多久?”这一问题。它是“仓库订单端到端周期时间”dashboard 和“平均订单端到端周期时间”KPI 的核心指标,用于追踪整体流程健康状况并识别履行时间异常长的订单。 为何重要 这是一个关键 KPI,用于衡量仓库流程的整体效率,直接影响客户满意度和运营成本。 获取方式 该指标在流程挖掘工具中通过计算每个仓库订单的最后一个事件与第一个事件之间的时间差得出。 示例 8640017280036000 | |||
| 库存地点 StorageLocation | 仓库中的具体位置(如储位或通道),货物存储于此或从中拣选。 | ||
| 描述 该属性标识了仓库内的物理坐标(如货架或储位)。 这些数据用于“上架效率和储位使用情况”仪表板,以分析移动时间、储位利用率和存储策略的有效性。例如,它可以帮助验证高周转率物品是否存放在易于取用的位置。 为何重要 通过分析特定位置的行走时间和上架/拣选任务效率,有助于优化仓库布局和存储策略。 获取方式 存在于库存、任务或位置主数据表中。查找诸如 'BinCode'、'LocationID' 或 'StorageBin' 等字段。 示例 A1-R02-S03-B01B5-R10-S01-B04C2-BULK-05 | |||
| 所用设备 EquipmentUsed | 用于执行任务的设备(如叉车或扫描枪)的标识符。 | ||
| 描述 该属性指定了任务中使用的搬运设备 (MHE) 或技术(如叉车、扫描枪或 AGV)。 按设备分析有助于了解资源利用率、维护需求以及设备对效率的影响,从而实现对人力和机器资源的全面监控。 为何重要 支持分析设备利用率及其对任务绩效的影响,有助于优化车队管理并识别与机械相关的瓶颈。 获取方式 请参阅 Körber WMS 文档。这些 data 可能记录在任务执行记录中,尤其是当操作员登录特定设备时。 示例 FORKLIFT-08SCANNER-112AGV-03 | |||
| 承运商 Carrier | 负责订单最终交付的运输承运人。 | ||
| 描述 承运人是负责将货物从仓库运送到最终目的地的第三方物流供应商(如 FedEx、UPS、DHL)。这通常在发货计划或调度阶段分配。 按承运人分析可以揭示合作伙伴之间的绩效差异。例如,它可以帮助识别某些承运人是否与更长的备货时间或更频繁的延迟相关联,从而为承运人合同谈判和选择提供宝贵数据。 为何重要 支持对不同物流合作伙伴进行绩效分析,有助于优化物流并提高交付可靠性。 获取方式 存在于 Körber WMS 内的发运或运输规划表中。查找诸如 'CarrierCode'、'ShippingAgent' 或 'SCAC' 等字段。 示例 联邦快递UPSDHLLocal Freight Inc. | |||
| 是否存在拣货差异 IsPickingDiscrepancy | 指示实际拣货数量是否与计划数量相符的标志。 | ||
| 描述 这是一个派生的布尔属性,如果“实际数量”与“计划数量”不符,则为 true,用于指示拣货错误或库存问题。 该标志允许用户快速过滤出现差异的订单,从而简化分析。它用于计算“拣货差异率” KPI,并支持“库存流程健康与准确性”仪表板。 为何重要 提供清晰的拣货错误指标,简化了识别和量化库存准确性问题所需的分析。 获取方式 在 data 转换过程中计算。逻辑为:对于相关的拣货活动, 示例 truefalse | |||
| 活动时长 ActivityDuration | 完成特定活动所花费的总时间。 | ||
| 描述 该指标代表单个事件的处理时间。分析活动时长是查明哪些任务最耗时的关键。 这被用于“资源利用率和工作量”等仪表板中,以了解每项任务的投入,并且对于计算“平均质量检验时间”等 KPI 至关重要。 为何重要 直接衡量单个任务所花费的时间,有助于识别仓库流程中最漫长且最低效的步骤。 获取方式 这通常是在数据转换期间通过从活动的结束时间戳中减去开始时间戳来计算的。 示例 9006501200 | |||
| 结束时间 EndTime | 活动完成的时间戳(如果可用)。 | ||
| 描述 结束时间代表活动的完成时间戳。开始时间标记开始,而结束时间标记结束,从而可以直接计算单个活动的持续时间。并非所有事件都有明确的结束时间;对于许多事件,会使用下一个事件的开始时间来推断上一个事件的持续时间。 此属性对于准确计算单个任务的处理时间非常宝贵。例如,它用于通过测量从质检开始到结束的时间来确定“平均质量检验时间”。 为何重要 支持精确计算单个活动的处理时间,这对于识别低效任务和资源瓶颈至关重要。 获取方式 请参阅 Körber WMS 文档。这可能存在于事务表(与开始时间并列)或相关的状态历史表中。 示例 2023-10-26T10:15:00Z2023-10-26T11:45:20Z2023-10-27T08:30:00Z | |||
| 要求完成日期 RequestedCompletionDate | 客户或内部利益相关者要求订单完成的日期。 | ||
| 描述 这是出库订单的目标完成或发货日期,通常由 SLA 规定。它是衡量实际绩效的主要期限。 此日期对于“加急订单分析”仪表板至关重要。将“要求完成日期”与“实际完成日期”进行比较,有助于确定准时率并识别有延误风险的订单。 为何重要 为衡量准时绩效和履行服务水平协议 (SLA) 提供基准,突出显示有延迟风险的订单。 获取方式 位于订单抬头表中。常见的字段名称包括 'RequiredDeliveryDate'、'RequestedShipDate' 或 'SLA'。 示例 2023-10-28T23:59:59Z2023-11-05T23:59:59Z | |||
| 计划数量 PlannedQuantity | 在任务(如拣货或收货)中预期处理的物品数量。 | ||
| 描述 计划数量代表仓库订单指定的给定任务的目标单元数。例如,如果一个订单需要拣选 10 个特定 SKU 的单元,那么该拣选任务的计划数量就是 10。 该属性对于识别与“实际数量”相比的差异至关重要。它是计算“拣货差异率”和“库存差异率”等 KPI 的关键输入,对于维持库存准确性至关重要。 为何重要 为拣货和收货等任务的准确性衡量提供基准,从而能够检测库存差异。 获取方式 可在任务或订单行项目表中找到。查找诸如 'OrderQuantity'、'PlannedQty' 或 'ExpectedQuantity' 等字段。 示例 10501 | |||
| 订单类型 OrderType | 对仓库订单进行分类,例如入库、出库或内部转移。 | ||
| 描述 订单类型定义了仓库订单的业务目的。常见类型包括客户发货(出库)、供应商收货(入库)、库内移库(内部)或退货。 这是一个用于过滤和比较分析的强大属性。它允许您分析和比较不同类型物流操作的流程流和绩效,例如查看入库流程是否比出库流程更有效率。 为何重要 支持按订单目的进行细分分析,揭示入库接收和出库运输等流程之间的绩效差异。 获取方式 通常位于 Körber WMS 的订单头表中,请查找名为“OrderType”或“TransactionType”的字段。 示例 出库发货入库收货内部转交客户退货 | |||
仓库管理活动
| 活动 | 描述 | ||
|---|---|---|---|
| 仓库订单已创建 | 系统中最初创建的仓库订单,代表货物流动的需求。当用户或集成系统(如 ERP)创建带有时间戳的订单记录时,通常会明确记录此事件。 | ||
| 为何重要 这标志着端到端流程的开始,对于衡量总订单周期以及了解整体需求和订单量至关重要。 获取方式 当在 Körber WMS 中保存新订单记录时,这是从主仓库订单头表中的创建时间戳中捕获的。 捕获 根据仓库订单头部的创建时间戳记录。 事件类型 explicit | |||
| 仓库订单已完成 | 仓库订单在系统中关闭,表示所有相关的物理移动和操作均已完成。这通常根据订单头部的状态更改来推断。 | ||
| 为何重要 这是流程的主要终点,对于计算端到端周期时间和衡量整体流程完成率至关重要。 获取方式 根据仓库订单抬头状态变更为“完成”或“关闭”等最终状态推断得出。 捕获 根据仓库订单抬头状态变更为“已完成”的 timestamp 推断得出。 事件类型 inferred | |||
| 包装完成 | 包装过程已完成,包裹已密封并贴上标签。此事件表示订单已准备好备货和发货,并会被明确记录。 | ||
| 为何重要 这一里程碑标志着发货准备工作的最终完成,用于计算包装吞吐量并识别装货前的延迟。 获取方式 操作员执行明确的“包装完成”或“封箱”事务,从而记录运输容器的完成 timestamp。 捕获 来自“关闭容器”或“包装完成”操作的时间戳。 事件类型 explicit | |||
| 货物已从仓库拣出 | 操作员确认订单物品已从存储位置拣选。这通常通过扫描物品和位置来完成,从而减少储位库存并记录该操作。 | ||
| 为何重要 这是出库流程中的重要里程碑,允许分析拣货时间并识别拣货与包装之间潜在的延迟。 获取方式 当操作员通过 RF 设备确认拣选任务完成时记录。这会将任务状态更新为“已完成”,并带有完成 timestamp。 捕获 来自拣货任务确认操作的时间戳。 事件类型 explicit | |||
| 货物已发出 | 货物已装载,卡车从仓库出发。此事件由“确认发货”或“过账发货”操作触发,在系统中完成发货流程。 | ||
| 为何重要 这一关键里程碑标志着货物的实际发出。它通常是开票和更新客户状态的核心事件。 获取方式 执行明确的“发运确认”事务(通常与打印提单相关联)。此事务具有特定的 timestamp。 捕获 来自“确认发货”或“过账发货”操作的时间戳。 事件类型 explicit | |||
| 货物已存入仓库 | 操作员确认上架任务完成,通常通过扫描储位以及托盘或物品。此操作会明确记录移动情况并更新系统中的库存位置。 | ||
| 为何重要 这一里程碑标志着入库流程的结束,用于计算“上架周期”和“从收货到上架时间”等 KPI。 获取方式 当操作员通过 RF 设备确认上架任务完成时记录。此操作会将任务状态更新为“已完成”,并记录完成 timestamp。 捕获 来自上架任务确认操作的时间戳。 事件类型 explicit | |||
| 货物已接收并计数 | 仓库员工根据进货通知卸货、扫描并清点收到的物品。这一操作确认了特定数量的物料已正式进入仓库。 | ||
| 为何重要 这是一个关键的入库里程碑,用于计算“收货到上架时间”等 KPI,并有助于及早发现预期与实际收货数量之间的差异。 获取方式 当用户通过 RF 扫描枪或桌面事务确认收货数量时生成。此操作会将暂存位置的库存状态更新为“已接收”或“在手”。 捕获 来自收货确认操作的时间戳。 事件类型 explicit | |||
| 上架任务已创建 | WMS 为操作员创建任务,将收到的货物从备货区移至最终储位。系统逻辑会根据上架策略决定最佳目标储位。 | ||
| 为何重要 此事件标志着上架流程的开始。分析从该事件到任务完成的时间有助于衡量系统和操作员的效率。 获取方式 在任务管理或工作队列表中创建一条记录,其任务类型为“上架”,并带有相应的创建 timestamp。 捕获 根据上架任务记录的创建时间戳记录。 事件类型 explicit | |||
| 仓库订单已取消 | 仓库订单在完成前被取消,所有相关工作停止。此操作通常根据订单头部的状态更改为“已取消”来推断。 | ||
| 为何重要 代表流程的一个备选终点。分析取消有助于了解流程失败的原因,如库存短缺或客户变更。 获取方式 根据仓库订单抬头状态变更为“已取消”或“已删除”以及该变更的 timestamp 推断得出。 捕获 根据仓库订单抬头状态变更为“已取消”的 timestamp 推断得出。 事件类型 inferred | |||
| 入库交付通知已接收 | 从供应商处收到预报检通知 (ASN) 或入库交付通知。此 event 信号表明货物计划送达,便于仓库规划接收活动。它通常通过 EDI 事务或手动输入创建。 | ||
| 为何重要 此活动标志着入库计划流程的开始。分析此通知与货物到达之间的时间有助于衡量供应商绩效并计划劳动力。 获取方式 从 ASN 或入库交付记录的创建 timestamp 中获取,此类记录通常通过 EDI 接口或手动数据录入创建。 捕获 在系统中成功创建 ASN 记录时记录。 事件类型 explicit | |||
| 包装已启动 | 拣出的物品到达包装站,操作员开始包装流程。这通常根据包装站与特定出库订单相关的首次物品扫描来推断。 | ||
| 为何重要 标记包装步骤的开始。衡量此活动前的等待时间以及包装持续时间,有助于识别发货准备中的瓶颈。 获取方式 这可以是一个明确的“开始包装”操作,但通常根据包装站针对该订单进行的首次物品扫描来推断。 捕获 根据给定订单在包装站首次操作的 timestamp 推断得出。 事件类型 inferred | |||
| 已创建拣货任务 | 系统根据出库订单为操作员生成拣货任务,引导操作员到特定位置提取指定数量的物品。 | ||
| 为何重要 此事件启动了出库履行流程。分析拣货任务生成有助于了解订单处理逻辑和工作量分配。 获取方式 在 Körber WMS 的任务管理或工作队列表中创建一条任务类型为“拣货”且带有创建 timestamp 的记录。 捕获 根据拣货任务记录的创建时间戳记录。 事件类型 explicit | |||
| 已备货待运 | 包装好的纸箱或托盘从包装区移动到指定的备货区,等待承运人取货。这通常根据移库到发货位的时间戳推断得出。 | ||
| 为何重要 这有助于分析包装和最终发货之间的停留时间。停留时间过长可能表明与承运人的协调不力或码头管理效率低下。 获取方式 根据处理单元从包装工作中心到发运通道的位置变更推断得出。该移动事务包含必要的 timestamp。 捕获 根据目的地为暂存区域的库存移动事务 timestamp 推断得出。 事件类型 inferred | |||
| 已执行质量检验 | 对接收的货物执行质量控制检查,这可能涉及将物品移动到专门的 QC 区域。此活动通常从库存状态变更中推断,例如从“在手”变为“质量检查挂起”,然后再变回“无限制”。 | ||
| 为何重要 支持分析质量检查时长(这可能是一个重大的瓶颈)。它有助于追踪检查量并识别库存可用化过程中的延迟。 获取方式 可以从一系列与质量挂起相关的库存状态变更中推断。某些系统可能具有明确的质量管理事务日志。 捕获 根据库存状态变更或与质检单关联的事务日志推断得出。 事件类型 inferred | |||
| 货物已到达装卸口 | 记录承运人到达仓库收货码头的情况。这通常由门卫或收货员执行,标志着物理收货流程的开始。此事件通常根据交货单状态的变化来推断。 | ||
| 为何重要 此事件有助于衡量承运人的准时性并分析收货码头的等待时间,在卸货前识别潜在瓶颈。 获取方式 通常记录为入库单的状态更新,或者如果库场管理模块可用,则通过特定的“Check-In”操作记录。 捕获 根据入库交付记录上状态变更为“已到达”或“在装卸口”推断得出。 事件类型 inferred | |||
提取指南
步骤
- 建立数据库访问权限:获取 Körber WMS 生产数据库或副本数据库的只读凭据和连接详细信息(服务器名称、数据库名称、端口)。您需要使用 Microsoft SQL Server Management Studio (SSMS) 或 Oracle SQL Developer 等客户端工具。
- 识别核心数据表:在运行脚本之前,请与系统管理员协作,验证 Körber WMS 实施中使用的确切数据表和列名,因为它们可能会有所不同。关键表通常包括订单抬头、任务和库存事务。
- 连接至数据库:启动您的 SQL 客户端,并使用提供的凭据建立与 Körber WMS 数据库的连接。
- 加载 SQL 脚本:打开一个新的查询窗口,并复制本文档“query”部分提供的完整 SQL 脚本。
- 配置参数:在脚本顶部找到占位符变量。将
@[StartDate]、@[EndDate]和@[WarehouseId]替换为您所需的时间范围和特定的仓库标识符,以过滤 data 提取结果。 - 执行查询:运行配置好的 SQL 脚本。执行时间将取决于日期范围和系统中的 data 量。
- 查看结果:查询完成后,在 SQL 客户端中简要检查输出,确保其返回了行,并且列(
WarehouseOrder、ActivityName、EventTime等)已按预期填充。 - 导出为 CSV:将整个结果集导出为 CSV 文件。大多数 SQL 客户端都具有直接导出查询结果的内置功能。
- 准备上传:确保导出的 CSV 文件以 UTF-8 编码保存。验证文件中的列标题是否与要求的属性名称完全匹配,不含任何多余的空格或字符。
配置
- Database Connection: 需要直接连接数据库。您必须提供服务器地址、数据库名称、有效的用户名和密码。强烈建议使用只读用户,以防止意外的数据修改。
- Date Range Filtering: 查询使用
@StartDate和@EndDate占位符来控制提取周期。对于初步分析,建议选择 3 到 6 个月的时间范围,以便在不造成数据库过载的情况下捕获足够的流程变体。 - Warehouse and Order Filtering: 脚本包含
@[WarehouseId]占位符,用于将提取限制在特定设施。您可以在脚本的WHERE子句中添加其他过滤器(如订单类型或客户),以进一步细化 data 集。 - Data Granularity: 此脚本在订单抬头层级(例如“仓库订单已创建”)和详细的任务或事务层级(例如“货物已拣选”)提取 event。
- Prerequisites: 您必须拥有足够的数据库权限,才能读取查询中引用的所有数据表。您需要熟悉特定的 Körber WMS 架构,以验证并根据需要调整数据表和列名。
a 查询示例 sql
DECLARE @StartDate DATETIME = '2023-01-01';
DECLARE @EndDate DATETIME = '2023-12-31';
DECLARE @WarehouseId NVARCHAR(10) = '[Your Warehouse ID]';
-- 1. Warehouse Order Created
SELECT
ord.ORD_NBR AS WarehouseOrder,
'Warehouse Order Created' AS ActivityName,
ord.CREATE_DATE AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
ord.CREATE_USER AS UserOperatorId,
ord.PRIORITY AS PriorityLevel,
NULL AS ProductSKU,
NULL AS ActualQuantity
FROM [ORD_HDR] ord
WHERE ord.CREATE_DATE BETWEEN @StartDate AND @EndDate AND ord.WH_ID = @WarehouseId
UNION ALL
-- 2. Inbound Delivery Notification Rcvd
SELECT
asn.ASN_NBR AS WarehouseOrder,
'Inbound Delivery Notification Rcvd' AS ActivityName,
asn.CREATE_DATE AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
asn.CREATE_USER AS UserOperatorId,
asn.PRIORITY AS PriorityLevel,
NULL AS ProductSKU,
NULL AS ActualQuantity
FROM [ASN_HDR] asn
WHERE asn.CREATE_DATE BETWEEN @StartDate AND @EndDate AND asn.WH_ID = @WarehouseId
UNION ALL
-- 3. Goods Arrived at Dock
SELECT
asn.ASN_NBR AS WarehouseOrder,
'Goods Arrived at Dock' AS ActivityName,
asn.ACTUAL_ARRIVAL_TSTMP AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
asn.MOD_USER AS UserOperatorId,
asn.PRIORITY AS PriorityLevel,
NULL AS ProductSKU,
NULL AS ActualQuantity
FROM [ASN_HDR] asn
WHERE asn.ACTUAL_ARRIVAL_TSTMP IS NOT NULL AND asn.ACTUAL_ARRIVAL_TSTMP BETWEEN @StartDate AND @EndDate AND asn.WH_ID = @WarehouseId
UNION ALL
-- 4. Goods Received and Counted
SELECT
tran.ORD_NBR AS WarehouseOrder,
'Goods Received and Counted' AS ActivityName,
tran.TRAN_TSTMP AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
tran.USER_ID AS UserOperatorId,
NULL AS PriorityLevel,
tran.SKU AS ProductSKU,
tran.TRAN_QTY AS ActualQuantity
FROM [INV_TRAN] tran
WHERE tran.TRAN_TYPE = 'RECV' AND tran.TRAN_TSTMP BETWEEN @StartDate AND @EndDate AND tran.WH_ID = @WarehouseId
UNION ALL
-- 5. Quality Inspection Performed
SELECT
tran.ORD_NBR AS WarehouseOrder,
'Quality Inspection Performed' AS ActivityName,
tran.TRAN_TSTMP AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
tran.USER_ID AS UserOperatorId,
NULL AS PriorityLevel,
tran.SKU AS ProductSKU,
tran.TRAN_QTY AS ActualQuantity
FROM [INV_TRAN] tran
WHERE tran.TRAN_TYPE = 'MOVE' AND tran.REASON_CODE = 'QI_INSP' AND tran.TRAN_TSTMP BETWEEN @StartDate AND @EndDate AND tran.WH_ID = @WarehouseId
UNION ALL
-- 6. Putaway Task Created
SELECT
tsk.ORD_NBR AS WarehouseOrder,
'Putaway Task Created' AS ActivityName,
tsk.CREATE_DATE AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
tsk.CREATE_USER AS UserOperatorId,
tsk.PRIORITY AS PriorityLevel,
tsk.SKU AS ProductSKU,
tsk.TASK_QTY AS ActualQuantity
FROM [TASK_DTL] tsk
WHERE tsk.TASK_TYPE = 'PUTAWAY' AND tsk.CREATE_DATE BETWEEN @StartDate AND @EndDate AND tsk.WH_ID = @WarehouseId
UNION ALL
-- 7. Goods Put Away in Storage
SELECT
tsk.ORD_NBR AS WarehouseOrder,
'Goods Put Away in Storage' AS ActivityName,
tsk.CMPL_TSTMP AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
tsk.USER_ID AS UserOperatorId,
tsk.PRIORITY AS PriorityLevel,
tsk.SKU AS ProductSKU,
tsk.CMPL_QTY AS ActualQuantity
FROM [TASK_DTL] tsk
WHERE tsk.TASK_TYPE = 'PUTAWAY' AND tsk.STAT_CODE = 'COMPLETED' AND tsk.CMPL_TSTMP IS NOT NULL AND tsk.CMPL_TSTMP BETWEEN @StartDate AND @EndDate AND tsk.WH_ID = @WarehouseId
UNION ALL
-- 8. Picking Task Created
SELECT
tsk.ORD_NBR AS WarehouseOrder,
'Picking Task Created' AS ActivityName,
tsk.CREATE_DATE AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
tsk.CREATE_USER AS UserOperatorId,
tsk.PRIORITY AS PriorityLevel,
tsk.SKU AS ProductSKU,
tsk.TASK_QTY AS ActualQuantity
FROM [TASK_DTL] tsk
WHERE tsk.TASK_TYPE = 'PICK' AND tsk.CREATE_DATE BETWEEN @StartDate AND @EndDate AND tsk.WH_ID = @WarehouseId
UNION ALL
-- 9. Goods Picked from Storage
SELECT
tsk.ORD_NBR AS WarehouseOrder,
'Goods Picked from Storage' AS ActivityName,
tsk.CMPL_TSTMP AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
tsk.USER_ID AS UserOperatorId,
tsk.PRIORITY AS PriorityLevel,
tsk.SKU AS ProductSKU,
tsk.CMPL_QTY AS ActualQuantity
FROM [TASK_DTL] tsk
WHERE tsk.TASK_TYPE = 'PICK' AND tsk.STAT_CODE = 'COMPLETED' AND tsk.CMPL_TSTMP IS NOT NULL AND tsk.CMPL_TSTMP BETWEEN @StartDate AND @EndDate AND tsk.WH_ID = @WarehouseId
UNION ALL
-- 10. Packing Initiated
SELECT
pck.ORD_NBR AS WarehouseOrder,
'Packing Initiated' AS ActivityName,
MIN(pck.CREATE_DATE) AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
MIN(pck.USER_ID) AS UserOperatorId,
NULL AS PriorityLevel,
NULL AS ProductSKU,
NULL AS ActualQuantity
FROM [PACK_TRAN] pck
WHERE pck.CREATE_DATE BETWEEN @StartDate AND @EndDate AND pck.WH_ID = @WarehouseId
GROUP BY pck.ORD_NBR
UNION ALL
-- 11. Goods Packed
SELECT
ctn.ORD_NBR AS WarehouseOrder,
'Goods Packed' AS ActivityName,
ctn.PACK_CMPL_TSTMP AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
ctn.PACKER_ID AS UserOperatorId,
NULL AS PriorityLevel,
NULL AS ProductSKU,
NULL AS ActualQuantity
FROM [SHIP_CARTON] ctn
WHERE ctn.PACK_CMPL_TSTMP IS NOT NULL AND ctn.PACK_CMPL_TSTMP BETWEEN @StartDate AND @EndDate AND ctn.WH_ID = @WarehouseId
UNION ALL
-- 12. Staged for Shipment
SELECT
tran.ORD_NBR AS WarehouseOrder,
'Staged for Shipment' AS ActivityName,
tran.TRAN_TSTMP AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
tran.USER_ID AS UserOperatorId,
NULL AS PriorityLevel,
tran.SKU AS ProductSKU,
tran.TRAN_QTY AS ActualQuantity
FROM [INV_TRAN] tran
JOIN [LOC_HDR] loc ON tran.TO_LOC = loc.LOC_ID AND tran.WH_ID = loc.WH_ID
WHERE tran.TRAN_TYPE = 'MOVE' AND loc.LOC_TYPE = 'SHIP_STAGE' AND tran.TRAN_TSTMP BETWEEN @StartDate AND @EndDate AND tran.WH_ID = @WarehouseId
UNION ALL
-- 13. Shipment Dispatched
SELECT
shp.ORD_NBR AS WarehouseOrder,
'Shipment Dispatched' AS ActivityName,
shp.SHIP_CONFIRM_TSTMP AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
shp.USER_ID AS UserOperatorId,
NULL AS PriorityLevel,
NULL AS ProductSKU,
NULL AS ActualQuantity
FROM [SHIPMENT_HDR] shp
WHERE shp.SHIP_CONFIRM_TSTMP IS NOT NULL AND shp.SHIP_CONFIRM_TSTMP BETWEEN @StartDate AND @EndDate AND shp.WH_ID = @WarehouseId
UNION ALL
-- 14. Warehouse Order Completed
SELECT
ord.ORD_NBR AS WarehouseOrder,
'Warehouse Order Completed' AS ActivityName,
ord.MOD_DATE AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
ord.MOD_USER AS UserOperatorId,
ord.PRIORITY AS PriorityLevel,
NULL AS ProductSKU,
NULL AS ActualQuantity
FROM [ORD_HDR] ord
WHERE ord.STAT_CODE IN ('99', 'COMPLETED') AND ord.MOD_DATE BETWEEN @StartDate AND @EndDate AND ord.WH_ID = @WarehouseId
UNION ALL
-- 15. Warehouse Order Canceled
SELECT
ord.ORD_NBR AS WarehouseOrder,
'Warehouse Order Canceled' AS ActivityName,
ord.MOD_DATE AS EventTime,
'Körber WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate,
ord.MOD_USER AS UserOperatorId,
ord.PRIORITY AS PriorityLevel,
NULL AS ProductSKU,
NULL AS ActualQuantity
FROM [ORD_HDR] ord
WHERE ord.STAT_CODE IN ('95', 'CANCELED') AND ord.MOD_DATE BETWEEN @StartDate AND @EndDate AND ord.WH_ID = @WarehouseId;