我正在使用 SSIS 从 Etsy 导入订单数据,我尝试填充的字段之一是运费。我有一张表,其中包含每个目的地地区的运费、包裹尺寸、服务和重量。
传入的行包含目的地、包裹尺寸、重量和服务,但我需要查找它应该使用的价格。我已经查看了查找组件,但这需要精确匹配,因此重量为 80 克的包裹无法获得价格。
价格表的示例如下。有没有更好的组件可以实现这一目标?
目的地地区 | 服务 | 包裹尺寸 | 最大重量 | 价格 |
---|---|---|---|---|
国标 | 标准 | 大字 | 100 | 1.15 |
国标 | 一级 | 大字 | 100 | 1.60 |
国标 | 已追踪 48 | 大字 | 100 | 2.70 |
国标 | 追踪 24 | 大字 | 100 | 3.30 |
国标 | 标准 | 大字 | 250 | 1.85 |
国标 | 一级 | 大字 | 250 | 2.25 |
谢谢
一些方法
要使用需要 1:1 映射的查找组件,您无需选择表格的下拉列表。相反,生成一个查询,为每个可能的权重值返回一行,这样
GB/Standard/Large Letter/1/1.15
...
GB/Standard/Large Letter/50/1.15
...
GB/Standard/Large Letter/100/1.15
这是一个非常容易编写的查询,只需使用数字表/GENERATE_SERIES 来分解源行
您也可以使用查找组件实现范围查找。将您的源权重映射到
MaxWeight
列。然后单击返回“常规”选项卡,并将“缓存模式”从“完全”更改为 Partial
或 None
然后转到“高级”选项卡并选中“修改 SQL 语句”按钮。
它可能看起来像这样
select * from (SELECT * FROM dbo.shippingCosts) [refTable]
where [refTable].[MaxWeight] = ?
做类似的事情
select * from (SELECT * FROM dbo.shippingCosts) [refTable]
where ? between 0 and [refTable].[MaxWeight]