SSIS 从另一个表查找价格

问题描述 投票:0回答:1

我正在使用 SSIS 从 Etsy 导入订单数据,我尝试填充的字段之一是运费。我有一张表,其中包含每个目的地地区的运费、包裹尺寸、服务和重量。

传入的行包含目的地、包裹尺寸、重量和服务,但我需要查找它应该使用的价格。我已经查看了查找组件,但这需要精确匹配,因此重量为 80 克的包裹无法获得价格。

价格表的示例如下。有没有更好的组件可以实现这一目标?

目的地地区 服务 包裹尺寸 最大重量 价格
国标 标准 大字 100 1.15
国标 一级 大字 100 1.60
国标 已追踪 48 大字 100 2.70
国标 追踪 24 大字 100 3.30
国标 标准 大字 250 1.85
国标 一级 大字 250 2.25

谢谢

sql sql-server ssis
1个回答
0
投票

一些方法

要使用需要 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]

© www.soinside.com 2019 - 2024. All rights reserved.