库存预测所采用的输入文件格式


首页 » 资源 » 此处

2016 年 5 月更新:Envision 搭载了灵活的平面文件处理器,是现今一种很可取的向预测引擎传递数据的途径。我们最新一代的预测引擎提供了更丰富的功能和更高的准确度。

为了提供库存预测,Lokad 需要导入格式化为纯文本文件或 Excel 表的表格数据。这些表格应遵循 Lokad 的相关原则。文件应存储在 Lokad 帐户中。实际上,Lokad 支持多种第三方应用,由 Lokad 自动生成的数据文件直接从应用本身提取数据。但是,如果没有提供这样的内置支持,必须手动生成 Lokad 所要使用的文件。本文详细介绍了库存预测所采用的格式。


概述

为了生成报告,Lokad 要求至少提供两个表格文件
  • Lokad_Items 包含所要处理的 SKU/条码/基准项目/产品的列表。
  • Lokad_Orders 包含销售/订单/消耗列表,也即观测到的历史需求。

这两个文件应包含表格数据:第一行包含列标题,后续行包含实际数据。Lokad 支持大部分纯文本格式,例如 CSV(逗号分隔值)、TSV(制表符分隔值)乃至 Microsoft Excel 表——前提是 Excel 工作簿遵循简单的制表形式。Lokad 支持加载具有以下扩展名的文件:.tsv .csv .xlsx .xls .txt。此外还支持各种日期或数字格式。

另外也可以提供可选文件 Lokad_Parts,其中可以包含套件/捆绑包/物料清单/部件列表。另外一个可选文件是 Lokad_Settings,其中可以包含库存设置覆盖

在下文中,我们将详细介绍项目订单表的列名。大部分商业管理软件可以生成平面文件导出。但是,这些导出不太可能遵循 Lokad 的列命名模式。例如,订单数量在 Lokad 中命名为 Quantity,但在您的系统中可能就是 Qty。为了解决这一问题,可以使用 Envision 脚本对平面文件进行预处理,然后再执行所有必要的调整。

示例文件

下载示例文件

示例文件 Lokad_Items.tsv 的内容可能类似于:

Id	LabelName	ServiceLevel	LeadTime	StockOnHand	StockOnOrder	
1	Candy Canes 200g	0.95	3	181	80
2	Orange Stick Candy 100g	0.95	3	400	200
3	Lemon Saf-T-Pops 200g	0.95	3	222	200
4	Caramel Squares 500g	0.95	3	121	50
5	Orange Sweethearts 100g	0.9	7	1498	680

您可以如下文所述,在此文件中添加更多标签和标记列。

示例文件 Lokad_Orders.tsv 的内容可能类似于:

Id	Date	Quantity
1	2013-07-01	174
1	2013-07-02	96
1	2013-07-03	271
1	2013-07-04	335
1	2013-07-06	72

文件命名规则

Lokad 会根据与文件名相关的一组规则,来加载指定输入文件夹(从项目配置页面可以进行调整)中的文件。具体而言,Lokad 会尝试加载文件名以 Lokad_ItemsLokad_OrdersLokad_PartsLokad_Settings 开头的任何文件。然后,文件扩展名必须为支持的扩展名(.tsv.csv.txt.xlsx.xls)之一。另外,如果文件进行了 GZip 处理,那么文件扩展名也可以包含 .gz

平面文件遮罩

当文件由 Sync 等文件导入工具生成时,可能会存在需要覆盖特定文件内容的情形。手动编辑此工具生成的平面文件可能不太实际,因为文件下次刷新数据时可能会再次生成该文件,因而会覆盖最初对此文件进行的更改。因此,Lokad 提供了一种叫做文件遮罩的功能,这项功能精确提供了一种持续覆盖文件导入工具输出的途径。

基本文件名是指不带扩展名后缀的文件名(例如 Lokad_Items.tsv 的基本文件名是 Lokad_Items)。任何时候只要检测到的两个文件只有基本文件名不同,如果其中一个文件恰好为 Excel 文件,那么 Lokad 仅加载该 Excel 文件,另一个文件则予以忽略。该 Excel 表会遮罩其相应的平面文件。

提示:如果想遮罩指定的平面文件,请转至 Lokad 帐户中的文件选项卡,然后向下导航文件夹,单击所需的文件,并选择下载为 Excel 表。您可以修改该 Excel 表,前提是保留其表格格式。然后重新加载该 Excel 表到 Lokad,并将此文件放入同一个文件夹。现在修订后的 Excel 表便会遮罩原始平面文件了。

Lokad_Items 的字段

文件 Lokad_Items 包含所要预测的项目的列表。具体来说,如果要预测 3 个商店,每个商店有 1000 个基准项目,那么此文件应包含 3x1000=3000 行。

Lokad_Items
Id字符串 必填 项目标识符(需求历史记录将根据此标识符聚合)。每行应有一个唯一标识符。
LabelFoo字符串 可选 要在 Excel 报告中显示的属性。参见下文的标签字段
TagFoo字符串 可选 产品属性,预测引擎可使用此属性来改进预测准确度。参见下文的标记字段
TagLabelFoo字符串 可选 可同时作为标签标记的属性。
StockOnHand数值 可选 实际拥有的项目计数。如果 StockOnHandStockAvailable 均未提供,则不能计算优化的再订货数量。尽管存在 StockAvailable 时此字段大多被忽略(参见下文),但在实际上,仍有必要包含此字段,因为此数量是唯一能根据在售的"实际"库存数量进行核对的数量。
StockAvailable数值 可选 做好供应准备的项目的计数。与 StockOnHand 不同,此数量考虑了已售出但尚未拣货的单位,因此这些项目不可再用于供应。如果 StockOnHandStockAvailable 均未提供,则无法计算优化的再订货数量。
StockOnOrder数值 可选 已进行再订货但尚未供货的项目的计数。
LeadTime整数 可选 库存需要覆盖的数。另请参阅交付周期指南。如果不提供此值,则无法计算分位数预测和分位数网格。
LeadTime2整数 可选 仅适用于计算分位数网格。用于表示备选的交付周期(具有备选的分位数网格)。如果存在此字段,Lokad_Grid 输出文件中会增加一个叫做 Probability2 的字段。
LeadTime3整数 可选 LeadTime2 相同。同上,但输出中会包含 Probability3 字段。
ServiceLevel数值 可选 不发生缺货的预期概率。此值应介于 0 和 1 之间(包括 1)。另请参阅服务水平指南。进行分位数预测时必须提供此值,但进行分位数网格时无此要求,后一种情况类似于同时对所有可能的服务水平执行分位数预测。
LotMultiplier整数 可选 该字段用于反映再订货时对批次大小的潜在约束。只有在进行分位数预测时方需使用该字段。它指示了要应用于 Lokad 所建议的订货数量的四舍五入的倍数。如忽略此字段,则其默认值为 1。示例:如果 LotMultiplier=10,Lokad 会建议只按照 10 的倍数进行再订货,例如 10、20、30 等等。

作为标签标记处理的字段列表现在可以在预测项目的配置页面进行定义。因此,不再要求为字段添加 TagLabel 前缀,并且可以从 Lokad 用户界面进行操作。

标签字段

任何以标记 Label 作为前缀的字段将在 Lokad 生成的 Excel 报告中作为额外的列插入。举个例子,如果 TSV 文件中包含一个叫做 LabelProductName 的字段,表明报告中有一列的名称 ProductName(名称中去除了 Label 前缀)。

这种约定便于添加任意的额外字段组来用于报告用途。这些字段通常包括但不限于:供应商、品牌、ISBN 等。这些字段仅用于显示,并不影响预测操作本身。

标记字段

任何以标记 Tag 为前缀的字段,其作用都是帮助 Lokad 改进预测准确度。标记的常见示例有系列、子系列、颜色、尺寸、品牌等等。标记字段值可以为空:不必为每个项目都提供标记值。

如果想将标记标签的行为结合为一个字段,需要为列添加前缀 TagLabel

Lokad_Orders 的字段

文件 Lokad_Orders 包含过去消耗库存的所有客户订单的列表。为获得最高准确度,建议提供每日聚合的历史记录(非每周或每月)。如果有相应的数据,建议的历史记录的深度为 3 至 5 年。

Lokad_Orders
Id字符串 必填 匹配 Lokad_Items 文件的 Id 字段(外键)。
Date日期时间 必填 与订单数量相关的日期。
Quantity数值 必填 所订购项目的数量。

Lokad_Parts 的字段

有时,库存输入(收到的商品)的粒度与库存输出(供应的商品)的粒度并不完全匹配。当存在套件、捆绑包、组装部件时,或者是根据物料清单生产商品时,便会发生此类情况。

举个例子,在销售套件时,Lokad_Orders 中没有记录相应的行。但是,由于库存优化是在套件级别进行,而不是在部件级别进行,因此 Lokad_Orders 中的套件行必须替换为多个构成该套件的部件的行。

Lokad_Parts 文件为可选文件。

Lokad_Parts
Bundle字符串 必填 从库存优化角度要替换为部件的目标项目。匹配 Lokad_Items 文件的 Id 字段(外键)。
Part字符串 必填 捆绑包的部件之一。匹配 Lokad_Items 文件的 Id 字段(外键)。
Quantity数值 可选 捆绑包中包含的部件数目。如果此字段被忽略,则其值为 1。

Lokad 不支持递归捆绑包,即捆绑包的捆绑包情形。请注意,如果发现循环依赖性,Lokad 将无法导入数据。

Lokad_Settings 的字段

文件 Lokad_Settings 主要用于 Lokad 本身通过内置的某种整合应用生成 Lokad_Items 文件的情形。在这种情形下,文件 Lokad_Settings 可以用于覆盖和/或完成通过 Sync 获取的数据。实际上,如果您从一开始就对生成 Lokad_Items 的逻辑进行了控制,那么很少需要使用该文件。但是,为保证完整性,我们还是会在下面介绍 Lokad_Settings

Lokad_Settings 文件为可选文件。

Lokad_Settings
Id字符串 必填 将覆盖其库存设置的目标项目。匹配 Lokad_Items 文件的 Id 字段(外键)。
ServiceLevel数值 可选 介于 0 和 1(包括在内)之间的一个浮点数,用于表示不发生缺货的预期概率。如果此字段留空,将保留初始项目值。
LeadTime整数 可选 用于表示持续时间的天数(整数),适用于计算需求预测。如果此字段留空,将保留初始项目值。
LotMultiplier整数 可选 用于表示再订货数量的相应倍数(整数)。如果此字段留空,将保留初始项目值。

重命名列

标题必须与上述列名相匹配。不匹配任何列名的标题会被忽略。如果文件包含正确的标题但这些标题具有不同的名称,可以让 Lokad 重命名。要执行此操作,需要构建 Envision 脚本

处理大型文件

在处理大型文件时,可以压缩此类文件,和/或将其分割成多个文件。这一点适用于 Lokad_ItemsLokad_Orders

压缩

为节约磁盘空间和提高传输速度,可以有选择地将文件逐一压缩成存档。在这种情况下:

  • 每个存档只能包含 1 个文件。
  • 必须采用 Deflate 压缩(例如使用 GZIP 工具)。
  • 存档名称应以 .gz 结尾(例如:Lokad_Orders.tsv.gz)。

分割

对于超大型文件(压缩后仍超过 100MB),我们还建议将其分割成多个更小的独立文件。这些分割文件既可以进行增量数据上载,也更易于在上载和下载时进行并行处理。推送到 Lokad 的平面文件名来自于 4 个不同部分,以 Lokad_Orders_20150131.tsv 为例:

  1. Lokad:前缀部分,用于指示文件遵循 Lokad 格式原则。
  2. Orders:中间部分,用于指示数据类型,支持的数据类型有 ItemsOrdersParts
  3. 20150131:可选的任意后缀,用于指示文件分割用途。
  4. tsv:平面文件格式扩展名,支持 tsvcsv

Lokad 将结合所有仅后缀不同的文件;也即 Lokad 会将所有这些文件视为一个文件进行合并。当然,为了让结合顺利进行,所有文件应具有相同的标题。在上例中,我们使用了紧凑型日期来作为后缀,但也可以将任何字母数字字符串作为后缀。

此外也可以结合对压缩文件进行分割的文件。举个例子,Lokad_Orders_20150129.tsv.gzLokad_Orders_20150130.tsv.gzLokad_Orders_20150131.tsv.gz 等一系列文件可以表示对订单数据进行每日递增压缩。

建议使用 TSV 格式

Lokad 支持各种各样的表格格式,例如 TSV、CS 乃至 Microsoft Excel,前提是这些数据要严格遵循表格格式。Lokad 的设计决定了能够支持各种日期和数字格式,因此在这些方面您大可放心。不过,如果您是软件开发人员,那么我们建议您遵循下面的原则。的确,Lokad 可能会成功解析各种格式,但如果您遵循这些原则,那么肯定能成功解析。

Lokad 建议的格式为 TSV(制表符分隔值)。尽管 TSV 格式比较老旧,但对于处理大型数据集的效果出奇的好。TSV 格式的定义如下:
  • 其中包含 UTF8 编码的行的文本文件。
  • 每行包含通过 TAB 字符(横表、HT、ASCII 控制码 9)彼此分隔的字段。
  • 每个行回车采用 \n(换行,控制码 10)或 \r\n(控制码 13,回车,然后换行)进行编码。
  • 此处的字段仅指 TAB 以外的字符组成的任意字符串。实际上,每个 TAB 可将行分成不同的字段值。
  • 每行必须包含相同的字段名称。
  • 第一行包含字段名称(所有行),也即列标题。

由于 TAB 用作字段之间的分隔符,因此字段中不能包含 TAB。但是,TAB 通常不会出现在要制表的数据项目中,因此这一点很少成为限制。否则,我们建议在导出时剔除这些字符,用 4 个空格字符予以替代。
有关更详细的说明(以及从 Excel 导出的说明),请参阅制表符分隔值 (TSV):一种用于表格数据交换的格式

数字和日期

浮点数必须使用 .(点)作为小数分隔符。不允许使用其他数字分隔符。

  • 正确:1234.00
  • 正确:-12
  • ‘‘‘错误’’’:1234,12
  • ‘‘‘错误’’’:1.123,12
  • ‘‘‘错误’’’:1,123.12

日期格式应为 yyyy-MM-dd,其中:

  • yyyy - 4 位数的年份
  • MM - 2 位数的月份
  • dd – 2 位数的日期

例如:

  • 正确:2012-09-18
  • ‘‘‘错误’’’:2012-9-18
  • ‘‘‘错误’’’:9-18-2012
  • ‘‘‘错误’’’:18-9-2012